Chromium Code Reviews| Index: chrome/browser/apps/web_view_interactive_browsertest.cc |
| diff --git a/chrome/browser/apps/web_view_interactive_browsertest.cc b/chrome/browser/apps/web_view_interactive_browsertest.cc |
| index 1708893fd5fa6a6ebbda8bd3ab56a1b8f0b61708..c1a8cc8c1cd4b66d5dfcb4283433e40d064ce311 100644 |
| --- a/chrome/browser/apps/web_view_interactive_browsertest.cc |
| +++ b/chrome/browser/apps/web_view_interactive_browsertest.cc |
| @@ -11,6 +11,8 @@ |
| #include "chrome/browser/chrome_content_browser_client.h" |
| #include "chrome/browser/extensions/extension_test_message_listener.h" |
| #include "chrome/browser/guest_view/guest_view_base.h" |
| +#include "chrome/browser/guest_view/guest_view_manager.h" |
| +#include "chrome/browser/guest_view/guest_view_manager_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.h" |
| #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h" |
| @@ -32,13 +34,74 @@ |
| using apps::AppWindow; |
| +class TestGuestViewManager : public GuestViewManager { |
| + public: |
| + explicit TestGuestViewManager(content::BrowserContext* context) : |
| + GuestViewManager(context), |
| + web_contents_(NULL) {} |
| + |
| + content::WebContents* WaitForGuestCreated() { |
| + if (web_contents_) |
| + return web_contents_; |
| + |
| + message_loop_runner_ = new content::MessageLoopRunner; |
| + message_loop_runner_->Run(); |
| + return web_contents_; |
| + } |
| + |
| + private: |
| + // 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_) |
| + message_loop_runner_->Quit(); |
| + } |
| + |
| + content::WebContents* web_contents_; |
| + 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); |
| +}; |
|
lazyboy
2014/06/13 17:40:01
nit: add \n
Fady Samuel
2014/06/16 14:35:40
Done.
|
| class WebViewInteractiveTest |
| : public extensions::PlatformAppBrowserTest { |
| public: |
| WebViewInteractiveTest() |
| : corner_(gfx::Point()), |
| mouse_click_result_(false), |
| - first_click_(true) {} |
| + first_click_(true) { |
| + GuestViewManager::set_factory_for_testing(&factory_); |
| + } |
| + |
| + TestGuestViewManager* GetGuestViewManager() { |
| + return factory_.GetManager(browser()->profile()); |
| + } |
| void MoveMouseInsideWindowWithListener(gfx::Point point, |
| const std::string& message) { |
| @@ -412,6 +475,7 @@ class WebViewInteractiveTest |
| } |
| protected: |
| + TestGuestViewManagerFactory factory_; |
| content::WebContents* guest_web_contents_; |
| content::WebContents* embedder_web_contents_; |
| gfx::Point corner_; |
| @@ -422,38 +486,6 @@ class WebViewInteractiveTest |
| std::string last_drop_data_; |
| }; |
| -// Used to get notified when a guest is created. |
| -class GuestContentBrowserClient : public chrome::ChromeContentBrowserClient { |
| - public: |
| - GuestContentBrowserClient() : web_contents_(NULL) {} |
| - |
| - content::WebContents* WaitForGuestCreated() { |
| - if (web_contents_) |
| - return web_contents_; |
| - |
| - message_loop_runner_ = new content::MessageLoopRunner; |
| - message_loop_runner_->Run(); |
| - return web_contents_; |
| - } |
| - |
| - 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); |
| - web_contents_ = guest_web_contents; |
| - |
| - if (message_loop_runner_) |
| - message_loop_runner_->Quit(); |
| - } |
| - |
| - content::WebContents* web_contents_; |
| - scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| -}; |
| - |
| // ui_test_utils::SendMouseMoveSync doesn't seem to work on OS_MACOSX, and |
| // likely won't work on many other platforms as well, so for now this test |
| // is for Windows and Linux only. As of Sept 17th, 2013 this test is disabled |
| @@ -881,18 +913,13 @@ IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, |
| // view upon step #3. We simply read the input type's state after #3 to |
| // make sure it's not TEXT_INPUT_TYPE_NONE. |
| IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, Focus_FocusRestored) { |
| - GuestContentBrowserClient new_client; |
| - content::ContentBrowserClient* old_client = |
| - SetBrowserClientForTesting(&new_client); |
| - |
| content::WebContents* embedder_web_contents = NULL; |
| scoped_ptr<ExtensionTestMessageListener> done_listener( |
| RunAppHelper("testFocusRestored", "web_view/focus", NO_TEST_SERVER, |
| &embedder_web_contents)); |
| ASSERT_TRUE(done_listener->WaitUntilSatisfied()); |
| - content::WebContents* guest_web_contents = new_client.WaitForGuestCreated(); |
| - // Reset the browser client so that we do not notice any unexpected behavior. |
| - SetBrowserClientForTesting(old_client); |
| + content::WebContents* guest_web_contents = |
| + GetGuestViewManager()->WaitForGuestCreated(); |
| ASSERT_TRUE(guest_web_contents); |
| // 1) We click on the guest so that we get a focus event. |