Index: chrome/browser/apps/guest_view/web_view_browsertest.cc |
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc |
index 4eb7744e52677a45c6bdfb64e03f1295cb863416..44cc3aecd66d835eca35e737b98ebe925d397f9c 100644 |
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc |
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc |
@@ -89,6 +89,7 @@ namespace { |
const char kEmptyResponsePath[] = "/close-socket"; |
const char kRedirectResponsePath[] = "/server-redirect"; |
const char kUserAgentRedirectResponsePath[] = "/detect-user-agent"; |
+const char kCacheResponsePath[] = "/cache-control-response"; |
const char kRedirectResponseFullPath[] = |
"/extensions/platform_apps/web_view/shim/guest_redirect.html"; |
@@ -256,40 +257,6 @@ class MockWebContentsDelegate : public content::WebContentsDelegate { |
DISALLOW_COPY_AND_ASSIGN(MockWebContentsDelegate); |
}; |
-class MockWebViewGuestDelegate : public extensions::WebViewGuestDelegate { |
- public: |
- explicit MockWebViewGuestDelegate(extensions::WebViewGuest* web_view_guest) |
- : web_view_guest_(web_view_guest), clear_cache_called_(false) {} |
- ~MockWebViewGuestDelegate() override {} |
- |
- // WebViewGuestDelegate implementation. |
- void ClearCache(base::Time remove_since, |
- const base::Closure& callback) override { |
- clear_cache_called_ = true; |
- base::MessageLoop::current()->PostTask(FROM_HERE, callback); |
- } |
- bool HandleContextMenu(const content::ContextMenuParams& params) override { |
- return false; |
- } |
- void OnAttachWebViewHelpers(content::WebContents* contents) override {} |
- void OnDidCommitProvisionalLoadForFrame(bool is_main_frame) override {} |
- void OnDidInitialize() override {} |
- void OnDocumentLoadedInFrame( |
- content::RenderFrameHost* render_frame_host) override {} |
- void OnGuestDestroyed() override {} |
- void OnShowContextMenu( |
- int request_id, |
- const WebViewGuestDelegate::MenuItemVector* items) override {} |
- |
- bool clear_cache_called() { return clear_cache_called_; } |
- |
- private: |
- extensions::WebViewGuest* web_view_guest_; |
- bool clear_cache_called_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MockWebViewGuestDelegate); |
-}; |
- |
// This class intercepts download request from the guest. |
class MockDownloadWebContentsDelegate : public content::WebContentsDelegate { |
public: |
@@ -608,14 +575,27 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
static scoped_ptr<net::test_server::HttpResponse> EmptyResponseHandler( |
const std::string& path, |
const net::test_server::HttpRequest& request) { |
- if (StartsWithASCII(path, request.relative_url, true)) { |
- return scoped_ptr<net::test_server::HttpResponse>( |
- new EmptyHttpResponse); |
- } |
+ if (StartsWithASCII(path, request.relative_url, true)) |
+ return scoped_ptr<net::test_server::HttpResponse>(new EmptyHttpResponse); |
return scoped_ptr<net::test_server::HttpResponse>(); |
} |
+ // Handles |request| by serving cache-able response. |
+ static scoped_ptr<net::test_server::HttpResponse> CacheControlResponseHandler( |
+ const std::string& path, |
+ const net::test_server::HttpRequest& request) { |
+ if (!StartsWithASCII(path, request.relative_url, true)) |
+ return scoped_ptr<net::test_server::HttpResponse>(); |
+ |
+ scoped_ptr<net::test_server::BasicHttpResponse> http_response( |
+ new net::test_server::BasicHttpResponse); |
+ http_response->AddCustomHeader("Cache-control", "max-age=3600"); |
+ http_response->set_content_type("text/plain"); |
+ http_response->set_content("dummy text"); |
+ return http_response.Pass(); |
+ } |
+ |
// Shortcut to return the current MenuManager. |
extensions::MenuManager* menu_manager() { |
return extensions::MenuManager::Get(browser()->profile()); |
@@ -662,6 +642,9 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
&WebViewTest::UserAgentResponseHandler, |
kUserAgentRedirectResponsePath, |
embedded_test_server()->GetURL(kRedirectResponseFullPath))); |
+ |
+ embedded_test_server()->RegisterRequestHandler(base::Bind( |
+ &WebViewTest::CacheControlResponseHandler, kCacheResponsePath)); |
} |
LoadAndLaunchPlatformApp(app_location.c_str(), "Launched"); |
@@ -2434,25 +2417,7 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, ClearData) { |
} |
IN_PROC_BROWSER_TEST_F(WebViewTest, ClearDataCache) { |
- LoadAppWithGuest("web_view/clear_data_cache"); |
- content::WebContents* guest_web_contents = GetGuestWebContents(); |
- auto guest = extensions::WebViewGuest::FromWebContents(guest_web_contents); |
- ASSERT_TRUE(guest); |
- scoped_ptr<extensions::WebViewGuestDelegate> mock_web_view_guest_delegate( |
- new MockWebViewGuestDelegate(guest)); |
- scoped_ptr<extensions::WebViewGuestDelegate> orig_web_view_guest_delegate = |
- guest->SetDelegateForTesting(mock_web_view_guest_delegate.Pass()); |
- |
- ASSERT_TRUE(GetEmbedderWebContents()); |
- ExtensionTestMessageListener clear_data_done_listener( |
- "WebViewTest.CLEAR_DATA_DONE", false); |
- EXPECT_TRUE(content::ExecuteScript( |
- GetEmbedderWebContents(), base::StringPrintf("testClearDataCache()"))); |
- EXPECT_TRUE(clear_data_done_listener.WaitUntilSatisfied()); |
- |
- // Reset delegate back to original once we're done mocking. |
- mock_web_view_guest_delegate = |
- guest->SetDelegateForTesting(orig_web_view_guest_delegate.Pass()); |
+ TestHelper("testClearCache", "web_view/clear_data_cache", NEEDS_TEST_SERVER); |
} |
// This test is disabled on Win due to being flaky. http://crbug.com/294592 |