TEST_F(ResourceFetcherTest, LinkPreloadImageAndUse) { ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); // Link preload preload scanner FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); fetchRequestOriginal.setLinkPreload(true); Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher); ASSERT_TRUE(resource); EXPECT_TRUE(resource->isLinkPreload()); Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); fetcher->preloadStarted(resource); // Image preload scanner FetchRequest fetchRequestPreloadScanner = FetchRequest(url, FetchInitiatorInfo()); Resource* imgPreloadScannerResource = ImageResource::fetch(fetchRequestPreloadScanner, fetcher); EXPECT_EQ(resource, imgPreloadScannerResource); EXPECT_FALSE(resource->isLinkPreload()); fetcher->preloadStarted(resource); // Image created by parser FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); Resource* newResource = ImageResource::fetch(fetchRequest, fetcher); Persistent<MockResourceClient> client = new MockResourceClient(newResource); EXPECT_EQ(resource, newResource); EXPECT_FALSE(resource->isLinkPreload()); // DCL reached fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); EXPECT_TRUE(memoryCache()->contains(resource)); EXPECT_FALSE(resource->isPreloaded()); }
TEST_F(ResourceFetcherTest, PreloadImageTwice) { ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher); ASSERT_TRUE(resource); Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); fetcher->preloadStarted(resource); FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); Resource* newResource = ImageResource::fetch(fetchRequest, fetcher); EXPECT_EQ(resource, newResource); fetcher->preloadStarted(resource); fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads); Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); EXPECT_FALSE(memoryCache()->contains(resource)); EXPECT_FALSE(resource->isPreloaded()); }