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

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: Review comments addressed. 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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 rvh, 102 rvh,
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() : window_(NULL) {}
113 : window_(NULL),
114 inspected_rvh_(NULL) {}
115 113
116 protected: 114 protected:
117 void RunTest(const std::string& test_name, const std::string& test_page) { 115 void RunTest(const std::string& test_name, const std::string& test_page) {
118 OpenDevToolsWindow(test_page, false); 116 OpenDevToolsWindow(test_page, false);
119 RunTestFunction(window_, test_name.c_str()); 117 RunTestFunction(window_, test_name.c_str());
120 CloseDevToolsWindow(); 118 CloseDevToolsWindow();
121 } 119 }
122 120
123 void LoadTestPage(const std::string& test_page) { 121 void LoadTestPage(const std::string& test_page) {
124 GURL url = test_server()->GetURL(test_page); 122 GURL url = test_server()->GetURL(test_page);
125 ui_test_utils::NavigateToURL(browser(), url); 123 ui_test_utils::NavigateToURL(browser(), url);
126 } 124 }
127 125
128 void OpenDevToolsWindow(const std::string& test_page, bool is_docked) { 126 void OpenDevToolsWindow(const std::string& test_page, bool is_docked) {
129 ASSERT_TRUE(test_server()->Start()); 127 ASSERT_TRUE(test_server()->Start());
130 LoadTestPage(test_page); 128 LoadTestPage(test_page);
131 129
132 inspected_rvh_ = GetInspectedTab()->GetRenderViewHost(); 130 window_ = DevToolsWindowTesting::OpenDevToolsWindowSync(GetInspectedTab(),
133 window_ = DevToolsWindowTesting::OpenDevToolsWindowSync( 131 is_docked);
134 inspected_rvh_, is_docked);
135 } 132 }
136 133
137 WebContents* GetInspectedTab() { 134 WebContents* GetInspectedTab() {
138 return browser()->tab_strip_model()->GetWebContentsAt(0); 135 return browser()->tab_strip_model()->GetWebContentsAt(0);
139 } 136 }
140 137
141 void CloseDevToolsWindow() { 138 void CloseDevToolsWindow() {
142 DevToolsWindowTesting::CloseDevToolsWindowSync(window_); 139 DevToolsWindowTesting::CloseDevToolsWindowSync(window_);
143 } 140 }
144 141
145 WebContents* main_web_contents() { 142 WebContents* main_web_contents() {
146 return DevToolsWindowTesting::Get(window_)->main_web_contents(); 143 return DevToolsWindowTesting::Get(window_)->main_web_contents();
147 } 144 }
148 145
149 WebContents* toolbox_web_contents() { 146 WebContents* toolbox_web_contents() {
150 return DevToolsWindowTesting::Get(window_)->toolbox_web_contents(); 147 return DevToolsWindowTesting::Get(window_)->toolbox_web_contents();
151 } 148 }
152 149
153 DevToolsWindow* window_; 150 DevToolsWindow* window_;
154 RenderViewHost* inspected_rvh_;
155 }; 151 };
156 152
157 // Used to block until a dev tools window gets beforeunload event. 153 // Used to block until a dev tools window gets beforeunload event.
158 class DevToolsWindowBeforeUnloadObserver 154 class DevToolsWindowBeforeUnloadObserver
159 : public content::WebContentsObserver { 155 : public content::WebContentsObserver {
160 public: 156 public:
161 explicit DevToolsWindowBeforeUnloadObserver(DevToolsWindow*); 157 explicit DevToolsWindowBeforeUnloadObserver(DevToolsWindow*);
162 void Wait(); 158 void Wait();
163 private: 159 private:
164 // Invoked when the beforeunload handler fires. 160 // Invoked when the beforeunload handler fires.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 close_method.Run(); 235 close_method.Run();
240 AcceptModalDialog(); 236 AcceptModalDialog();
241 if (wait_for_browser_close) 237 if (wait_for_browser_close)
242 close_observer.Wait(); 238 close_observer.Wait();
243 } 239 }
244 runner->Run(); 240 runner->Run();
245 } 241 }
246 242
247 DevToolsWindow* OpenDevToolWindowOnWebContents( 243 DevToolsWindow* OpenDevToolWindowOnWebContents(
248 content::WebContents* contents, bool is_docked) { 244 content::WebContents* contents, bool is_docked) {
249 DevToolsWindow* window = DevToolsWindowTesting::OpenDevToolsWindowSync( 245 DevToolsWindow* window =
250 contents->GetRenderViewHost(), is_docked); 246 DevToolsWindowTesting::OpenDevToolsWindowSync(contents, is_docked);
251 return window; 247 return window;
252 } 248 }
253 249
254 void OpenDevToolsPopupWindow(DevToolsWindow* devtools_window) { 250 void OpenDevToolsPopupWindow(DevToolsWindow* devtools_window) {
255 content::WindowedNotificationObserver observer( 251 content::WindowedNotificationObserver observer(
256 content::NOTIFICATION_LOAD_STOP, 252 content::NOTIFICATION_LOAD_STOP,
257 content::NotificationService::AllSources()); 253 content::NotificationService::AllSources());
258 ASSERT_TRUE(content::ExecuteScript( 254 ASSERT_TRUE(content::ExecuteScript(
259 DevToolsWindowTesting::Get(devtools_window)-> 255 DevToolsWindowTesting::Get(devtools_window)->
260 main_web_contents()->GetRenderViewHost(), 256 main_web_contents()->GetRenderViewHost(),
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 ASSERT_TRUE(main_web_contents()->GetURL(). 807 ASSERT_TRUE(main_web_contents()->GetURL().
812 SchemeIs(content::kChromeDevToolsScheme)); 808 SchemeIs(content::kChromeDevToolsScheme));
813 ASSERT_EQ(url, GetInspectedTab()->GetURL()); 809 ASSERT_EQ(url, GetInspectedTab()->GetURL());
814 CloseDevToolsWindow(); 810 CloseDevToolsWindow();
815 } 811 }
816 812
817 // Tests that toolbox window is loaded when DevTools window is undocked. 813 // Tests that toolbox window is loaded when DevTools window is undocked.
818 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxLoadedUndocked) { 814 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxLoadedUndocked) {
819 OpenDevToolsWindow(kDebuggerTestPage, false); 815 OpenDevToolsWindow(kDebuggerTestPage, false);
820 ASSERT_TRUE(toolbox_web_contents()); 816 ASSERT_TRUE(toolbox_web_contents());
821 DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync( 817 DevToolsWindow* on_self =
822 main_web_contents()->GetRenderViewHost(), false); 818 DevToolsWindowTesting::OpenDevToolsWindowSync(main_web_contents(), false);
823 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents()); 819 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents());
824 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self); 820 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self);
825 CloseDevToolsWindow(); 821 CloseDevToolsWindow();
826 } 822 }
827 823
828 // Tests that toolbox window is not loaded when DevTools window is docked. 824 // Tests that toolbox window is not loaded when DevTools window is docked.
829 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxNotLoadedDocked) { 825 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestToolboxNotLoadedDocked) {
830 OpenDevToolsWindow(kDebuggerTestPage, true); 826 OpenDevToolsWindow(kDebuggerTestPage, true);
831 ASSERT_FALSE(toolbox_web_contents()); 827 ASSERT_FALSE(toolbox_web_contents());
832 DevToolsWindow* on_self = DevToolsWindowTesting::OpenDevToolsWindowSync( 828 DevToolsWindow* on_self =
833 main_web_contents()->GetRenderViewHost(), false); 829 DevToolsWindowTesting::OpenDevToolsWindowSync(main_web_contents(), false);
834 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents()); 830 ASSERT_FALSE(DevToolsWindowTesting::Get(on_self)->toolbox_web_contents());
835 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self); 831 DevToolsWindowTesting::CloseDevToolsWindowSync(on_self);
836 CloseDevToolsWindow(); 832 CloseDevToolsWindow();
837 } 833 }
838 834
839 // Tests that inspector will reattach to inspected page when it is reloaded 835 // Tests that inspector will reattach to inspected page when it is reloaded
840 // after a crash. See http://crbug.com/101952 836 // after a crash. See http://crbug.com/101952
841 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestReattachAfterCrash) { 837 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestReattachAfterCrash) {
842 RunTest("testReattachAfterCrash", std::string()); 838 RunTest("testReattachAfterCrash", std::string());
843 } 839 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 // Wait until worker script is paused on the debugger statement. 885 // Wait until worker script is paused on the debugger statement.
890 RunTestFunction(window_, "testPauseInSharedWorkerInitialization"); 886 RunTestFunction(window_, "testPauseInSharedWorkerInitialization");
891 CloseDevToolsWindow(); 887 CloseDevToolsWindow();
892 } 888 }
893 889
894 class DevToolsAgentHostTest : public InProcessBrowserTest {}; 890 class DevToolsAgentHostTest : public InProcessBrowserTest {};
895 891
896 // Tests DevToolsAgentHost retention by its target. 892 // Tests DevToolsAgentHost retention by its target.
897 IN_PROC_BROWSER_TEST_F(DevToolsAgentHostTest, TestAgentHostReleased) { 893 IN_PROC_BROWSER_TEST_F(DevToolsAgentHostTest, TestAgentHostReleased) {
898 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); 894 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
899 RenderViewHost* rvh = browser()->tab_strip_model()->GetWebContentsAt(0)-> 895 WebContents* web_contents = browser()->tab_strip_model()->GetWebContentsAt(0);
900 GetRenderViewHost(); 896 DevToolsAgentHost* agent_raw =
901 DevToolsAgentHost* agent_raw = DevToolsAgentHost::GetOrCreateFor(rvh).get(); 897 DevToolsAgentHost::GetOrCreateFor(web_contents).get();
902 const std::string agent_id = agent_raw->GetId(); 898 const std::string agent_id = agent_raw->GetId();
903 ASSERT_EQ(agent_raw, DevToolsAgentHost::GetForId(agent_id)) << 899 ASSERT_EQ(agent_raw, DevToolsAgentHost::GetForId(agent_id)) <<
904 "DevToolsAgentHost cannot be found by id"; 900 "DevToolsAgentHost cannot be found by id";
905 browser()->tab_strip_model()-> 901 browser()->tab_strip_model()->
906 CloseWebContentsAt(0, TabStripModel::CLOSE_NONE); 902 CloseWebContentsAt(0, TabStripModel::CLOSE_NONE);
907 ASSERT_FALSE(DevToolsAgentHost::GetForId(agent_id).get()) 903 ASSERT_FALSE(DevToolsAgentHost::GetForId(agent_id).get())
908 << "DevToolsAgentHost is not released when the tab is closed"; 904 << "DevToolsAgentHost is not released when the tab is closed";
909 } 905 }
910 906
911 class RemoteDebuggingTest: public ExtensionApiTest { 907 class RemoteDebuggingTest: public ExtensionApiTest {
912 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 908 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
913 ExtensionApiTest::SetUpCommandLine(command_line); 909 ExtensionApiTest::SetUpCommandLine(command_line);
914 command_line->AppendSwitchASCII(switches::kRemoteDebuggingPort, "9222"); 910 command_line->AppendSwitchASCII(switches::kRemoteDebuggingPort, "9222");
915 911
916 // Override the extension root path. 912 // Override the extension root path.
917 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_); 913 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_);
918 test_data_dir_ = test_data_dir_.AppendASCII("devtools"); 914 test_data_dir_ = test_data_dir_.AppendASCII("devtools");
919 } 915 }
920 }; 916 };
921 917
922 IN_PROC_BROWSER_TEST_F(RemoteDebuggingTest, RemoteDebugger) { 918 IN_PROC_BROWSER_TEST_F(RemoteDebuggingTest, RemoteDebugger) {
923 #if defined(OS_WIN) && defined(USE_ASH) 919 #if defined(OS_WIN) && defined(USE_ASH)
924 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 920 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
925 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 921 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
926 return; 922 return;
927 #endif 923 #endif
928 924
929 ASSERT_TRUE(RunExtensionTest("target_list")) << message_; 925 ASSERT_TRUE(RunExtensionTest("target_list")) << message_;
930 } 926 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698