summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-18 19:00:21 +0000
committergab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-18 19:00:21 +0000
commita9cc57a82cf3281445094f18c7ceb3968e0e0d24 (patch)
treeadba8ea5cb09905a9b69fe9a28bb22fbcd988413
parent197c92cc4c3be4f83ded2ee1b34dcd1b00a29687 (diff)
downloadchromium_src-a9cc57a82cf3281445094f18c7ceb3968e0e0d24.zip
chromium_src-a9cc57a82cf3281445094f18c7ceb3968e0e0d24.tar.gz
chromium_src-a9cc57a82cf3281445094f18c7ceb3968e0e0d24.tar.bz2
Revert of [DevTools] Move DevToolsWindow testing code to a separate class. (https://codereview.chromium.org/395783002/)
Reason for revert: Mac 10.7 has become flaky for ViewIDTest.Basic (http://build.chromium.org/p/chromium.mac/builders/Mac10.7%20Tests%20%282%29?numbuilds=100) and this CL is suspected as it touches this exact test. Example crash stack trace below: BrowserTestBase signal handler received SIGTERM. Backtrace: 0 browser_tests 0x0132e9ba base::debug::StackTrace::StackTrace() + 26 1 browser_tests 0x04e5ecb8 _ZN7content12_GLOBAL__N_1L27DumpStackTraceSignalHandlerEi + 72 2 libsystem_c.dylib 0x9090259b _sigtramp + 43 3 ??? 0xffffffff 0x0 + 4294967295 4 browser_tests 0x01328f56 base::AtExitManager::RegisterCallback(void (*)(void*), void*) + 102 5 browser_tests 0x02614bb4 Singleton\u003Ccc::TaskRunnerPairs, DefaultSingletonTraits\u003Ccc::TaskRunnerPairs>, cc::TaskRunnerPairs>::get() + 276 6 browser_tests 0x026141e7 cc::BlockingTaskRunner::current() + 23 7 browser_tests 0x02614762 cc::BlockingTaskRunner::CapturePostTasks::CapturePostTasks() + 18 8 browser_tests 0x026404eb cc::SingleThreadProxy::Stop() + 59 9 browser_tests 0x02619e04 cc::LayerTreeHost::~LayerTreeHost() + 132 10 browser_tests 0x0261a2c1 cc::LayerTreeHost::~LayerTreeHost() + 17 11 browser_tests 0x04011e94 ui::Compositor::~Compositor() + 148 12 browser_tests 0x040120c1 ui::Compositor::~Compositor() + 17 13 browser_tests 0x03fa8dfd -[BrowserCompositorViewCocoa .cxx_destruct] + 173 14 libobjc.A.dylib 0x995863bf object_cxxDestructFromClass + 104 15 libobjc.A.dylib 0x99583204 objc_destructInstance + 40 16 browser_tests 0x021dd2c2 (anonymous namespace)::ZombieDealloc(objc_object*, objc_selector*) + 98 17 AppKit 0x96b68b39 -[NSResponder dealloc] + 156 18 AppKit 0x96b66fee -[NSView dealloc] + 74 19 libobjc.A.dylib 0x9958254e _objc_rootRelease + 47 20 browser_tests 0x03fa7f16 base::LazyInstance\u003Cbase::scoped_nsobject\u003CBrowserCompositorViewCocoa>, base::DefaultLazyInstanceTraits\u003Cbase::scoped_nsobject\u003CBrowserCompositorViewCocoa> > >::OnExit(void*) + 38 21 browser_tests 0x013291e2 base::internal::Invoker\u003C1, base::internal::BindState\u003Cbase::internal::RunnableAdapter\u003Cvoid (*)(void*)>, void ()(void*), void ()(void*)>, void ()(void*)>::Run(base::internal::BindStateBase*) + 18 22 browser_tests 0x01328e27 base::AtExitManager::ProcessCallbacksNow() + 119 23 browser_tests 0x01328ec2 base::AtExitManager::~AtExitManager() + 34 24 browser_tests 0x013bbb20 base::TestSuite::~TestSuite() + 48 25 browser_tests 0x00b5f783 ChromeBrowserTestSuiteRunner::RunTestSuite(int, char**) + 51 26 browser_tests 0x012fd642 (anonymous namespace)::ChromeTestLauncherDelegate::RunTestSuite(int, char**) + 34 27 browser_tests 0x04e97e42 content::LaunchTests(content::TestLauncherDelegate*, int, int, char**) + 738 28 browser_tests 0x012fd5f3 LaunchChromeTests(int, ChromeTestSuiteRunner*, int, char**) + 67 29 browser_tests 0x00b5f73d main + 77 30 browser_tests 0x00039635 start + 53 31 ??? 0x0000000b 0x0 + 11 Original issue's description: > [DevTools] Move DevToolsWindow testing code to a separate class. > > This change: > - allows for proper docking testing (including toolbox); > - removes all test friends from DevToolsWindow; > - unifies testing approach to use load callback instead of notifications; > - adds simple toolbox tests. > > BUG=393566 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=284050 TBR=pfeldman@chromium.org,lushnikov@chromium.org,sky@chromium.org,dgozman@chromium.org NOTREECHECKS=true NOTRY=true BUG=393566 Review URL: https://codereview.chromium.org/403833002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284174 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/devtools/devtools_sanity_browsertest.cc170
-rw-r--r--chrome/browser/devtools/devtools_window.cc87
-rw-r--r--chrome/browser/devtools/devtools_window.h24
-rw-r--r--chrome/browser/devtools/devtools_window_testing.cc151
-rw-r--r--chrome/browser/devtools/devtools_window_testing.h60
-rw-r--r--chrome/browser/policy/policy_browsertest.cc4
-rw-r--r--chrome/browser/task_manager/task_manager_browsertest.cc35
-rw-r--r--chrome/browser/ui/browser_browsertest.cc6
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm14
-rw-r--r--chrome/browser/ui/cocoa/dev_tools_controller_browsertest.mm11
-rw-r--r--chrome/browser/ui/cocoa/view_id_util_browsertest.mm4
-rw-r--r--chrome/chrome_tests.gypi2
-rw-r--r--chrome/test/base/ui_test_utils.cc8
-rw-r--r--chrome/test/base/ui_test_utils.h4
14 files changed, 218 insertions, 362 deletions
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc
index 764eeac..6d5a6fc 100644
--- a/chrome/browser/devtools/devtools_sanity_browsertest.cc
+++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -14,7 +14,7 @@
#include "base/test/test_timeouts.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/devtools/browser_list_tabcontents_provider.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -84,21 +84,19 @@ const char kReloadSharedWorkerTestPage[] =
void RunTestFunction(DevToolsWindow* window, const char* test_name) {
std::string result;
- RenderViewHost* rvh = DevToolsWindowTesting::Get(window)->
- main_web_contents()->GetRenderViewHost();
// At first check that JavaScript part of the front-end is loaded by
// checking that global variable uiTests exists(it's created after all js
// files have been loaded) and has runTest method.
ASSERT_TRUE(
content::ExecuteScriptAndExtractString(
- rvh,
+ window->web_contents_for_test()->GetRenderViewHost(),
"window.domAutomationController.send("
" '' + (window.uiTests && (typeof uiTests.runTest)));",
&result));
ASSERT_EQ("function", result) << "DevTools front-end is broken.";
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- rvh,
+ window->web_contents_for_test()->GetRenderViewHost(),
base::StringPrintf("uiTests.runTest('%s')", test_name),
&result));
EXPECT_EQ("[OK]", result);
@@ -129,24 +127,38 @@ class DevToolsSanityTest : public InProcessBrowserTest {
LoadTestPage(test_page);
inspected_rvh_ = GetInspectedTab()->GetRenderViewHost();
- window_ = DevToolsWindowTesting::OpenDevToolsWindowSync(
- inspected_rvh_, is_docked);
+ window_ =
+ DevToolsWindow::OpenDevToolsWindowForTest(inspected_rvh_, is_docked);
+ ui_test_utils::WaitUntilDevToolsWindowLoaded(window_);
}
WebContents* GetInspectedTab() {
return browser()->tab_strip_model()->GetWebContentsAt(0);
}
- void CloseDevToolsWindow() {
- DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
+ void ToggleDevToolsWindow() {
+ content::WindowedNotificationObserver close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ window_->web_contents_for_test()));
+ DevToolsWindow::ToggleDevToolsWindow(inspected_rvh_, false,
+ DevToolsToggleAction::Toggle());
+ close_observer.Wait();
}
- WebContents* main_web_contents() {
- return DevToolsWindowTesting::Get(window_)->main_web_contents();
+ void ToggleDevToolsWindowDontWait() {
+ DevToolsWindow::ToggleDevToolsWindow(inspected_rvh_, false,
+ DevToolsToggleAction::Toggle());
}
- WebContents* toolbox_web_contents() {
- return DevToolsWindowTesting::Get(window_)->toolbox_web_contents();
+ void CloseDevToolsWindow() {
+ DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
+ content::WindowedNotificationObserver close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ window_->web_contents_for_test()));
+ devtools_manager->CloseAllClientHosts();
+ close_observer.Wait();
}
DevToolsWindow* window_;
@@ -170,8 +182,7 @@ class DevToolsWindowBeforeUnloadObserver
DevToolsWindowBeforeUnloadObserver::DevToolsWindowBeforeUnloadObserver(
DevToolsWindow* devtools_window)
- : WebContentsObserver(
- DevToolsWindowTesting::Get(devtools_window)->main_web_contents()),
+ : WebContentsObserver(devtools_window->web_contents_for_test()),
m_fired(false) {
}
@@ -201,14 +212,17 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
TabStripModel::CLOSE_NONE);
}
- void CloseDevToolsWindowAsync() {
- DevToolsWindowTesting::CloseDevToolsWindow(window_);
+ void CloseDockedDevTools() {
+ ToggleDevToolsWindowDontWait();
+ }
+
+ void CloseUndockedDevTools() {
+ chrome::CloseWindow(window_->browser_for_test());
}
void CloseInspectedBrowser() {
chrome::CloseWindow(browser());
}
-
protected:
void InjectBeforeUnloadListener(content::WebContents* web_contents) {
ASSERT_TRUE(content::ExecuteScript(web_contents->GetRenderViewHost(),
@@ -220,11 +234,11 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
base::Callback<void(void)> close_method,
bool wait_for_browser_close = true) {
OpenDevToolsWindow(kDebuggerTestPage, is_docked);
- scoped_refptr<content::MessageLoopRunner> runner =
- new content::MessageLoopRunner;
- DevToolsWindowTesting::Get(window_)->
- SetCloseCallback(runner->QuitClosure());
- InjectBeforeUnloadListener(main_web_contents());
+ content::WindowedNotificationObserver devtools_close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ window_->web_contents_for_test()));
+ InjectBeforeUnloadListener(window_->web_contents_for_test());
{
DevToolsWindowBeforeUnloadObserver before_unload_observer(window_);
close_method.Run();
@@ -240,13 +254,14 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
if (wait_for_browser_close)
close_observer.Wait();
}
- runner->Run();
+ devtools_close_observer.Wait();
}
DevToolsWindow* OpenDevToolWindowOnWebContents(
content::WebContents* contents, bool is_docked) {
- DevToolsWindow* window = DevToolsWindowTesting::OpenDevToolsWindowSync(
+ DevToolsWindow* window = DevToolsWindow::OpenDevToolsWindowForTest(
contents->GetRenderViewHost(), is_docked);
+ ui_test_utils::WaitUntilDevToolsWindowLoaded(window);
return window;
}
@@ -255,14 +270,29 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
content::NOTIFICATION_LOAD_STOP,
content::NotificationService::AllSources());
ASSERT_TRUE(content::ExecuteScript(
- DevToolsWindowTesting::Get(devtools_window)->
- main_web_contents()->GetRenderViewHost(),
+ devtools_window->web_contents_for_test()->GetRenderViewHost(),
"window.open(\"\", \"\", \"location=0\");"));
observer.Wait();
}
void CloseDevToolsPopupWindow(DevToolsWindow* devtools_window) {
- DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window);
+ Browser* popup_browser = NULL;
+ for (chrome::BrowserIterator it; !it.done(); it.Next()) {
+ if (it->is_devtools()) {
+ content::WebContents* contents =
+ it->tab_strip_model()->GetWebContentsAt(0);
+ if (devtools_window->web_contents_for_test() != contents) {
+ popup_browser = *it;
+ break;
+ }
+ }
+ }
+ ASSERT_FALSE(popup_browser == NULL);
+ content::WindowedNotificationObserver close_observer(
+ chrome::NOTIFICATION_BROWSER_CLOSED,
+ content::Source<Browser>(popup_browser));
+ chrome::CloseWindow(popup_browser);
+ close_observer.Wait();
}
void AcceptModalDialog() {
@@ -511,12 +541,18 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest {
DevToolsAgentHost::GetForWorker(
worker_data->worker_process_id,
worker_data->worker_route_id));
- window_ = DevToolsWindowTesting::OpenDevToolsWindowForWorkerSync(
- profile, agent_host);
+ window_ = DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host);
+ content::WaitForLoadStop(window_->web_contents_for_test());
}
void CloseDevToolsWindow() {
- DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
+ Browser* browser = window_->browser_for_test();
+ content::WindowedNotificationObserver close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ window_->web_contents_for_test()));
+ browser->tab_strip_model()->CloseAllTabs();
+ close_observer.Wait();
}
DevToolsWindow* window_;
@@ -526,7 +562,7 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest {
// we try to close them.
IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, TestDockedDevToolsClose) {
RunBeforeUnloadSanityTest(true, base::Bind(
- &DevToolsBeforeUnloadTest::CloseDevToolsWindowAsync, this), false);
+ &DevToolsBeforeUnloadTest::CloseDockedDevTools, this), false);
}
// Tests that BeforeUnload event gets called on docked devtools if
@@ -549,7 +585,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
// we try to close them.
IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, TestUndockedDevToolsClose) {
RunBeforeUnloadSanityTest(false, base::Bind(
- &DevToolsBeforeUnloadTest::CloseDevToolsWindowAsync, this), false);
+ &DevToolsBeforeUnloadTest::CloseUndockedDevTools, this), false);
}
// Tests that BeforeUnload event gets called on undocked devtools if
@@ -585,19 +621,17 @@ IN_PROC_BROWSER_TEST_F(DevToolsUnresponsiveBeforeUnloadTest,
LoadTestPage(kDebuggerTestPage);
DevToolsWindow* devtools_window = OpenDevToolWindowOnWebContents(
GetInspectedTab(), false);
-
- scoped_refptr<content::MessageLoopRunner> runner =
- new content::MessageLoopRunner;
- DevToolsWindowTesting::Get(devtools_window)->SetCloseCallback(
- runner->QuitClosure());
+ content::WindowedNotificationObserver devtools_close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ devtools_window->web_contents_for_test()));
ASSERT_TRUE(content::ExecuteScript(
- DevToolsWindowTesting::Get(devtools_window)->main_web_contents()->
- GetRenderViewHost(),
+ devtools_window->web_contents_for_test()->GetRenderViewHost(),
"window.addEventListener('beforeunload',"
"function(event) { while (true); });"));
CloseInspectedTab();
- runner->Run();
+ devtools_close_observer.Wait();
}
// Tests that closing worker inspector window does not cause browser crash
@@ -608,6 +642,10 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
LoadTestPage(kDebuggerTestPage);
DevToolsWindow* devtools_window = OpenDevToolWindowOnWebContents(
GetInspectedTab(), false);
+ content::WindowedNotificationObserver devtools_close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ devtools_window->web_contents_for_test()));
OpenDevToolsPopupWindow(devtools_window);
CloseDevToolsPopupWindow(devtools_window);
@@ -631,23 +669,19 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
new content::WindowedNotificationObserver(
content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<content::WebContents>(
- DevToolsWindowTesting::Get(devtools_window)->
- main_web_contents()));
+ devtools_window->web_contents_for_test()));
close_observers.push_back(close_observer);
- inspected_web_contents =
- DevToolsWindowTesting::Get(devtools_window)->main_web_contents();
+ inspected_web_contents = devtools_window->web_contents_for_test();
}
- InjectBeforeUnloadListener(
- DevToolsWindowTesting::Get(windows[0])->main_web_contents());
- InjectBeforeUnloadListener(
- DevToolsWindowTesting::Get(windows[2])->main_web_contents());
+ InjectBeforeUnloadListener(windows[0]->web_contents_for_test());
+ InjectBeforeUnloadListener(windows[2]->web_contents_for_test());
// Try to close second devtools.
{
content::WindowedNotificationObserver cancel_browser(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
content::NotificationService::AllSources());
- chrome::CloseWindow(DevToolsWindowTesting::Get(windows[1])->browser());
+ chrome::CloseWindow(windows[1]->browser_for_test());
CancelModalDialog();
cancel_browser.Wait();
}
@@ -805,41 +839,25 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDeviceEmulation) {
IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDevToolsExternalNavigation) {
OpenDevToolsWindow(kDebuggerTestPage, true);
GURL url = test_server()->GetURL(kNavigateBackTestPage);
- ui_test_utils::UrlLoadObserver observer(url,
+ // TODO(dgozman): remove this once notifications are gone.
+ // Right now notifications happen after observers, so DevTools window is
+ // already loaded, but we still catch it's notification when looking for
+ // all sources.
+ content::WaitForLoadStop(window_->web_contents_for_test());
+ content::WindowedNotificationObserver observer(
+ content::NOTIFICATION_LOAD_STOP,
content::NotificationService::AllSources());
ASSERT_TRUE(content::ExecuteScript(
- main_web_contents(),
+ window_->web_contents_for_test(),
std::string("window.location = \"") + url.spec() + "\""));
observer.Wait();
- ASSERT_TRUE(main_web_contents()->GetURL().
+ ASSERT_TRUE(window_->web_contents_for_test()->GetURL().
SchemeIs(content::kChromeDevToolsScheme));
ASSERT_EQ(url, GetInspectedTab()->GetURL());
CloseDevToolsWindow();
}
-// Tests that toolbox window is loaded when DevTools window is undocked.
-IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxLoadedUndocked) {
- OpenDevToolsWindow(kDebuggerTestPage, false);
- ASSERT_TRUE(toolbox_web_contents());
- DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync(
- main_web_contents()->GetRenderViewHost(), false);
- ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents());
- DevToolsWindowTesting::CloseDevToolsWindowSync(on_self);
- CloseDevToolsWindow();
-}
-
-// Tests that toolbox window is not loaded when DevTools window is docked.
-IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxNotLoadedDocked) {
- OpenDevToolsWindow(kDebuggerTestPage, true);
- ASSERT_FALSE(toolbox_web_contents());
- DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync(
- main_web_contents()->GetRenderViewHost(), false);
- ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents());
- DevToolsWindowTesting::CloseDevToolsWindowSync(on_self);
- CloseDevToolsWindow();
-}
-
// Tests that inspector will reattach to inspected page when it is reloaded
// after a crash. See http://crbug.com/101952
IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestReattachAfterCrash) {
@@ -851,7 +869,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestPageWithNoJavaScript) {
std::string result;
ASSERT_TRUE(
content::ExecuteScriptAndExtractString(
- main_web_contents()->GetRenderViewHost(),
+ window_->web_contents_for_test()->GetRenderViewHost(),
"window.domAutomationController.send("
" '' + (window.uiTests && (typeof uiTests.runTest)));",
&result));
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc
index c47389d..608ac7a 100644
--- a/chrome/browser/devtools/devtools_window.cc
+++ b/chrome/browser/devtools/devtools_window.cc
@@ -39,6 +39,7 @@
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_entry.h"
+#include "content/public/browser/notification_source.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
@@ -48,6 +49,7 @@
#include "content/public/common/content_client.h"
#include "content/public/common/page_transition_types.h"
#include "content/public/common/url_constants.h"
+#include "content/public/test/test_utils.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
#include "ui/events/keycodes/keyboard_codes.h"
@@ -316,11 +318,6 @@ DevToolsWindow::~DevToolsWindow() {
std::find(instances->begin(), instances->end(), this));
DCHECK(it != instances->end());
instances->erase(it);
-
- if (!close_callback_.is_null()) {
- close_callback_.Run();
- close_callback_ = base::Closure();
- }
}
// static
@@ -406,16 +403,7 @@ DevToolsWindow* DevToolsWindow::GetInstanceForInspectedWebContents(
// static
bool DevToolsWindow::IsDevToolsWindow(content::WebContents* web_contents) {
- if (!web_contents || g_instances == NULL)
- return false;
- DevToolsWindows* instances = g_instances.Pointer();
- for (DevToolsWindows::iterator it(instances->begin()); it != instances->end();
- ++it) {
- if ((*it)->main_web_contents_ == web_contents ||
- (*it)->toolbox_web_contents_ == web_contents)
- return true;
- }
- return false;
+ return AsDevToolsWindow(web_contents) != NULL;
}
// static
@@ -437,21 +425,40 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker(
DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker(
Profile* profile) {
content::RecordAction(base::UserMetricsAction("DevTools_InspectWorker"));
- return Create(profile, GURL(), NULL, true, false, false, "");
+ return Create(profile, GURL(), NULL, true, false, false);
}
// static
DevToolsWindow* DevToolsWindow::OpenDevToolsWindow(
content::RenderViewHost* inspected_rvh) {
return ToggleDevToolsWindow(
- inspected_rvh, true, DevToolsToggleAction::Show(), "");
+ inspected_rvh, true, DevToolsToggleAction::Show());
}
// static
DevToolsWindow* DevToolsWindow::OpenDevToolsWindow(
content::RenderViewHost* inspected_rvh,
const DevToolsToggleAction& action) {
- return ToggleDevToolsWindow(inspected_rvh, true, action, "");
+ return ToggleDevToolsWindow(
+ inspected_rvh, true, action);
+}
+
+// static
+DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForTest(
+ content::RenderViewHost* inspected_rvh,
+ bool is_docked) {
+ DevToolsWindow* window = OpenDevToolsWindow(inspected_rvh);
+ window->SetIsDockedAndShowImmediatelyForTest(is_docked);
+ return window;
+}
+
+// static
+DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForTest(
+ Browser* browser,
+ bool is_docked) {
+ return OpenDevToolsWindowForTest(
+ browser->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
+ is_docked);
}
// static
@@ -466,7 +473,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow(
return ToggleDevToolsWindow(
browser->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
- action.type() == DevToolsToggleAction::kInspect, action, "");
+ action.type() == DevToolsToggleAction::kInspect, action);
}
// static
@@ -477,7 +484,7 @@ void DevToolsWindow::OpenExternalFrontend(
DevToolsWindow* window = FindDevToolsWindow(agent_host);
if (!window) {
window = Create(profile, DevToolsUI::GetProxyURL(frontend_url), NULL,
- false, true, false, "");
+ false, true, false);
content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor(
agent_host, window->bindings_->frontend_host());
}
@@ -488,8 +495,7 @@ void DevToolsWindow::OpenExternalFrontend(
DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow(
content::RenderViewHost* inspected_rvh,
bool force_open,
- const DevToolsToggleAction& action,
- const std::string& settings) {
+ const DevToolsToggleAction& action) {
scoped_refptr<DevToolsAgentHost> agent(
DevToolsAgentHost::GetOrCreateFor(inspected_rvh));
content::DevToolsManager* manager = content::DevToolsManager::GetInstance();
@@ -500,8 +506,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow(
inspected_rvh->GetProcess()->GetBrowserContext());
content::RecordAction(
base::UserMetricsAction("DevTools_InspectRenderer"));
- window = Create(
- profile, GURL(), inspected_rvh, false, false, true, settings);
+ window = Create(profile, GURL(), inspected_rvh, false, false, true);
manager->RegisterDevToolsClientHostFor(agent.get(),
window->bindings_->frontend_host());
do_open = true;
@@ -695,6 +700,7 @@ DevToolsWindow::DevToolsWindow(Profile* profile,
// Passing "dockSide=undocked" parameter ensures proper UI.
life_stage_(can_dock ? kNotLoaded : kIsDockedSet),
action_on_load_(DevToolsToggleAction::NoOp()),
+ ignore_set_is_docked_(false),
intercepted_page_beforeunload_(false) {
// Set up delegate, so we get fully-functional window immediately.
// It will not appear in UI though until |life_stage_ == kLoadCompleted|.
@@ -726,8 +732,7 @@ DevToolsWindow* DevToolsWindow::Create(
content::RenderViewHost* inspected_rvh,
bool shared_worker_frontend,
bool external_frontend,
- bool can_dock,
- const std::string& settings) {
+ bool can_dock) {
if (inspected_rvh) {
// Check for a place to dock.
Browser* browser = NULL;
@@ -746,7 +751,7 @@ DevToolsWindow* DevToolsWindow::Create(
GURL url(GetDevToolsURL(profile, frontend_url,
shared_worker_frontend,
external_frontend,
- can_dock, settings));
+ can_dock));
return new DevToolsWindow(profile, url, inspected_rvh, can_dock);
}
@@ -755,8 +760,7 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile,
const GURL& base_url,
bool shared_worker_frontend,
bool external_frontend,
- bool can_dock,
- const std::string& settings) {
+ bool can_dock) {
// Compatibility errors are encoded with data urls, pass them
// through with no decoration.
if (base_url.SchemeIs("data"))
@@ -773,8 +777,6 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile,
url_string += "&remoteFrontend=true";
if (can_dock)
url_string += "&can_dock=true";
- if (settings.size())
- url_string += "&settings=" + settings;
return GURL(url_string);
}
@@ -1028,8 +1030,27 @@ void DevToolsWindow::MoveWindow(int x, int y) {
}
}
+void DevToolsWindow::SetIsDockedAndShowImmediatelyForTest(bool is_docked) {
+ DCHECK(!is_docked || can_dock_);
+ DCHECK(life_stage_ != kClosing);
+ if (life_stage_ == kLoadCompleted) {
+ SetIsDocked(is_docked);
+ } else {
+ is_docked_ = is_docked;
+ // Load is completed when both kIsDockedSet and kOnLoadFired happened.
+ // Note that kIsDockedSet may be already set when can_dock_ is false.
+ life_stage_ = life_stage_ == kOnLoadFired ? kLoadCompleted : kIsDockedSet;
+ // Note that action_on_load_ will be performed after the load is actually
+ // completed. For now, just show the window.
+ Show(DevToolsToggleAction::Show());
+ if (life_stage_ == kLoadCompleted)
+ LoadCompleted();
+ }
+ ignore_set_is_docked_ = true;
+}
+
void DevToolsWindow::SetIsDocked(bool dock_requested) {
- if (life_stage_ == kClosing)
+ if (ignore_set_is_docked_ || life_stage_ == kClosing)
return;
DCHECK(can_dock_ || !dock_requested);
@@ -1240,7 +1261,7 @@ void DevToolsWindow::LoadCompleted() {
}
void DevToolsWindow::SetLoadCompletedCallback(const base::Closure& closure) {
- if (life_stage_ == kLoadCompleted || life_stage_ == kClosing) {
+ if (life_stage_ == kLoadCompleted) {
if (!closure.is_null())
closure.Run();
return;
diff --git a/chrome/browser/devtools/devtools_window.h b/chrome/browser/devtools/devtools_window.h
index 5cf23b1..2bfa5f0 100644
--- a/chrome/browser/devtools/devtools_window.h
+++ b/chrome/browser/devtools/devtools_window.h
@@ -13,7 +13,6 @@
class Browser;
class BrowserWindow;
-class DevToolsWindowTesting;
class DevToolsEventForwarder;
namespace content {
@@ -72,6 +71,11 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate,
static DevToolsWindow* OpenDevToolsWindow(
content::RenderViewHost* inspected_rvh);
+ static DevToolsWindow* OpenDevToolsWindowForTest(
+ content::RenderViewHost* inspected_rvh, bool is_docked);
+ static DevToolsWindow* OpenDevToolsWindowForTest(
+ Browser* browser, bool is_docked);
+
// Perform specified action for current WebContents inside a |browser|.
// This may close currently open DevTools window.
static DevToolsWindow* ToggleDevToolsWindow(
@@ -92,6 +96,9 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate,
static void InspectElement(
content::RenderViewHost* inspected_rvh, int x, int y);
+ Browser* browser_for_test() { return browser_; }
+ content::WebContents* web_contents_for_test() { return main_web_contents_; }
+
// Sets closure to be called after load is done. If already loaded, calls
// closure immediately.
void SetLoadCompletedCallback(const base::Closure& closure);
@@ -174,7 +181,8 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate,
static void OnPageCloseCanceled(content::WebContents* contents);
private:
- friend class DevToolsWindowTesting;
+ friend class DevToolsSanityTest;
+ friend class BrowserWindowControllerTest;
// DevTools lifecycle typically follows this way:
// - Toggle/Open: client call;
@@ -207,22 +215,19 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate,
content::RenderViewHost* inspected_rvh,
bool shared_worker_frontend,
bool external_frontend,
- bool can_dock,
- const std::string& settings);
+ bool can_dock);
static GURL GetDevToolsURL(Profile* profile,
const GURL& base_url,
bool shared_worker_frontend,
bool external_frontend,
- bool can_dock,
- const std::string& settings);
+ bool can_dock);
static DevToolsWindow* FindDevToolsWindow(content::DevToolsAgentHost*);
static DevToolsWindow* AsDevToolsWindow(content::WebContents*);
static DevToolsWindow* CreateDevToolsWindowForWorker(Profile* profile);
static DevToolsWindow* ToggleDevToolsWindow(
content::RenderViewHost* inspected_rvh,
bool force_open,
- const DevToolsToggleAction& action,
- const std::string& settings);
+ const DevToolsToggleAction& action);
static std::string GetDevToolsWindowPlacementPrefKey();
@@ -290,6 +295,7 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate,
void Show(const DevToolsToggleAction& action);
void DoAction(const DevToolsToggleAction& action);
void LoadCompleted();
+ void SetIsDockedAndShowImmediatelyForTest(bool is_docked);
void UpdateBrowserToolbar();
void UpdateBrowserWindow();
content::WebContents* GetInspectedWebContents();
@@ -305,12 +311,12 @@ class DevToolsWindow : public DevToolsUIBindings::Delegate,
const bool can_dock_;
LifeStage life_stage_;
DevToolsToggleAction action_on_load_;
+ bool ignore_set_is_docked_;
DevToolsContentsResizingStrategy contents_resizing_strategy_;
// True if we're in the process of handling a beforeunload event originating
// from the inspected webcontents, see InterceptPageBeforeUnload for details.
bool intercepted_page_beforeunload_;
base::Closure load_completed_callback_;
- base::Closure close_callback_;
base::TimeTicks inspect_element_start_time_;
scoped_ptr<DevToolsEventForwarder> event_forwarder_;
diff --git a/chrome/browser/devtools/devtools_window_testing.cc b/chrome/browser/devtools/devtools_window_testing.cc
deleted file mode 100644
index aa1ee4b..0000000
--- a/chrome/browser/devtools/devtools_window_testing.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/devtools/devtools_window_testing.h"
-
-#include "base/lazy_instance.h"
-#include "chrome/browser/devtools/devtools_window.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "content/public/browser/devtools_agent_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/test_utils.h"
-
-namespace {
-
-typedef std::vector<DevToolsWindowTesting*> DevToolsWindowTestings;
-base::LazyInstance<DevToolsWindowTestings>::Leaky g_instances =
- LAZY_INSTANCE_INITIALIZER;
-
-}
-
-DevToolsWindowTesting::DevToolsWindowTesting(DevToolsWindow* window)
- : devtools_window_(window) {
- DCHECK(window);
- window->close_callback_ =
- base::Bind(&DevToolsWindowTesting::WindowClosed, window);
- g_instances.Get().push_back(this);
-}
-
-DevToolsWindowTesting::~DevToolsWindowTesting() {
- DevToolsWindowTestings* instances = g_instances.Pointer();
- DevToolsWindowTestings::iterator it(
- std::find(instances->begin(), instances->end(), this));
- DCHECK(it != instances->end());
- instances->erase(it);
- if (!close_callback_.is_null()) {
- close_callback_.Run();
- close_callback_ = base::Closure();
- }
-}
-
-// static
-DevToolsWindowTesting* DevToolsWindowTesting::Get(DevToolsWindow* window) {
- DevToolsWindowTesting* testing = DevToolsWindowTesting::Find(window);
- if (!testing)
- testing = new DevToolsWindowTesting(window);
- return testing;
-}
-
-// static
-DevToolsWindowTesting* DevToolsWindowTesting::Find(DevToolsWindow* window) {
- if (g_instances == NULL)
- return NULL;
- DevToolsWindowTestings* instances = g_instances.Pointer();
- for (DevToolsWindowTestings::iterator it(instances->begin());
- it != instances->end();
- ++it) {
- if ((*it)->devtools_window_ == window)
- return *it;
- }
- return NULL;
-}
-
-Browser* DevToolsWindowTesting::browser() {
- return devtools_window_->browser_;
-}
-
-content::WebContents* DevToolsWindowTesting::main_web_contents() {
- return devtools_window_->main_web_contents_;
-}
-
-content::WebContents* DevToolsWindowTesting::toolbox_web_contents() {
- return devtools_window_->toolbox_web_contents_;
-}
-
-void DevToolsWindowTesting::SetInspectedPageBounds(const gfx::Rect& bounds) {
- devtools_window_->SetInspectedPageBounds(bounds);
-}
-
-void DevToolsWindowTesting::SetCloseCallback(const base::Closure& closure) {
- close_callback_ = closure;
-}
-
-// static
-void DevToolsWindowTesting::WindowClosed(DevToolsWindow* window) {
- DevToolsWindowTesting* testing = DevToolsWindowTesting::Find(window);
- if (testing)
- delete testing;
-}
-
-// static
-void DevToolsWindowTesting::WaitForDevToolsWindowLoad(DevToolsWindow* window) {
- scoped_refptr<content::MessageLoopRunner> runner =
- new content::MessageLoopRunner;
- window->SetLoadCompletedCallback(runner->QuitClosure());
- runner->Run();
-}
-
-// static
-DevToolsWindow* DevToolsWindowTesting::OpenDevToolsWindowSync(
- content::RenderViewHost* inspected_rvh,
- bool is_docked) {
- std::string settings = is_docked ?
- "{\"currentDockState\":\"\\\"bottom\\\"\"}" :
- "{\"currentDockState\":\"\\\"undocked\\\"\"}";
- DevToolsWindow* window = DevToolsWindow::ToggleDevToolsWindow(
- inspected_rvh, true, DevToolsToggleAction::Show(), settings);
- WaitForDevToolsWindowLoad(window);
- return window;
-}
-
-// static
-DevToolsWindow* DevToolsWindowTesting::OpenDevToolsWindowSync(
- Browser* browser,
- bool is_docked) {
- return OpenDevToolsWindowSync(
- browser->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
- is_docked);
-}
-
-// static
-DevToolsWindow* DevToolsWindowTesting::OpenDevToolsWindowForWorkerSync(
- Profile* profile, content::DevToolsAgentHost* worker_agent) {
- DevToolsWindow* window = DevToolsWindow::OpenDevToolsWindowForWorker(
- profile, worker_agent);
- WaitForDevToolsWindowLoad(window);
- return window;
-}
-
-// static
-void DevToolsWindowTesting::CloseDevToolsWindow(
- DevToolsWindow* window) {
- if (window->is_docked_) {
- window->CloseWindow();
- } else {
- window->browser_->window()->Close();
- }
-}
-
-// static
-void DevToolsWindowTesting::CloseDevToolsWindowSync(
- DevToolsWindow* window) {
- scoped_refptr<content::MessageLoopRunner> runner =
- new content::MessageLoopRunner;
- DevToolsWindowTesting::Get(window)->SetCloseCallback(runner->QuitClosure());
- CloseDevToolsWindow(window);
- runner->Run();
-}
diff --git a/chrome/browser/devtools/devtools_window_testing.h b/chrome/browser/devtools/devtools_window_testing.h
deleted file mode 100644
index 38e5e73..0000000
--- a/chrome/browser/devtools/devtools_window_testing.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
-#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
-
-#include "base/callback.h"
-#include "chrome/browser/devtools/devtools_window.h"
-#include "ui/gfx/rect.h"
-
-class Browser;
-class Profile;
-
-namespace content {
-class DevToolsAgentHost;
-class RenderViewHost;
-class WebContents;
-}
-
-class DevToolsWindowTesting {
- public:
- virtual ~DevToolsWindowTesting();
-
- // The following methods block until DevToolsWindow is completely loaded.
- static DevToolsWindow* OpenDevToolsWindowSync(
- content::RenderViewHost* inspected_rvh, bool is_docked);
- static DevToolsWindow* OpenDevToolsWindowSync(
- Browser* browser, bool is_docked);
- static DevToolsWindow* OpenDevToolsWindowForWorkerSync(
- Profile* profile, content::DevToolsAgentHost* worker_agent);
-
- // Closes the window like it was user-initiated.
- static void CloseDevToolsWindow(DevToolsWindow* window);
- // Blocks until window is closed.
- static void CloseDevToolsWindowSync(DevToolsWindow* window);
-
- static DevToolsWindowTesting* Get(DevToolsWindow* window);
-
- Browser* browser();
- content::WebContents* main_web_contents();
- content::WebContents* toolbox_web_contents();
- void SetInspectedPageBounds(const gfx::Rect& bounds);
- void SetCloseCallback(const base::Closure& closure);
-
- private:
- friend class DevToolsWindow;
-
- explicit DevToolsWindowTesting(DevToolsWindow* window);
- static void WaitForDevToolsWindowLoad(DevToolsWindow* window);
- static void WindowClosed(DevToolsWindow* window);
- static DevToolsWindowTesting* Find(DevToolsWindow* window);
-
- DevToolsWindow* devtools_window_;
- base::Closure close_callback_;
-
- DISALLOW_COPY_AND_ASSIGN(DevToolsWindowTesting);
-};
-
-#endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index 29041a5..1121e20 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -31,7 +31,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/download/download_prefs.h"
#include "chrome/browser/extensions/api/messaging/native_message_process_host.h"
#include "chrome/browser/extensions/crx_installer.h"
@@ -1411,7 +1411,7 @@ IN_PROC_BROWSER_TEST_F(PolicyTest, DeveloperToolsDisabled) {
content::WindowedNotificationObserver close_observer(
content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<content::WebContents>(
- DevToolsWindowTesting::Get(devtools_window)->main_web_contents()));
+ devtools_window->web_contents_for_test()));
UpdateProviderPolicy(policies);
// wait for devtools close
close_observer.Wait();
diff --git a/chrome/browser/task_manager/task_manager_browsertest.cc b/chrome/browser/task_manager/task_manager_browsertest.cc
index 8275879..78043a0 100644
--- a/chrome/browser/task_manager/task_manager_browsertest.cc
+++ b/chrome/browser/task_manager/task_manager_browsertest.cc
@@ -8,7 +8,7 @@
#include "base/strings/stringprintf.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/infobars/infobar_service.h"
@@ -731,37 +731,38 @@ IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) {
ShowTaskManager(); // Task manager shown BEFORE dev tools window.
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
- DevToolsWindow* devtools =
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
+ DevToolsWindow::OpenDevToolsWindowForTest(
+ browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
+ true);
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
- DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
}
IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewUndockedWindow) {
ShowTaskManager(); // Task manager shown BEFORE dev tools window.
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
- DevToolsWindow* devtools =
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
- ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
- ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
- DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
+ DevToolsWindow::OpenDevToolsWindowForTest(
+ browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
+ false);
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
}
IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldDockedWindow) {
- DevToolsWindow* devtools =
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
+ DevToolsWindow::OpenDevToolsWindowForTest(
+ browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
+ true);
+
ShowTaskManager(); // Task manager shown AFTER dev tools window.
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
- DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
}
IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldUnockedWindow) {
- DevToolsWindow* devtools =
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
+ DevToolsWindow::OpenDevToolsWindowForTest(
+ browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
+ false);
ShowTaskManager(); // Task manager shown AFTER dev tools window.
- ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
- ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
- DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
}
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index 5686c58..0585f14 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -18,7 +18,7 @@
#include "chrome/browser/command_updater.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/defaults.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/tab_helper.h"
@@ -1374,7 +1374,9 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldShowLocationBar) {
NEW_WINDOW));
ASSERT_TRUE(app_window);
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
+ DevToolsWindow::OpenDevToolsWindowForTest(
+ browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
+ false);
// The launch should have created a new app browser and a dev tools browser.
ASSERT_EQ(3u,
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
index c22e9ce..7ba3a71 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
@@ -9,7 +9,7 @@
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/infobars/simple_alert_infobar_delegate.h"
#include "chrome/browser/profiles/profile.h"
@@ -134,6 +134,11 @@ class BrowserWindowControllerTest : public InProcessBrowserTest {
return height;
}
+ void SetDevToolsWindowContentsBounds(
+ DevToolsWindow* window, const gfx::Rect& bounds) {
+ window->SetInspectedPageBounds(bounds);
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(BrowserWindowControllerTest);
};
@@ -361,10 +366,9 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
StatusBubblePositioning) {
NSPoint origin = [controller() statusBubbleBaseFrame].origin;
- DevToolsWindow* devtools_window =
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
- DevToolsWindowTesting::Get(devtools_window)->SetInspectedPageBounds(
- gfx::Rect(10, 10, 100, 100));
+ DevToolsWindow* devtools_window = DevToolsWindow::OpenDevToolsWindowForTest(
+ browser(), true);
+ SetDevToolsWindowContentsBounds(devtools_window, gfx::Rect(10, 10, 100, 100));
NSPoint originWithDevTools = [controller() statusBubbleBaseFrame].origin;
EXPECT_FALSE(NSEqualPoints(origin, originWithDevTools));
diff --git a/chrome/browser/ui/cocoa/dev_tools_controller_browsertest.mm b/chrome/browser/ui/cocoa/dev_tools_controller_browsertest.mm
index 516a7e7..e22f829 100644
--- a/chrome/browser/ui/cocoa/dev_tools_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/dev_tools_controller_browsertest.mm
@@ -5,7 +5,6 @@
#import "chrome/browser/ui/cocoa/dev_tools_controller.h"
#include "chrome/browser/devtools/devtools_window.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_window.h"
@@ -25,11 +24,17 @@ class DevToolsControllerTest : public InProcessBrowserTest {
protected:
void OpenDevToolsWindow() {
devtools_window_ =
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
+ DevToolsWindow::OpenDevToolsWindowForTest(browser(), true);
}
void CloseDevToolsWindow() {
- DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window_);
+ content::WindowedNotificationObserver close_observer(
+ content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ content::Source<content::WebContents>(
+ devtools_window_->web_contents_for_test()));
+ DevToolsWindow::ToggleDevToolsWindow(
+ browser(), DevToolsToggleAction::Toggle());
+ close_observer.Wait();
}
content::WebContents* web_contents() {
diff --git a/chrome/browser/ui/cocoa/view_id_util_browsertest.mm b/chrome/browser/ui/cocoa/view_id_util_browsertest.mm
index a0b0a44..6c5e9a8 100644
--- a/chrome/browser/ui/cocoa/view_id_util_browsertest.mm
+++ b/chrome/browser/ui/cocoa/view_id_util_browsertest.mm
@@ -7,7 +7,7 @@
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
-#include "chrome/browser/devtools/devtools_window_testing.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/download/download_shelf.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
@@ -47,7 +47,7 @@ class ViewIDTest : public InProcessBrowserTest {
chrome::ShowFindBar(browser());
// Make sure docked devtools is created to test VIEW_ID_DEV_TOOLS_DOCKED
- DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
+ DevToolsWindow::OpenDevToolsWindowForTest(browser(), true);
// Make sure download shelf is created to test VIEW_ID_DOWNLOAD_SHELF
browser()->window()->GetDownloadShelf()->Show();
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index b094fbc..25dd009 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1019,8 +1019,6 @@
'browser/devtools/device/adb/mock_adb_server.h',
'browser/devtools/device/port_forwarding_browsertest.cc',
'browser/devtools/device/usb/android_usb_browsertest.cc',
- 'browser/devtools/devtools_window_testing.cc',
- 'browser/devtools/devtools_window_testing.h',
'browser/devtools/devtools_sanity_browsertest.cc',
'browser/dom_distiller/dom_distiller_viewer_source_browsertest.cc',
'browser/dom_distiller/tab_utils_browsertest.cc',
diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc
index 978835b..2fa3c02 100644
--- a/chrome/test/base/ui_test_utils.cc
+++ b/chrome/test/base/ui_test_utils.cc
@@ -28,6 +28,7 @@
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/extensions/extension_action.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/profiles/profile.h"
@@ -267,6 +268,13 @@ void NavigateToURLBlockUntilNavigationsComplete(Browser* browser,
BROWSER_TEST_WAIT_FOR_NAVIGATION);
}
+void WaitUntilDevToolsWindowLoaded(DevToolsWindow* window) {
+ scoped_refptr<content::MessageLoopRunner> runner =
+ new content::MessageLoopRunner;
+ window->SetLoadCompletedCallback(runner->QuitClosure());
+ runner->Run();
+}
+
base::FilePath GetTestFilePath(const base::FilePath& dir,
const base::FilePath& file) {
base::FilePath path;
diff --git a/chrome/test/base/ui_test_utils.h b/chrome/test/base/ui_test_utils.h
index 9e690d1..7c15ce8 100644
--- a/chrome/test/base/ui_test_utils.h
+++ b/chrome/test/base/ui_test_utils.h
@@ -28,6 +28,7 @@
class AppModalDialog;
class Browser;
+class DevToolsWindow;
class LocationBar;
class Profile;
class SkBitmap;
@@ -110,6 +111,9 @@ void NavigateToURLBlockUntilNavigationsComplete(Browser* browser,
const GURL& url,
int number_of_navigations);
+// Blocks until DevTools window is loaded.
+void WaitUntilDevToolsWindowLoaded(DevToolsWindow* window);
+
// Generate the file path for testing a particular test.
// The file for the tests is all located in
// test_root_directory/dir/<file>