Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp

Issue 2390583002: [WIP] WebFonts cache-aware timeout adaption (Closed)
Patch Set: remove flag in finish() instead of responseReceived() Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 b3e7bd54f971fbf5d812bba2597586dc155d2ec9..840620250ddb4cd037a48cb5684ca8f8cc17f25b 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp
@@ -49,6 +49,7 @@
#include "platform/weborigin/KURL.h"
#include "public/platform/Platform.h"
#include "public/platform/WebTaskRunner.h"
+#include "public/platform/WebURLError.h"
#include "public/platform/WebURLLoaderMockFactory.h"
#include "public/platform/WebURLResponse.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -749,4 +750,86 @@ TEST_F(ResourceFetcherTest, Revalidate304) {
EXPECT_NE(resource, newResource);
}
+class CacheAwareResourceClient
+ : public GarbageCollectedFinalized<CacheAwareResourceClient>,
+ public RawResourceClient {
+ USING_GARBAGE_COLLECTED_MIXIN(CacheAwareResourceClient);
+
+ public:
+ CacheAwareResourceClient() : m_willReloadAfterDiskCacheMissCalled(false) {}
+
+ void setResource(Resource* resource) {
+ ASSERT_FALSE(m_resource);
+ m_resource = resource;
+ }
+
+ void willReloadAfterDiskCacheMiss(Resource* resource) override {
+ EXPECT_EQ(m_resource, resource);
+ m_willReloadAfterDiskCacheMissCalled = true;
+ }
+
+ bool willReloadAfterDiskCacheMissCalled() const {
+ return m_willReloadAfterDiskCacheMissCalled;
+ }
+
+ DEFINE_INLINE_TRACE() {
+ visitor->trace(m_resource);
+ RawResourceClient::trace(visitor);
+ }
+
+ String debugName() const override { return "CacheAwareResourceClient"; }
+
+ private:
+ Member<Resource> m_resource;
+ bool m_willReloadAfterDiskCacheMissCalled;
+};
+
+void runCacheAwareLoadingTest(CacheAwareResourceClient* client,
+ const WebURLError& error) {
+ ResourceFetcher* fetcher =
+ ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create());
+ KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
+ FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
+ fetchRequest.mutableResourceRequest().setIsCacheAwareLoadingEnabled(true);
+
+ ResourceResponse response;
+ response.setURL(url);
+ Platform::current()->getURLLoaderMockFactory()->registerErrorURL(
+ url, WrappedResourceResponse(response), error);
+
+ Resource* resource =
+ fetcher->requestResource(fetchRequest, TestResourceFactory());
+ ASSERT_TRUE(resource);
+ ASSERT_TRUE(resource->resourceRequest().isCacheAwareLoadingActivated());
+
+ client->setResource(resource);
+ resource->addClient(client);
+ Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
+ Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
+
+ resource->removeClient(client);
+ memoryCache()->remove(resource);
+}
+
+TEST_F(ResourceFetcherTest, CacheAwareLoading) {
+ Persistent<CacheAwareResourceClient> client = new CacheAwareResourceClient;
+ WebURLError error;
+ error.reason = -400; // ERR_CACHE_MISS
+ runCacheAwareLoadingTest(client, error);
+ EXPECT_TRUE(client->willReloadAfterDiskCacheMissCalled());
+}
+
+TEST_F(ResourceFetcherTest, CacheAwareLoadingFailByAccessCheck) {
+ Persistent<CacheAwareResourceClient> client = new CacheAwareResourceClient;
+ runCacheAwareLoadingTest(client,
+ ResourceError::cancelledDueToAccessCheckError(""));
+ EXPECT_FALSE(client->willReloadAfterDiskCacheMissCalled());
+}
+
+TEST_F(ResourceFetcherTest, CacheAwareLoadingFailByCancellation) {
+ Persistent<CacheAwareResourceClient> client = new CacheAwareResourceClient;
+ runCacheAwareLoadingTest(client, ResourceError::cancelledError(""));
+ EXPECT_FALSE(client->willReloadAfterDiskCacheMissCalled());
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698