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. |