Index: chrome/browser/apps/web_view_browsertest.cc |
diff --git a/chrome/browser/apps/web_view_browsertest.cc b/chrome/browser/apps/web_view_browsertest.cc |
index f258b40ef7fa63f8ede106ff85e984e62b1691e0..86c48d95a8d80972ddcf57053e08efe7f59edd35 100644 |
--- a/chrome/browser/apps/web_view_browsertest.cc |
+++ b/chrome/browser/apps/web_view_browsertest.cc |
@@ -10,6 +10,8 @@ |
#include "chrome/browser/apps/app_browsertest_util.h" |
#include "chrome/browser/chrome_content_browser_client.h" |
#include "chrome/browser/extensions/extension_test_message_listener.h" |
+#include "chrome/browser/guest_view/guest_view_manager.h" |
+#include "chrome/browser/guest_view/guest_view_manager_factory.h" |
#include "chrome/browser/prerender/prerender_link_manager.h" |
#include "chrome/browser/prerender/prerender_link_manager_factory.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -92,10 +94,11 @@ class TestInterstitialPageDelegate : public content::InterstitialPageDelegate { |
virtual std::string GetHTMLContents() OVERRIDE { return std::string(); } |
}; |
-// Used to get notified when a guest is created. |
-class GuestContentBrowserClient : public chrome::ChromeContentBrowserClient { |
+class TestGuestViewManager : public GuestViewManager { |
public: |
- GuestContentBrowserClient() : web_contents_(NULL) {} |
+ explicit TestGuestViewManager(content::BrowserContext* context) : |
+ GuestViewManager(context), |
+ web_contents_(NULL) {} |
content::WebContents* WaitForGuestCreated() { |
if (web_contents_) |
@@ -107,13 +110,10 @@ class GuestContentBrowserClient : public chrome::ChromeContentBrowserClient { |
} |
private: |
- // ChromeContentBrowserClient implementation: |
- virtual void GuestWebContentsAttached( |
- content::WebContents* guest_web_contents, |
- content::WebContents* embedder_web_contents, |
- const base::DictionaryValue& extra_params) OVERRIDE { |
- ChromeContentBrowserClient::GuestWebContentsAttached( |
- guest_web_contents, embedder_web_contents, extra_params); |
+ // GuestViewManager override: |
+ virtual void AddGuest(int guest_instance_id, |
+ content::WebContents* guest_web_contents) OVERRIDE{ |
+ GuestViewManager::AddGuest(guest_instance_id, guest_web_contents); |
web_contents_ = guest_web_contents; |
if (message_loop_runner_) |
@@ -124,6 +124,32 @@ class GuestContentBrowserClient : public chrome::ChromeContentBrowserClient { |
scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
}; |
+// Test factory for creating test instances of GuestViewManager. |
+class TestGuestViewManagerFactory : public GuestViewManagerFactory { |
+ public: |
+ TestGuestViewManagerFactory() : |
+ test_guest_view_manager_(NULL) {} |
+ |
+ virtual ~TestGuestViewManagerFactory() {} |
+ |
+ virtual GuestViewManager* CreateGuestViewManager( |
+ content::BrowserContext* context) OVERRIDE { |
+ return GetManager(context); |
+ } |
+ |
+ TestGuestViewManager* GetManager(content::BrowserContext* context) { |
+ if (!test_guest_view_manager_) { |
+ test_guest_view_manager_ = new TestGuestViewManager(context); |
+ } |
+ return test_guest_view_manager_; |
+ } |
+ |
+ private: |
+ TestGuestViewManager* test_guest_view_manager_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestGuestViewManagerFactory); |
+}; |
+ |
class WebContentsHiddenObserver : public content::WebContentsObserver { |
public: |
WebContentsHiddenObserver(content::WebContents* web_contents, |
@@ -651,17 +677,13 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
} |
void LoadAppWithGuest(const std::string& app_path) { |
- GuestContentBrowserClient new_client; |
- content::ContentBrowserClient* old_client = |
- SetBrowserClientForTesting(&new_client); |
ExtensionTestMessageListener launched_listener("WebViewTest.LAUNCHED", |
false); |
launched_listener.set_failure_message("WebViewTest.FAILURE"); |
LoadAndLaunchPlatformApp(app_path.c_str(), &launched_listener); |
- guest_web_contents_ = new_client.WaitForGuestCreated(); |
- SetBrowserClientForTesting(old_client); |
+ guest_web_contents_ = GetGuestViewManager()->WaitForGuestCreated(); |
} |
void SendMessageToEmbedder(const std::string& message) { |
@@ -699,8 +721,13 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
return embedder_web_contents_; |
} |
+ TestGuestViewManager* GetGuestViewManager() { |
+ return factory_.GetManager(browser()->profile()); |
+ } |
+ |
WebViewTest() : guest_web_contents_(NULL), |
embedder_web_contents_(NULL) { |
+ GuestViewManager::set_factory_for_testing(&factory_); |
} |
private: |
@@ -716,6 +743,7 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
scoped_ptr<content::FakeSpeechRecognitionManager> |
fake_speech_recognition_manager_; |
+ TestGuestViewManagerFactory factory_; |
// Note that these are only set if you launch app using LoadAppWithGuest(). |
content::WebContents* guest_web_contents_; |
content::WebContents* embedder_web_contents_; |
@@ -1181,10 +1209,6 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_InterstitialTeardown) { |
LoadAndLaunchPlatformApp("web_view/interstitial_teardown", "EmbedderLoaded"); |
- GuestContentBrowserClient new_client; |
- content::ContentBrowserClient* old_client = |
- SetBrowserClientForTesting(&new_client); |
- |
// Now load the guest. |
content::WebContents* embedder_web_contents = GetFirstAppWindowWebContents(); |
ExtensionTestMessageListener second("GuestAddedToDom", false); |
@@ -1194,8 +1218,8 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_InterstitialTeardown) { |
ASSERT_TRUE(second.WaitUntilSatisfied()); |
// Wait for interstitial page to be shown in guest. |
- content::WebContents* guest_web_contents = new_client.WaitForGuestCreated(); |
- SetBrowserClientForTesting(old_client); |
+ content::WebContents* guest_web_contents = |
+ GetGuestViewManager()->WaitForGuestCreated(); |
ASSERT_TRUE(guest_web_contents->GetRenderProcessHost()->IsIsolatedGuest()); |
WaitForInterstitial(guest_web_contents); |