diff options
Diffstat (limited to 'chrome/browser')
12 files changed, 71 insertions, 230 deletions
diff --git a/chrome/browser/apps/guest_view/app_view_browsertest.cc b/chrome/browser/apps/guest_view/app_view_browsertest.cc index 8ddc15d..9a6ba6b 100644 --- a/chrome/browser/apps/guest_view/app_view_browsertest.cc +++ b/chrome/browser/apps/guest_view/app_view_browsertest.cc @@ -10,83 +10,19 @@ #include "content/public/test/test_utils.h" #include "extensions/browser/guest_view/guest_view_manager.h" #include "extensions/browser/guest_view/guest_view_manager_factory.h" +#include "extensions/browser/guest_view/test_guest_view_manager.h" #include "extensions/common/switches.h" #include "extensions/test/extension_test_message_listener.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" -namespace { - -class TestGuestViewManager : public extensions::GuestViewManager { - public: - explicit TestGuestViewManager(content::BrowserContext* context) : - extensions::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: - void AddGuest(int guest_instance_id, - content::WebContents* guest_web_contents) override { - extensions::GuestViewManager::AddGuest( - guest_instance_id, guest_web_contents); - web_contents_ = guest_web_contents; - - if (message_loop_runner_.get()) - 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 extensions::GuestViewManagerFactory { - public: - TestGuestViewManagerFactory() : - test_guest_view_manager_(NULL) {} - - ~TestGuestViewManagerFactory() override {} - - extensions::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); -}; - -} // namespace - class AppViewTest : public extensions::PlatformAppBrowserTest { public: AppViewTest() { extensions::GuestViewManager::set_factory_for_testing(&factory_); } - TestGuestViewManager* GetGuestViewManager() { - return factory_.GetManager(browser()->profile()); - } - enum TestServer { NEEDS_TEST_SERVER, NO_TEST_SERVER @@ -134,7 +70,7 @@ class AppViewTest : public extensions::PlatformAppBrowserTest { extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line); } - TestGuestViewManagerFactory factory_; + extensions::TestGuestViewManagerFactory factory_; }; // Tests that <appview> is able to navigate to another installed app. diff --git a/chrome/browser/apps/guest_view/extension_view/extension_view_browsertest.cc b/chrome/browser/apps/guest_view/extension_view/extension_view_browsertest.cc index f539220..22c64a4 100644 --- a/chrome/browser/apps/guest_view/extension_view/extension_view_browsertest.cc +++ b/chrome/browser/apps/guest_view/extension_view/extension_view_browsertest.cc @@ -6,68 +6,15 @@ #include "chrome/browser/apps/app_browsertest_util.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/guest_view/extensions_guest_view_manager_delegate.h" #include "extensions/browser/guest_view/guest_view_manager.h" #include "extensions/browser/guest_view/guest_view_manager_factory.h" +#include "extensions/browser/guest_view/test_guest_view_manager.h" #include "extensions/test/extension_test_message_listener.h" -namespace { - -class TestGuestViewManager : public extensions::GuestViewManager { - public: - explicit TestGuestViewManager(content::BrowserContext* context) - : extensions::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. - void AddGuest(int guest_instance_id, - content::WebContents* guest_web_contents) override { - extensions::GuestViewManager::AddGuest(guest_instance_id, - guest_web_contents); - web_contents_ = guest_web_contents; - - if (message_loop_runner_.get()) - 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 extensions::GuestViewManagerFactory { - public: - TestGuestViewManagerFactory() : test_guest_view_manager_(NULL) {} - - ~TestGuestViewManagerFactory() override {} - - extensions::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); -}; - -} // namespace +using extensions::ExtensionsGuestViewManagerDelegate; +using extensions::GuestViewManager; +using extensions::TestGuestViewManager; class ExtensionViewTest : public extensions::PlatformAppBrowserTest { public: @@ -75,8 +22,20 @@ class ExtensionViewTest : public extensions::PlatformAppBrowserTest { extensions::GuestViewManager::set_factory_for_testing(&factory_); } - TestGuestViewManager* GetGuestViewManager() { - return factory_.GetManager(browser()->profile()); + extensions::TestGuestViewManager* GetGuestViewManager() { + TestGuestViewManager* manager = static_cast<TestGuestViewManager*>( + TestGuestViewManager::FromBrowserContext(browser()->profile())); + // TestGuestViewManager::WaitForSingleGuestCreated may and will get called + // before a guest is created. + if (!manager) { + manager = static_cast<TestGuestViewManager*>( + GuestViewManager::CreateWithDelegate( + browser()->profile(), + scoped_ptr<guestview::GuestViewManagerDelegate>( + new ExtensionsGuestViewManagerDelegate( + browser()->profile())))); + } + return manager; } void TestHelper(const std::string& test_name, @@ -111,7 +70,7 @@ class ExtensionViewTest : public extensions::PlatformAppBrowserTest { extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line); } - TestGuestViewManagerFactory factory_; + extensions::TestGuestViewManagerFactory factory_; }; // Tests that <extensionview> can be created and added to the DOM. diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc index 7318ef8..4eb7744 100644 --- a/chrome/browser/apps/guest_view/web_view_browsertest.cc +++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc @@ -36,6 +36,7 @@ #include "extensions/browser/api/declarative/test_rules_registry.h" #include "extensions/browser/api/declarative_webrequest/webrequest_constants.h" #include "extensions/browser/app_window/native_app_window.h" +#include "extensions/browser/guest_view/extensions_guest_view_manager_delegate.h" #include "extensions/browser/guest_view/guest_view_manager.h" #include "extensions/browser/guest_view/guest_view_manager_factory.h" #include "extensions/browser/guest_view/test_guest_view_manager.h" @@ -67,6 +68,9 @@ #endif using extensions::ContextMenuMatcher; +using extensions::ExtensionsGuestViewManagerDelegate; +using extensions::GuestViewManager; +using extensions::TestGuestViewManager; using extensions::MenuItem; using prerender::PrerenderLinkManager; using prerender::PrerenderLinkManagerFactory; @@ -816,10 +820,20 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { return embedder_web_contents_; } - extensions::TestGuestViewManager* GetGuestViewManager() { - return static_cast<extensions::TestGuestViewManager*>( - extensions::TestGuestViewManager::FromBrowserContext( - browser()->profile())); + TestGuestViewManager* GetGuestViewManager() { + TestGuestViewManager* manager = static_cast<TestGuestViewManager*>( + TestGuestViewManager::FromBrowserContext(browser()->profile())); + // TestGuestViewManager::WaitForSingleGuestCreated may and will get called + // before a guest is created. + if (!manager) { + manager = static_cast<TestGuestViewManager*>( + GuestViewManager::CreateWithDelegate( + browser()->profile(), + scoped_ptr<guestview::GuestViewManagerDelegate>( + new ExtensionsGuestViewManagerDelegate( + browser()->profile())))); + } + return manager; } WebViewTest() : guest_web_contents_(NULL), diff --git a/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc b/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc index 89a6099..bb24c91 100644 --- a/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc +++ b/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc @@ -23,9 +23,11 @@ #include "content/public/test/browser_test_utils.h" #include "extensions/browser/app_window/app_window.h" #include "extensions/browser/app_window/app_window_registry.h" +#include "extensions/browser/guest_view/extensions_guest_view_manager_delegate.h" #include "extensions/browser/guest_view/guest_view_base.h" #include "extensions/browser/guest_view/guest_view_manager.h" #include "extensions/browser/guest_view/guest_view_manager_factory.h" +#include "extensions/browser/guest_view/test_guest_view_manager.h" #include "extensions/test/extension_test_message_listener.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "ui/base/ime/composition_text.h" @@ -34,88 +36,9 @@ #include "ui/events/keycodes/keyboard_codes.h" using extensions::AppWindow; - -class TestGuestViewManager : public extensions::GuestViewManager { - public: - explicit TestGuestViewManager(content::BrowserContext* context) - : GuestViewManager(context), - guest_add_count_(0), - guest_remove_count_(0), - web_contents_(NULL) {} - - content::WebContents* WaitForGuestAdded() { - if (web_contents_) - return web_contents_; - - add_message_loop_runner_ = new content::MessageLoopRunner; - add_message_loop_runner_->Run(); - return web_contents_; - } - - // Waits so that at least |expected_remove_count| guests' creation - // has been seen by this manager. - void WaitForGuestRemoved(size_t expected_remove_count) { - if (guest_remove_count_ >= expected_remove_count) - return; - - remove_message_loop_runner_ = new content::MessageLoopRunner; - remove_message_loop_runner_->Run(); - } - - size_t guest_add_count() { return guest_add_count_; } - - private: - // GuestViewManager override: - 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; - ++guest_add_count_; - - if (add_message_loop_runner_.get()) - add_message_loop_runner_->Quit(); - } - - void RemoveGuest(int guest_instance_id) override { - GuestViewManager::RemoveGuest(guest_instance_id); - ++guest_remove_count_; - - if (remove_message_loop_runner_.get()) - remove_message_loop_runner_->Quit(); - } - - size_t guest_add_count_; - size_t guest_remove_count_; - content::WebContents* web_contents_; - scoped_refptr<content::MessageLoopRunner> add_message_loop_runner_; - scoped_refptr<content::MessageLoopRunner> remove_message_loop_runner_; -}; - -// Test factory for creating test instances of GuestViewManager. -class TestGuestViewManagerFactory : public extensions::GuestViewManagerFactory { - public: - TestGuestViewManagerFactory() : - test_guest_view_manager_(NULL) {} - - ~TestGuestViewManagerFactory() override {} - - extensions::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); -}; +using extensions::ExtensionsGuestViewManagerDelegate; +using extensions::GuestViewManager; +using extensions::TestGuestViewManager; class WebViewInteractiveTest : public extensions::PlatformAppBrowserTest { @@ -130,7 +53,19 @@ class WebViewInteractiveTest } TestGuestViewManager* GetGuestViewManager() { - return factory_.GetManager(browser()->profile()); + TestGuestViewManager* manager = static_cast<TestGuestViewManager*>( + TestGuestViewManager::FromBrowserContext(browser()->profile())); + // TestGuestViewManager::WaitForSingleGuestCreated may and will get called + // before a guest is created. + if (!manager) { + manager = static_cast<TestGuestViewManager*>( + GuestViewManager::CreateWithDelegate( + browser()->profile(), + scoped_ptr<guestview::GuestViewManagerDelegate>( + new ExtensionsGuestViewManagerDelegate( + browser()->profile())))); + } + return manager; } void MoveMouseInsideWindowWithListener(gfx::Point point, @@ -284,11 +219,9 @@ class WebViewInteractiveTest ASSERT_TRUE(done_listener); ASSERT_TRUE(done_listener->WaitUntilSatisfied()); - guest_web_contents_ = GetGuestViewManager()->WaitForGuestAdded(); + guest_web_contents_ = GetGuestViewManager()->WaitForSingleGuestCreated(); } - void RunTest(const std::string& app_name) { - } void SetupTest(const std::string& app_name, const std::string& guest_url_spec) { ASSERT_TRUE(StartEmbeddedTestServer()); @@ -547,7 +480,7 @@ class WebViewInteractiveTest } protected: - TestGuestViewManagerFactory factory_; + extensions::TestGuestViewManagerFactory factory_; content::WebContents* guest_web_contents_; content::WebContents* embedder_web_contents_; gfx::Point corner_; @@ -900,13 +833,13 @@ IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, TestHelper("testNewWindowOpenerDestroyedWhileUnattached", "web_view/newwindow", NEEDS_TEST_SERVER); - ASSERT_EQ(2u, GetGuestViewManager()->guest_add_count()); + ASSERT_EQ(2, GetGuestViewManager()->num_guests_created()); // We have two guests in this test, one is the intial one, the other // is the newwindow one. // Before the embedder goes away, both the guests should go away. // This ensures that unattached guests are gone if opener is gone. - GetGuestViewManager()->WaitForGuestRemoved(2u); + GetGuestViewManager()->WaitForAllGuestsDeleted(); } IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, ExecuteCode) { diff --git a/chrome/browser/chromeos/login/helper.cc b/chrome/browser/chromeos/login/helper.cc index a0177c5..afdd741 100644 --- a/chrome/browser/chromeos/login/helper.cc +++ b/chrome/browser/chromeos/login/helper.cc @@ -66,7 +66,7 @@ bool FindGuestByPartitionName(const std::string& partition_name, content::StoragePartition* GetPartition(content::WebContents* embedder, const std::string& partition_name) { extensions::GuestViewManager* manager = - extensions::GuestViewManager::FromBrowserContextIfAvailable( + extensions::GuestViewManager::FromBrowserContext( embedder->GetBrowserContext()); if (!manager) return nullptr; diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc index 7bcf360..03abc79 100644 --- a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc +++ b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc @@ -132,7 +132,7 @@ void ChromeWebViewGuestDelegate::OnGuestDestroyed() { MenuManager* menu_manager = MenuManager::Get( Profile::FromBrowserContext(web_view_guest()->browser_context())); menu_manager->RemoveAllContextItems(MenuItem::ExtensionKey( - web_view_guest()->owner_extension_id(), + web_view_guest()->owner_host(), web_view_guest()->view_instance_id())); } diff --git a/chrome/browser/printing/print_view_manager_common.cc b/chrome/browser/printing/print_view_manager_common.cc index 37f8d09..7f8ad12 100644 --- a/chrome/browser/printing/print_view_manager_common.cc +++ b/chrome/browser/printing/print_view_manager_common.cc @@ -37,7 +37,7 @@ bool StoreFullPagePlugin(content::WebContents** result, content::WebContents* GetWebContentsToUse(content::WebContents* contents) { #if defined(ENABLE_EXTENSIONS) extensions::GuestViewManager* guest_view_manager = - extensions::GuestViewManager::FromBrowserContextIfAvailable( + extensions::GuestViewManager::FromBrowserContext( contents->GetBrowserContext()); if (guest_view_manager) { guest_view_manager->ForEachGuest( diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc index 1c79bf9..a363530 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc @@ -415,7 +415,7 @@ HostContentSettingsMap* OffTheRecordProfileImpl::GetHostContentSettingsMap() { content::BrowserPluginGuestManager* OffTheRecordProfileImpl::GetGuestManager() { #if defined(ENABLE_EXTENSIONS) - return extensions::GuestViewManager::FromBrowserContextIfAvailable(this); + return extensions::GuestViewManager::FromBrowserContext(this); #else return NULL; #endif diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 106a677..1ddc4fc 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -1053,7 +1053,7 @@ HostContentSettingsMap* ProfileImpl::GetHostContentSettingsMap() { content::BrowserPluginGuestManager* ProfileImpl::GetGuestManager() { #if defined(ENABLE_EXTENSIONS) - return extensions::GuestViewManager::FromBrowserContextIfAvailable(this); + return extensions::GuestViewManager::FromBrowserContext(this); #else return NULL; #endif diff --git a/chrome/browser/signin/signin_header_helper.cc b/chrome/browser/signin/signin_header_helper.cc index 0387202..83e502b 100644 --- a/chrome/browser/signin/signin_header_helper.cc +++ b/chrome/browser/signin/signin_header_helper.cc @@ -250,7 +250,7 @@ bool AppendMirrorRequestHeaderIfPossible( // embedded in a webui page, otherwise user may end up with a blank page as // gaia uses the header to decide whether it returns 204 for certain end // points. - if (is_guest && webview_info.owner_extension_id.empty()) + if (is_guest && webview_info.owner_host.empty()) return false; #endif // !OS_ANDROID && !OS_IOS diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.cc b/chrome/browser/ui/tab_contents/core_tab_helper.cc index 26fdafa..b2ef8e0 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.cc +++ b/chrome/browser/ui/tab_contents/core_tab_helper.cc @@ -92,9 +92,8 @@ bool CoreTabHelper::GetStatusTextForWebContents( tracked_objects::ScopedTracker tracking_profile1( FROM_HERE_WITH_EXPLICIT_FUNCTION( "467185 CoreTabHelper::GetStatusTextForWebContents1")); - auto guest_manager = - extensions::GuestViewManager::FromBrowserContextIfAvailable( - source->GetBrowserContext()); + auto guest_manager = extensions::GuestViewManager::FromBrowserContext( + source->GetBrowserContext()); if (!source->IsLoading() || source->GetLoadState().state == net::LOAD_STATE_IDLE) { // TODO(robliao): Remove ScopedTracker below once https://crbug.com/467185 diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc index e807990..e38d985 100644 --- a/chrome/browser/ui/webui/signin/inline_login_ui.cc +++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc @@ -138,7 +138,7 @@ content::RenderFrameHost* InlineLoginUI::GetAuthFrame( #endif if (is_webview) { extensions::GuestViewManager* manager = - extensions::GuestViewManager::FromBrowserContextIfAvailable( + extensions::GuestViewManager::FromBrowserContext( web_contents->GetBrowserContext()); if (manager) { manager->ForEachGuest(web_contents, |