| 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 672f033c4a0c375a0e96b732c661a4daa0d39b72..079deed6bda61c3ce4e6fef24f9db9256dbd9585 100644
|
| --- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
|
| +++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
|
| @@ -257,6 +257,40 @@ 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:
|
| @@ -699,6 +733,7 @@ class WebViewTest : public extensions::PlatformAppBrowserTest {
|
| ASSERT_TRUE(test_run_listener.WaitUntilSatisfied());
|
| }
|
|
|
| + // Loads an app with a <webview> in it, returns once a guest is created.
|
| void LoadAppWithGuest(const std::string& app_path) {
|
| ExtensionTestMessageListener launched_listener("WebViewTest.LAUNCHED",
|
| false);
|
| @@ -2323,6 +2358,28 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, ClearData) {
|
| << message_;
|
| }
|
|
|
| +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());
|
| +}
|
| +
|
| // This test is disabled on Win due to being flaky. http://crbug.com/294592
|
| #if defined(OS_WIN)
|
| #define MAYBE_ConsoleMessage DISABLED_ConsoleMessage
|
|
|