Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Unified Diff: chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc

Issue 1066563006: GuestView: Move GuestViewManager extension dependencies to ExtensionsGuestViewManagerDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@extensions_guest_view_message_filter
Patch Set: Fixed more tests Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc
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 89a60997976470f8c1fc120b2984a3ea84c76637..216a8e3a3b93a9c2a2d2ca69fe1a395bef838d04 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 {
@@ -129,8 +52,25 @@ class WebViewInteractiveTest
extensions::GuestViewManager::set_factory_for_testing(&factory_);
}
+ void RunTestOnMainThreadLoop() override {
+ extensions::PlatformAppBrowserTest::RunTestOnMainThreadLoop();
+ GetGuestViewManager()->WaitForAllGuestsDeleted();
Fady Samuel 2015/04/24 01:31:24 Note to self: browser() may be undefined at this p
Fady Samuel 2015/04/24 04:37:48 Done.
+ }
+
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 +224,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 +485,7 @@ class WebViewInteractiveTest
}
protected:
- TestGuestViewManagerFactory factory_;
+ extensions::TestGuestViewManagerFactory factory_;
content::WebContents* guest_web_contents_;
content::WebContents* embedder_web_contents_;
gfx::Point corner_;
@@ -900,13 +838,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) {

Powered by Google App Engine
This is Rietveld 408576698