Chromium Code Reviews| Index: third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp |
| diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp |
| index 595f3b97acc8279cd8d947f1026bd0b63c9b2008..e65995e53f783e5733224ae568555cfcf7fae1bb 100644 |
| --- a/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp |
| +++ b/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp |
| @@ -33,6 +33,7 @@ |
| #include "core/fetch/FetchInitiatorInfo.h" |
| #include "core/fetch/FetchInitiatorTypeNames.h" |
| #include "core/fetch/FetchRequest.h" |
| +#include "core/fetch/FetchTestingPlatformSupport.h" |
| #include "core/fetch/MemoryCache.h" |
| #include "core/fetch/MockFetchContext.h" |
| #include "core/fetch/MockResource.h" |
| @@ -44,13 +45,17 @@ |
| #include "platform/heap/Handle.h" |
| #include "platform/heap/HeapAllocator.h" |
| #include "platform/heap/Member.h" |
| +#include "platform/network/ResourceError.h" |
| #include "platform/network/ResourceRequest.h" |
| #include "platform/network/ResourceTimingInfo.h" |
| #include "platform/scheduler/test/fake_web_task_runner.h" |
| +#include "platform/testing/TestingPlatformSupport.h" |
| #include "platform/testing/URLTestHelpers.h" |
| #include "platform/testing/weburl_loader_mock.h" |
| +#include "platform/testing/weburl_loader_mock_factory_impl.h" |
| #include "platform/weborigin/KURL.h" |
| #include "public/platform/Platform.h" |
| +#include "public/platform/WebURLLoader.h" |
| #include "public/platform/WebURLLoaderMockFactory.h" |
| #include "public/platform/WebURLResponse.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -67,7 +72,19 @@ constexpr char kTestResourceMimeType[] = "image/png"; |
| constexpr int kTestResourceSize = 103; // size of web/tests/data/white-1x1.png |
| } |
| -class ResourceFetcherTest : public ::testing::Test {}; |
| +class ResourceFetcherTest : public ::testing::Test { |
| + public: |
| + ResourceFetcherTest() = default; |
| + ~ResourceFetcherTest() override = default; |
| + |
| + protected: |
| + MockFetchContext* context() { return m_platform->context(); } |
| + |
| + ScopedTestingPlatformSupport<FetchTestingPlatformSupport> m_platform; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(ResourceFetcherTest); |
| +}; |
| TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) { |
| KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png"); |
| @@ -90,8 +107,7 @@ TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) { |
| } |
| TEST_F(ResourceFetcherTest, UseExistingResource) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| ResourceResponse response; |
| @@ -128,8 +144,7 @@ TEST_F(ResourceFetcherTest, Vary) { |
| resource->finish(); |
| ASSERT_TRUE(resource->hasVaryHeader()); |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| ResourceRequest resourceRequest(url); |
| resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| FetchRequest fetchRequest = |
| @@ -151,8 +166,7 @@ TEST_F(ResourceFetcherTest, NavigationTimingInfo) { |
| response.setURL(url); |
| response.setHTTPStatusCode(200); |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| ResourceRequest resourceRequest(url); |
| resourceRequest.setFrameType(WebURLRequest::FrameTypeNested); |
| resourceRequest.setRequestContext(WebURLRequest::RequestContextForm); |
| @@ -186,10 +200,8 @@ TEST_F(ResourceFetcherTest, NavigationTimingInfo) { |
| } |
| TEST_F(ResourceFetcherTest, VaryOnBack) { |
| - MockFetchContext* context = |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource); |
| - context->setCachePolicy(CachePolicyHistoryBuffer); |
| - ResourceFetcher* fetcher = ResourceFetcher::create(context); |
| + context()->setCachePolicy(CachePolicyHistoryBuffer); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| Resource* resource = RawResource::create(url, Resource::Raw); |
| @@ -214,8 +226,7 @@ TEST_F(ResourceFetcherTest, VaryOnBack) { |
| } |
| TEST_F(ResourceFetcherTest, VaryResource) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| ResourceResponse response; |
| @@ -285,8 +296,7 @@ TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { |
| URLTestHelpers::registerMockedURLLoadWithCustomResponse( |
| url, kTestResourceFilename, WebString::fromUTF8(""), |
| WrappedResourceResponse(response)); |
| - ResourceFetcher* fetcher1 = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher1 = ResourceFetcher::create(context()); |
| ResourceRequest request1(url); |
| request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); |
| FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); |
| @@ -302,8 +312,7 @@ TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { |
| } |
| TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo")); |
| request.setRequestContext(WebURLRequest::RequestContextVideo); |
| ResourceLoaderOptions options; |
| @@ -368,8 +377,7 @@ TEST_F(ResourceFetcherTest, ResponseOnCancel) { |
| URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, |
| kTestResourceMimeType); |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| ResourceRequest resourceRequest(url); |
| resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| FetchRequest fetchRequest = |
| @@ -388,7 +396,7 @@ class ScopedMockRedirectRequester { |
| WTF_MAKE_NONCOPYABLE(ScopedMockRedirectRequester); |
| public: |
| - ScopedMockRedirectRequester() : m_context(nullptr) {} |
| + ScopedMockRedirectRequester(MockFetchContext* context) : m_context(context) {} |
| ~ScopedMockRedirectRequester() { cleanUp(); } |
| @@ -409,9 +417,6 @@ class ScopedMockRedirectRequester { |
| } |
| void request(const WebString& url) { |
| - DCHECK(!m_context); |
| - m_context = |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource); |
| ResourceFetcher* fetcher = ResourceFetcher::create(m_context); |
| ResourceRequest resourceRequest(url); |
| resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| @@ -426,8 +431,6 @@ class ScopedMockRedirectRequester { |
| memoryCache()->evictResources(); |
| } |
| - MockFetchContext* context() const { return m_context; } |
| - |
| private: |
| Member<MockFetchContext> m_context; |
| }; |
| @@ -435,24 +438,24 @@ class ScopedMockRedirectRequester { |
| TEST_F(ResourceFetcherTest, SameOriginRedirect) { |
| const char redirectURL[] = "http://127.0.0.1:8000/redirect.html"; |
| const char finalURL[] = "http://127.0.0.1:8000/final.html"; |
| - ScopedMockRedirectRequester requester; |
| + ScopedMockRedirectRequester requester(context()); |
| requester.registerRedirect(redirectURL, finalURL); |
| requester.registerFinalResource(finalURL); |
| requester.request(redirectURL); |
| EXPECT_EQ(kRedirectResponseOverheadBytes + kTestResourceSize, |
| - requester.context()->getTransferSize()); |
| + context()->getTransferSize()); |
| } |
| TEST_F(ResourceFetcherTest, CrossOriginRedirect) { |
| const char redirectURL[] = "http://otherorigin.test/redirect.html"; |
| const char finalURL[] = "http://127.0.0.1:8000/final.html"; |
| - ScopedMockRedirectRequester requester; |
| + ScopedMockRedirectRequester requester(context()); |
| requester.registerRedirect(redirectURL, finalURL); |
| requester.registerFinalResource(finalURL); |
| requester.request(redirectURL); |
| - EXPECT_EQ(kTestResourceSize, requester.context()->getTransferSize()); |
| + EXPECT_EQ(kTestResourceSize, context()->getTransferSize()); |
| } |
| TEST_F(ResourceFetcherTest, ComplexCrossOriginRedirect) { |
| @@ -460,14 +463,14 @@ TEST_F(ResourceFetcherTest, ComplexCrossOriginRedirect) { |
| const char redirectURL2[] = "http://otherorigin.test/redirect2.html"; |
| const char redirectURL3[] = "http://127.0.0.1:8000/redirect3.html"; |
| const char finalURL[] = "http://127.0.0.1:8000/final.html"; |
| - ScopedMockRedirectRequester requester; |
| + ScopedMockRedirectRequester requester(context()); |
| requester.registerRedirect(redirectURL1, redirectURL2); |
| requester.registerRedirect(redirectURL2, redirectURL3); |
| requester.registerRedirect(redirectURL3, finalURL); |
| requester.registerFinalResource(finalURL); |
| requester.request(redirectURL1); |
| - EXPECT_EQ(kTestResourceSize, requester.context()->getTransferSize()); |
| + EXPECT_EQ(kTestResourceSize, context()->getTransferSize()); |
| } |
| TEST_F(ResourceFetcherTest, SynchronousRequest) { |
| @@ -475,8 +478,7 @@ TEST_F(ResourceFetcherTest, SynchronousRequest) { |
| URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, |
| kTestResourceMimeType); |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| ResourceRequest resourceRequest(url); |
| resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo()); |
| @@ -491,8 +493,7 @@ TEST_F(ResourceFetcherTest, SynchronousRequest) { |
| } |
| TEST_F(ResourceFetcherTest, PreloadResourceTwice) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, |
| @@ -516,8 +517,7 @@ TEST_F(ResourceFetcherTest, PreloadResourceTwice) { |
| } |
| TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, |
| @@ -553,13 +553,13 @@ TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { |
| Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); |
| EXPECT_TRUE(memoryCache()->contains(resource)); |
| EXPECT_FALSE(resource->isPreloaded()); |
| + |
| + memoryCache()->remove(resource); |
|
yhirano
2017/01/23 07:42:14
How about calling MemoryCache::evictResources in t
Takashi Toyoshima
2017/01/23 09:18:13
Aha. Sounds nice.
Since now we have an actual impl
|
| } |
| TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| - ResourceFetcher* fetcher2 = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| + ResourceFetcher* fetcher2 = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, |
| @@ -634,6 +634,8 @@ TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { |
| fetcher2->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); |
| EXPECT_TRUE(memoryCache()->contains(resource)); |
| EXPECT_FALSE(resource->isPreloaded()); |
| + |
| + memoryCache()->remove(resource); |
| } |
| TEST_F(ResourceFetcherTest, Revalidate304) { |
| @@ -647,8 +649,7 @@ TEST_F(ResourceFetcherTest, Revalidate304) { |
| resource->responseReceived(response, nullptr); |
| resource->finish(); |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| ResourceRequest resourceRequest(url); |
| resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); |
| FetchRequest fetchRequest = |
| @@ -663,10 +664,8 @@ TEST_F(ResourceFetcherTest, Revalidate304) { |
| } |
| TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { |
| - ResourceFetcher* fetcher = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| - ResourceFetcher* fetcher2 = ResourceFetcher::create( |
| - MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); |
| + ResourceFetcher* fetcher = ResourceFetcher::create(context()); |
| + ResourceFetcher* fetcher2 = ResourceFetcher::create(context()); |
| KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); |
| URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, |