本文整理汇总了C++中ImageResource::response方法的典型用法代码示例。如果您正苦于以下问题:C++ ImageResource::response方法的具体用法?C++ ImageResource::response怎么用?C++ ImageResource::response使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ImageResource
的用法示例。
在下文中一共展示了ImageResource::response方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: notifyFinished
void HTMLImageLoader::notifyFinished(Resource*)
{
ImageResource* cachedImage = image();
RefPtr<Element> element = this->element();
ImageLoader::notifyFinished(cachedImage);
bool loadError = cachedImage->errorOccurred() || cachedImage->response().httpStatusCode() >= 400;
if (loadError && element->hasTagName(HTMLNames::objectTag))
toHTMLObjectElement(element)->renderFallbackContent();
}
示例2: writeImageToDataObject
static void writeImageToDataObject(DataObject* dataObject, Element* element, const KURL& url)
{
// Shove image data into a DataObject for use as a file
ImageResource* cachedImage = getImageResource(element);
if (!cachedImage || !cachedImage->imageForLayoutObject(element->layoutObject()) || !cachedImage->isLoaded())
return;
SharedBuffer* imageBuffer = cachedImage->imageForLayoutObject(element->layoutObject())->data();
if (!imageBuffer || !imageBuffer->size())
return;
String imageExtension = cachedImage->image()->filenameExtension();
ASSERT(!imageExtension.isEmpty());
// Determine the filename for the file contents of the image.
String filename = cachedImage->response().suggestedFilename();
if (filename.isEmpty())
filename = url.lastPathComponent();
String fileExtension;
if (filename.isEmpty()) {
filename = element->getAttribute(HTMLNames::altAttr);
} else {
// Strip any existing extension. Assume that alt text is usually not a filename.
int extensionIndex = filename.reverseFind('.');
if (extensionIndex != -1) {
fileExtension = filename.substring(extensionIndex + 1);
filename.truncate(extensionIndex);
}
}
if (!fileExtension.isEmpty() && fileExtension != imageExtension) {
String imageMimeType = MIMETypeRegistry::getMIMETypeForExtension(imageExtension);
ASSERT(imageMimeType.startsWith("image/"));
// Use the file extension only if it has imageMimeType: it's untrustworthy otherwise.
if (imageMimeType == MIMETypeRegistry::getMIMETypeForExtension(fileExtension))
imageExtension = fileExtension;
}
imageExtension = "." + imageExtension;
validateFilename(filename, imageExtension);
dataObject->addSharedBuffer(filename + imageExtension, imageBuffer);
}
示例3: notifyFinished
void HTMLImageLoader::notifyFinished(Resource*)
{
ImageResource* cachedImage = image();
RefPtrWillBeRawPtr<Element> element = this->element();
ImageLoader::notifyFinished(cachedImage);
bool loadError = cachedImage->errorOccurred();
if (isHTMLImageElement(*element)) {
if (loadError)
ensureFallbackContent();
else
toHTMLImageElement(element)->ensurePrimaryContent();
}
if (isHTMLInputElement(*element)) {
if (loadError)
ensureFallbackContent();
else
toHTMLInputElement(element)->ensurePrimaryContent();
}
if ((loadError || cachedImage->response().httpStatusCode() >= 400) && isHTMLObjectElement(*element))
toHTMLObjectElement(element)->renderFallbackContent();
}
示例4: testURL
TEST(ImageResourceTest, MultipartImage) {
ResourceFetcher* fetcher =
ResourceFetcher::create(ImageResourceTestMockFetchContext::create());
KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html");
ScopedRegisteredURL scopedRegisteredURL(testURL);
// Emulate starting a real load, but don't expect any "real"
// WebURLLoaderClient callbacks.
ImageResource* cachedImage = ImageResource::create(ResourceRequest(testURL));
cachedImage->setIdentifier(createUniqueIdentifier());
fetcher->startLoad(cachedImage);
Persistent<MockImageResourceClient> client =
new MockImageResourceClient(cachedImage);
EXPECT_EQ(Resource::Pending, cachedImage->getStatus());
// Send the multipart response. No image or data buffer is created. Note that
// the response must be routed through ResourceLoader to ensure the load is
// flagged as multipart.
ResourceResponse multipartResponse(KURL(), "multipart/x-mixed-replace", 0,
nullAtom, String());
multipartResponse.setMultipartBoundary("boundary", strlen("boundary"));
cachedImage->loader()->didReceiveResponse(
nullptr, WrappedResourceResponse(multipartResponse), nullptr);
EXPECT_FALSE(cachedImage->resourceBuffer());
EXPECT_FALSE(cachedImage->hasImage());
EXPECT_EQ(0, client->imageChangedCount());
EXPECT_FALSE(client->notifyFinishedCalled());
EXPECT_EQ("multipart/x-mixed-replace", cachedImage->response().mimeType());
const char firstPart[] =
"--boundary\n"
"Content-Type: image/svg+xml\n\n";
cachedImage->appendData(firstPart, strlen(firstPart));
// Send the response for the first real part. No image or data buffer is
// created.
EXPECT_FALSE(cachedImage->resourceBuffer());
EXPECT_FALSE(cachedImage->hasImage());
EXPECT_EQ(0, client->imageChangedCount());
EXPECT_FALSE(client->notifyFinishedCalled());
EXPECT_EQ("image/svg+xml", cachedImage->response().mimeType());
const char secondPart[] =
"<svg xmlns='http://www.w3.org/2000/svg' width='1' height='1'><rect "
"width='1' height='1' fill='green'/></svg>\n";
// The first bytes arrive. The data buffer is created, but no image is
// created.
cachedImage->appendData(secondPart, strlen(secondPart));
EXPECT_TRUE(cachedImage->resourceBuffer());
EXPECT_FALSE(cachedImage->hasImage());
EXPECT_EQ(0, client->imageChangedCount());
EXPECT_FALSE(client->notifyFinishedCalled());
// Add a client to check an assertion error doesn't happen
// (crbug.com/630983).
Persistent<MockImageResourceClient> client2 =
new MockImageResourceClient(cachedImage);
EXPECT_EQ(0, client2->imageChangedCount());
EXPECT_FALSE(client2->notifyFinishedCalled());
const char thirdPart[] = "--boundary";
cachedImage->appendData(thirdPart, strlen(thirdPart));
ASSERT_TRUE(cachedImage->resourceBuffer());
EXPECT_EQ(strlen(secondPart) - 1, cachedImage->resourceBuffer()->size());
// This part finishes. The image is created, callbacks are sent, and the data
// buffer is cleared.
cachedImage->loader()->didFinishLoading(nullptr, 0.0, 0);
EXPECT_TRUE(cachedImage->resourceBuffer());
EXPECT_FALSE(cachedImage->errorOccurred());
ASSERT_TRUE(cachedImage->hasImage());
EXPECT_FALSE(cachedImage->getImage()->isNull());
EXPECT_EQ(1, cachedImage->getImage()->width());
EXPECT_EQ(1, cachedImage->getImage()->height());
EXPECT_EQ(1, client->imageChangedCount());
EXPECT_TRUE(client->notifyFinishedCalled());
EXPECT_EQ(1, client2->imageChangedCount());
EXPECT_TRUE(client2->notifyFinishedCalled());
}