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

Unified Diff: chrome/browser/devtools/devtools_sanity_browsertest.cc

Issue 403833002: Revert of [DevTools] Move DevToolsWindow testing code to a separate class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/devtools/devtools_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/devtools/devtools_sanity_browsertest.cc
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc
index 764eeacc797b94a2748ffb5e2980e89c5cbb8c18..6d5a6fcd54eb4ac40af4efa648be560cffe8c454 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 @@
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 @@
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 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();
+ }
+
+ void ToggleDevToolsWindowDontWait() {
+ DevToolsWindow::ToggleDevToolsWindow(inspected_rvh_, false,
+ DevToolsToggleAction::Toggle());
+ }
+
void CloseDevToolsWindow() {
- DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
- }
-
- WebContents* main_web_contents() {
- return DevToolsWindowTesting::Get(window_)->main_web_contents();
- }
-
- WebContents* toolbox_web_contents() {
- return DevToolsWindowTesting::Get(window_)->toolbox_web_contents();
+ 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
// 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 @@
// 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 @@
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 @@
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 @@
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();
- }
-
- InjectBeforeUnloadListener(
- DevToolsWindowTesting::Get(windows[0])->main_web_contents());
- InjectBeforeUnloadListener(
- DevToolsWindowTesting::Get(windows[2])->main_web_contents());
+ inspected_web_contents = devtools_window->web_contents_for_test();
+ }
+
+ 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,38 +839,22 @@
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();
}
@@ -851,7 +869,7 @@
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));
« no previous file with comments | « no previous file | chrome/browser/devtools/devtools_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698