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

Side by Side Diff: chrome/browser/devtools/devtools_sanity_browsertest.cc

Issue 442303002: DevTools: migrate DevTools APIs to use WebContents instead of RenderViewHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/cancelable_callback.h" 6 #include "base/cancelable_callback.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 base::StringPrintf("uiTests.runTest('%s')", test_name), 103 base::StringPrintf("uiTests.runTest('%s')", test_name),
104 &result)); 104 &result));
105 EXPECT_EQ("[OK]", result); 105 EXPECT_EQ("[OK]", result);
106 } 106 }
107 107
108 } // namespace 108 } // namespace
109 109
110 class DevToolsSanityTest : public InProcessBrowserTest { 110 class DevToolsSanityTest : public InProcessBrowserTest {
111 public: 111 public:
112 DevToolsSanityTest() 112 DevToolsSanityTest()
113 : window_(NULL), 113 : window_(NULL) {}
114 inspected_rvh_(NULL) {}
115 114
116 protected: 115 protected:
117 void RunTest(const std::string& test_name, const std::string& test_page) { 116 void RunTest(const std::string& test_name, const std::string& test_page) {
118 OpenDevToolsWindow(test_page, false); 117 OpenDevToolsWindow(test_page, false);
119 RunTestFunction(window_, test_name.c_str()); 118 RunTestFunction(window_, test_name.c_str());
120 CloseDevToolsWindow(); 119 CloseDevToolsWindow();
121 } 120 }
122 121
123 void LoadTestPage(const std::string& test_page) { 122 void LoadTestPage(const std::string& test_page) {
124 GURL url = test_server()->GetURL(test_page); 123 GURL url = test_server()->GetURL(test_page);
125 ui_test_utils::NavigateToURL(browser(), url); 124 ui_test_utils::NavigateToURL(browser(), url);
126 } 125 }
127 126
128 void OpenDevToolsWindow(const std::string& test_page, bool is_docked) { 127 void OpenDevToolsWindow(const std::string& test_page, bool is_docked) {
129 ASSERT_TRUE(test_server()->Start()); 128 ASSERT_TRUE(test_server()->Start());
130 LoadTestPage(test_page); 129 LoadTestPage(test_page);
131 130
132 inspected_rvh_ = GetInspectedTab()->GetRenderViewHost();
133 window_ = DevToolsWindowTesting::OpenDevToolsWindowSync( 131 window_ = DevToolsWindowTesting::OpenDevToolsWindowSync(
134 inspected_rvh_, is_docked); 132 GetInspectedTab(), is_docked);
135 } 133 }
136 134
137 WebContents* GetInspectedTab() { 135 WebContents* GetInspectedTab() {
138 return browser()->tab_strip_model()->GetWebContentsAt(0); 136 return browser()->tab_strip_model()->GetWebContentsAt(0);
139 } 137 }
140 138
141 void CloseDevToolsWindow() { 139 void CloseDevToolsWindow() {
142 DevToolsWindowTesting::CloseDevToolsWindowSync(window_); 140 DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
143 } 141 }
144 142
145 WebContents* main_web_contents() { 143 WebContents* main_web_contents() {
146 return DevToolsWindowTesting::Get(window_)->main_web_contents(); 144 return DevToolsWindowTesting::Get(window_)->main_web_contents();
147 } 145 }
148 146
149 WebContents* toolbox_web_contents() { 147 WebContents* toolbox_web_contents() {
150 return DevToolsWindowTesting::Get(window_)->toolbox_web_contents(); 148 return DevToolsWindowTesting::Get(window_)->toolbox_web_contents();
151 } 149 }
152 150
153 DevToolsWindow* window_; 151 DevToolsWindow* window_;
154 RenderViewHost* inspected_rvh_;
155 }; 152 };
156 153
157 // Used to block until a dev tools window gets beforeunload event. 154 // Used to block until a dev tools window gets beforeunload event.
158 class DevToolsWindowBeforeUnloadObserver 155 class DevToolsWindowBeforeUnloadObserver
159 : public content::WebContentsObserver { 156 : public content::WebContentsObserver {
160 public: 157 public:
161 explicit DevToolsWindowBeforeUnloadObserver(DevToolsWindow*); 158 explicit DevToolsWindowBeforeUnloadObserver(DevToolsWindow*);
162 void Wait(); 159 void Wait();
163 private: 160 private:
164 // Invoked when the beforeunload handler fires. 161 // Invoked when the beforeunload handler fires.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 AcceptModalDialog(); 237 AcceptModalDialog();
241 if (wait_for_browser_close) 238 if (wait_for_browser_close)
242 close_observer.Wait(); 239 close_observer.Wait();
243 } 240 }
244 runner->Run(); 241 runner->Run();
245 } 242 }
246 243
247 DevToolsWindow* OpenDevToolWindowOnWebContents( 244 DevToolsWindow* OpenDevToolWindowOnWebContents(
248 content::WebContents* contents, bool is_docked) { 245 content::WebContents* contents, bool is_docked) {
249 DevToolsWindow* window = DevToolsWindowTesting::OpenDevToolsWindowSync( 246 DevToolsWindow* window = DevToolsWindowTesting::OpenDevToolsWindowSync(
250 contents->GetRenderViewHost(), is_docked); 247 contents, is_docked);
251 return window; 248 return window;
252 } 249 }
253 250
254 void OpenDevToolsPopupWindow(DevToolsWindow* devtools_window) { 251 void OpenDevToolsPopupWindow(DevToolsWindow* devtools_window) {
255 content::WindowedNotificationObserver observer( 252 content::WindowedNotificationObserver observer(
256 content::NOTIFICATION_LOAD_STOP, 253 content::NOTIFICATION_LOAD_STOP,
257 content::NotificationService::AllSources()); 254 content::NotificationService::AllSources());
258 ASSERT_TRUE(content::ExecuteScript( 255 ASSERT_TRUE(content::ExecuteScript(
259 DevToolsWindowTesting::Get(devtools_window)-> 256 DevToolsWindowTesting::Get(devtools_window)->
260 main_web_contents()->GetRenderViewHost(), 257 main_web_contents()->GetRenderViewHost(),
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 SchemeIs(content::kChromeDevToolsScheme)); 809 SchemeIs(content::kChromeDevToolsScheme));
813 ASSERT_EQ(url, GetInspectedTab()->GetURL()); 810 ASSERT_EQ(url, GetInspectedTab()->GetURL());
814 CloseDevToolsWindow(); 811 CloseDevToolsWindow();
815 } 812 }
816 813
817 // Tests that toolbox window is loaded when DevTools window is undocked. 814 // Tests that toolbox window is loaded when DevTools window is undocked.
818 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxLoadedUndocked) { 815 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxLoadedUndocked) {
819 OpenDevToolsWindow(kDebuggerTestPage, false); 816 OpenDevToolsWindow(kDebuggerTestPage, false);
820 ASSERT_TRUE(toolbox_web_contents()); 817 ASSERT_TRUE(toolbox_web_contents());
821 DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync( 818 DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync(
822 main_web_contents()->GetRenderViewHost(), false); 819 main_web_contents(), false);
823 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents()); 820 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents());
824 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self); 821 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self);
825 CloseDevToolsWindow(); 822 CloseDevToolsWindow();
826 } 823 }
827 824
828 // Tests that toolbox window is not loaded when DevTools window is docked. 825 // Tests that toolbox window is not loaded when DevTools window is docked.
829 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxNotLoadedDocked) { 826 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxNotLoadedDocked) {
830 OpenDevToolsWindow(kDebuggerTestPage, true); 827 OpenDevToolsWindow(kDebuggerTestPage, true);
831 ASSERT_FALSE(toolbox_web_contents()); 828 ASSERT_FALSE(toolbox_web_contents());
832 DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync( 829 DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync(
833 main_web_contents()->GetRenderViewHost(), false); 830 main_web_contents(), false);
834 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents()); 831 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents());
835 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self); 832 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self);
836 CloseDevToolsWindow(); 833 CloseDevToolsWindow();
837 } 834 }
838 835
839 // Tests that inspector will reattach to inspected page when it is reloaded 836 // Tests that inspector will reattach to inspected page when it is reloaded
840 // after a crash. See http://crbug.com/101952 837 // after a crash. See http://crbug.com/101952
841 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestReattachAfterCrash) { 838 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestReattachAfterCrash) {
842 RunTest("testReattachAfterCrash", std::string()); 839 RunTest("testReattachAfterCrash", std::string());
843 } 840 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 // Wait until worker script is paused on the debugger statement. 886 // Wait until worker script is paused on the debugger statement.
890 RunTestFunction(window_, "testPauseInSharedWorkerInitialization"); 887 RunTestFunction(window_, "testPauseInSharedWorkerInitialization");
891 CloseDevToolsWindow(); 888 CloseDevToolsWindow();
892 } 889 }
893 890
894 class DevToolsAgentHostTest : public InProcessBrowserTest {}; 891 class DevToolsAgentHostTest : public InProcessBrowserTest {};
895 892
896 // Tests DevToolsAgentHost retention by its target. 893 // Tests DevToolsAgentHost retention by its target.
897 IN_PROC_BROWSER_TEST_F(DevToolsAgentHostTest, TestAgentHostReleased) { 894 IN_PROC_BROWSER_TEST_F(DevToolsAgentHostTest, TestAgentHostReleased) {
898 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); 895 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
899 RenderViewHost* rvh = browser()->tab_strip_model()->GetWebContentsAt(0)-> 896 WebContents* web_contents =
900 GetRenderViewHost(); 897 browser()->tab_strip_model()->GetWebContentsAt(0);
901 DevToolsAgentHost* agent_raw = DevToolsAgentHost::GetOrCreateFor(rvh).get(); 898 DevToolsAgentHost* agent_raw =
899 DevToolsAgentHost::GetOrCreateFor(web_contents).get();
902 const std::string agent_id = agent_raw->GetId(); 900 const std::string agent_id = agent_raw->GetId();
903 ASSERT_EQ(agent_raw, DevToolsAgentHost::GetForId(agent_id)) << 901 ASSERT_EQ(agent_raw, DevToolsAgentHost::GetForId(agent_id)) <<
904 "DevToolsAgentHost cannot be found by id"; 902 "DevToolsAgentHost cannot be found by id";
905 browser()->tab_strip_model()-> 903 browser()->tab_strip_model()->
906 CloseWebContentsAt(0, TabStripModel::CLOSE_NONE); 904 CloseWebContentsAt(0, TabStripModel::CLOSE_NONE);
907 ASSERT_FALSE(DevToolsAgentHost::GetForId(agent_id).get()) 905 ASSERT_FALSE(DevToolsAgentHost::GetForId(agent_id).get())
908 << "DevToolsAgentHost is not released when the tab is closed"; 906 << "DevToolsAgentHost is not released when the tab is closed";
909 } 907 }
910 908
911 class RemoteDebuggingTest: public ExtensionApiTest { 909 class RemoteDebuggingTest: public ExtensionApiTest {
912 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 910 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
913 ExtensionApiTest::SetUpCommandLine(command_line); 911 ExtensionApiTest::SetUpCommandLine(command_line);
914 command_line->AppendSwitchASCII(switches::kRemoteDebuggingPort, "9222"); 912 command_line->AppendSwitchASCII(switches::kRemoteDebuggingPort, "9222");
915 913
916 // Override the extension root path. 914 // Override the extension root path.
917 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_); 915 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_);
918 test_data_dir_ = test_data_dir_.AppendASCII("devtools"); 916 test_data_dir_ = test_data_dir_.AppendASCII("devtools");
919 } 917 }
920 }; 918 };
921 919
922 IN_PROC_BROWSER_TEST_F(RemoteDebuggingTest, RemoteDebugger) { 920 IN_PROC_BROWSER_TEST_F(RemoteDebuggingTest, RemoteDebugger) {
923 #if defined(OS_WIN) && defined(USE_ASH) 921 #if defined(OS_WIN) && defined(USE_ASH)
924 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 922 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
925 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 923 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
926 return; 924 return;
927 #endif 925 #endif
928 926
929 ASSERT_TRUE(RunExtensionTest("target_list")) << message_; 927 ASSERT_TRUE(RunExtensionTest("target_list")) << message_;
930 } 928 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698