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

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

Issue 395783002: [DevTools] Move DevToolsWindow testing code to a separate class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased, added cleanup to some tests 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 6d5a6fcd54eb4ac40af4efa648be560cffe8c454..764eeacc797b94a2748ffb5e2980e89c5cbb8c18 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.h"
+#include "chrome/browser/devtools/devtools_window_testing.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -84,19 +84,21 @@ 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(
- window->web_contents_for_test()->GetRenderViewHost(),
+ rvh,
"window.domAutomationController.send("
" '' + (window.uiTests && (typeof uiTests.runTest)));",
&result));
ASSERT_EQ("function", result) << "DevTools front-end is broken.";
ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- window->web_contents_for_test()->GetRenderViewHost(),
+ rvh,
base::StringPrintf("uiTests.runTest('%s')", test_name),
&result));
EXPECT_EQ("[OK]", result);
@@ -127,38 +129,24 @@ class DevToolsSanityTest : public InProcessBrowserTest {
LoadTestPage(test_page);
inspected_rvh_ = GetInspectedTab()->GetRenderViewHost();
- window_ =
- DevToolsWindow::OpenDevToolsWindowForTest(inspected_rvh_, is_docked);
- ui_test_utils::WaitUntilDevToolsWindowLoaded(window_);
+ window_ = DevToolsWindowTesting::OpenDevToolsWindowSync(
+ inspected_rvh_, is_docked);
}
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 CloseDevToolsWindow() {
+ DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
}
- void ToggleDevToolsWindowDontWait() {
- DevToolsWindow::ToggleDevToolsWindow(inspected_rvh_, false,
- DevToolsToggleAction::Toggle());
+ WebContents* main_web_contents() {
+ return DevToolsWindowTesting::Get(window_)->main_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();
+ WebContents* toolbox_web_contents() {
+ return DevToolsWindowTesting::Get(window_)->toolbox_web_contents();
}
DevToolsWindow* window_;
@@ -182,7 +170,8 @@ class DevToolsWindowBeforeUnloadObserver
DevToolsWindowBeforeUnloadObserver::DevToolsWindowBeforeUnloadObserver(
DevToolsWindow* devtools_window)
- : WebContentsObserver(devtools_window->web_contents_for_test()),
+ : WebContentsObserver(
+ DevToolsWindowTesting::Get(devtools_window)->main_web_contents()),
m_fired(false) {
}
@@ -212,17 +201,14 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
TabStripModel::CLOSE_NONE);
}
- void CloseDockedDevTools() {
- ToggleDevToolsWindowDontWait();
- }
-
- void CloseUndockedDevTools() {
- chrome::CloseWindow(window_->browser_for_test());
+ void CloseDevToolsWindowAsync() {
+ DevToolsWindowTesting::CloseDevToolsWindow(window_);
}
void CloseInspectedBrowser() {
chrome::CloseWindow(browser());
}
+
protected:
void InjectBeforeUnloadListener(content::WebContents* web_contents) {
ASSERT_TRUE(content::ExecuteScript(web_contents->GetRenderViewHost(),
@@ -234,11 +220,11 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
base::Callback<void(void)> close_method,
bool wait_for_browser_close = true) {
OpenDevToolsWindow(kDebuggerTestPage, is_docked);
- 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());
+ scoped_refptr<content::MessageLoopRunner> runner =
+ new content::MessageLoopRunner;
+ DevToolsWindowTesting::Get(window_)->
+ SetCloseCallback(runner->QuitClosure());
+ InjectBeforeUnloadListener(main_web_contents());
{
DevToolsWindowBeforeUnloadObserver before_unload_observer(window_);
close_method.Run();
@@ -254,14 +240,13 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
if (wait_for_browser_close)
close_observer.Wait();
}
- devtools_close_observer.Wait();
+ runner->Run();
}
DevToolsWindow* OpenDevToolWindowOnWebContents(
content::WebContents* contents, bool is_docked) {
- DevToolsWindow* window = DevToolsWindow::OpenDevToolsWindowForTest(
+ DevToolsWindow* window = DevToolsWindowTesting::OpenDevToolsWindowSync(
contents->GetRenderViewHost(), is_docked);
- ui_test_utils::WaitUntilDevToolsWindowLoaded(window);
return window;
}
@@ -270,29 +255,14 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
content::NOTIFICATION_LOAD_STOP,
content::NotificationService::AllSources());
ASSERT_TRUE(content::ExecuteScript(
- devtools_window->web_contents_for_test()->GetRenderViewHost(),
+ DevToolsWindowTesting::Get(devtools_window)->
+ main_web_contents()->GetRenderViewHost(),
"window.open(\"\", \"\", \"location=0\");"));
observer.Wait();
}
void CloseDevToolsPopupWindow(DevToolsWindow* 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();
+ DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window);
}
void AcceptModalDialog() {
@@ -541,18 +511,12 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest {
DevToolsAgentHost::GetForWorker(
worker_data->worker_process_id,
worker_data->worker_route_id));
- window_ = DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host);
- content::WaitForLoadStop(window_->web_contents_for_test());
+ window_ = DevToolsWindowTesting::OpenDevToolsWindowForWorkerSync(
+ profile, agent_host);
}
void CloseDevToolsWindow() {
- 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();
+ DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
}
DevToolsWindow* window_;
@@ -562,7 +526,7 @@ class WorkerDevToolsSanityTest : public InProcessBrowserTest {
// we try to close them.
IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, TestDockedDevToolsClose) {
RunBeforeUnloadSanityTest(true, base::Bind(
- &DevToolsBeforeUnloadTest::CloseDockedDevTools, this), false);
+ &DevToolsBeforeUnloadTest::CloseDevToolsWindowAsync, this), false);
}
// Tests that BeforeUnload event gets called on docked devtools if
@@ -585,7 +549,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
// we try to close them.
IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, TestUndockedDevToolsClose) {
RunBeforeUnloadSanityTest(false, base::Bind(
- &DevToolsBeforeUnloadTest::CloseUndockedDevTools, this), false);
+ &DevToolsBeforeUnloadTest::CloseDevToolsWindowAsync, this), false);
}
// Tests that BeforeUnload event gets called on undocked devtools if
@@ -621,17 +585,19 @@ IN_PROC_BROWSER_TEST_F(DevToolsUnresponsiveBeforeUnloadTest,
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()));
+
+ scoped_refptr<content::MessageLoopRunner> runner =
+ new content::MessageLoopRunner;
+ DevToolsWindowTesting::Get(devtools_window)->SetCloseCallback(
+ runner->QuitClosure());
ASSERT_TRUE(content::ExecuteScript(
- devtools_window->web_contents_for_test()->GetRenderViewHost(),
+ DevToolsWindowTesting::Get(devtools_window)->main_web_contents()->
+ GetRenderViewHost(),
"window.addEventListener('beforeunload',"
"function(event) { while (true); });"));
CloseInspectedTab();
- devtools_close_observer.Wait();
+ runner->Run();
}
// Tests that closing worker inspector window does not cause browser crash
@@ -642,10 +608,6 @@ 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);
@@ -669,19 +631,23 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
new content::WindowedNotificationObserver(
content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<content::WebContents>(
- devtools_window->web_contents_for_test()));
+ DevToolsWindowTesting::Get(devtools_window)->
+ main_web_contents()));
close_observers.push_back(close_observer);
- inspected_web_contents = devtools_window->web_contents_for_test();
+ inspected_web_contents =
+ DevToolsWindowTesting::Get(devtools_window)->main_web_contents();
}
- InjectBeforeUnloadListener(windows[0]->web_contents_for_test());
- InjectBeforeUnloadListener(windows[2]->web_contents_for_test());
+ InjectBeforeUnloadListener(
+ DevToolsWindowTesting::Get(windows[0])->main_web_contents());
+ InjectBeforeUnloadListener(
+ DevToolsWindowTesting::Get(windows[2])->main_web_contents());
// Try to close second devtools.
{
content::WindowedNotificationObserver cancel_browser(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
content::NotificationService::AllSources());
- chrome::CloseWindow(windows[1]->browser_for_test());
+ chrome::CloseWindow(DevToolsWindowTesting::Get(windows[1])->browser());
CancelModalDialog();
cancel_browser.Wait();
}
@@ -839,25 +805,41 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDeviceEmulation) {
IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDevToolsExternalNavigation) {
OpenDevToolsWindow(kDebuggerTestPage, true);
GURL url = test_server()->GetURL(kNavigateBackTestPage);
- // 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,
+ ui_test_utils::UrlLoadObserver observer(url,
content::NotificationService::AllSources());
ASSERT_TRUE(content::ExecuteScript(
- window_->web_contents_for_test(),
+ main_web_contents(),
std::string("window.location = \"") + url.spec() + "\""));
observer.Wait();
- ASSERT_TRUE(window_->web_contents_for_test()->GetURL().
+ ASSERT_TRUE(main_web_contents()->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) {
@@ -869,7 +851,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestPageWithNoJavaScript) {
std::string result;
ASSERT_TRUE(
content::ExecuteScriptAndExtractString(
- window_->web_contents_for_test()->GetRenderViewHost(),
+ main_web_contents()->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