OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/test/remoting/remote_desktop_browsertest.h" | 5 #include "chrome/test/remoting/remote_desktop_browsertest.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
159 extensions::Manifest::Type type = extension_->GetType(); | 159 extensions::Manifest::Type type = extension_->GetType(); |
160 EXPECT_TRUE(type == extensions::Manifest::TYPE_PLATFORM_APP || | 160 EXPECT_TRUE(type == extensions::Manifest::TYPE_PLATFORM_APP || |
161 type == extensions::Manifest::TYPE_LEGACY_PACKAGED_APP); | 161 type == extensions::Manifest::TYPE_LEGACY_PACKAGED_APP); |
162 | 162 |
163 EXPECT_TRUE(extension_->ShouldDisplayInAppLauncher()); | 163 EXPECT_TRUE(extension_->ShouldDisplayInAppLauncher()); |
164 } | 164 } |
165 | 165 |
166 ASSERT_EQ(installed, expected); | 166 ASSERT_EQ(installed, expected); |
167 } | 167 } |
168 | 168 |
169 void RemoteDesktopBrowserTest::LaunchChromotingApp() { | 169 void RemoteDesktopBrowserTest::LaunchChromotingApp(bool defer_start) { |
170 ASSERT_TRUE(extension_); | 170 ASSERT_TRUE(extension_); |
171 | 171 |
172 GURL chromoting_main = Chromoting_Main_URL(); | 172 GURL chromoting_main = Chromoting_Main_URL(); |
173 // We cannot simply wait for any page load because the first page | 173 // We cannot simply wait for any page load because the first page |
174 // loaded could be the generated background page. We need to wait | 174 // loaded could be the generated background page. We need to wait |
175 // till the chromoting main page is loaded. | 175 // till the chromoting main page is loaded. |
176 PageLoadNotificationObserver observer(chromoting_main); | 176 PageLoadNotificationObserver observer(chromoting_main); |
177 observer.set_ignore_url_parameters(true); | |
178 | |
179 extensions::FeatureSwitch::ScopedOverride enable_trace_app_source( | |
180 extensions::FeatureSwitch::trace_app_source(), | |
181 true); | |
182 | |
183 // Lacking any other convenient mechanism for passing a URL parameter to the | |
184 // web-app, we use the |source| field. Since there's no way to launch the | |
185 // app from the About page, this should never be encountered by real users, | |
186 // even if they have the trace_app_source command-line option enabled. | |
Jamie
2014/12/02 01:30:13
cylee@: What I would like to do here is add a BROW
cylee1
2014/12/02 14:10:32
Adding a new enum BROWSER_TEST sounds much reasona
| |
187 extensions::AppLaunchSource source = | |
188 defer_start ? extensions::SOURCE_ABOUT_PAGE | |
189 : extensions::SOURCE_UNTRACKED; | |
177 | 190 |
178 OpenApplication(AppLaunchParams(browser()->profile(), extension_, | 191 OpenApplication(AppLaunchParams(browser()->profile(), extension_, |
179 is_platform_app() | 192 is_platform_app() |
180 ? extensions::LAUNCH_CONTAINER_NONE | 193 ? extensions::LAUNCH_CONTAINER_NONE |
181 : extensions::LAUNCH_CONTAINER_TAB, | 194 : extensions::LAUNCH_CONTAINER_TAB, |
182 is_platform_app() ? NEW_WINDOW : CURRENT_TAB, | 195 is_platform_app() ? NEW_WINDOW : CURRENT_TAB, |
183 extensions::SOURCE_UNTRACKED)); | 196 source)); |
184 | 197 |
185 observer.Wait(); | 198 observer.Wait(); |
186 | 199 |
187 | 200 |
188 // The active WebContents instance should be the source of the LOAD_STOP | 201 // The active WebContents instance should be the source of the LOAD_STOP |
189 // notification. | 202 // notification. |
190 content::NavigationController* controller = | 203 content::NavigationController* controller = |
191 content::Source<content::NavigationController>(observer.source()).ptr(); | 204 content::Source<content::NavigationController>(observer.source()).ptr(); |
192 | 205 |
193 content::WebContents* web_contents = controller->GetWebContents(); | 206 content::WebContents* web_contents = controller->GetWebContents(); |
194 if (web_contents != active_web_contents()) | 207 if (web_contents != active_web_contents()) |
195 web_contents_stack_.push_back(web_contents); | 208 web_contents_stack_.push_back(web_contents); |
196 | 209 |
197 app_web_content_ = web_contents; | 210 app_web_content_ = web_contents; |
198 | 211 |
199 if (is_platform_app()) { | 212 if (is_platform_app()) { |
200 EXPECT_EQ(GetFirstAppWindowWebContents(), active_web_contents()); | 213 EXPECT_EQ(GetFirstAppWindowWebContents(), active_web_contents()); |
201 } else { | 214 } else { |
202 // For apps v1 only, the DOMOperationObserver is not ready at the LOAD_STOP | 215 // For apps v1 only, the DOMOperationObserver is not ready at the LOAD_STOP |
203 // event. A half second wait is necessary for the subsequent javascript | 216 // event. A half second wait is necessary for the subsequent javascript |
204 // injection to work. | 217 // injection to work. |
205 // TODO(weitaosu): Find out whether there is a more appropriate notification | 218 // TODO(weitaosu): Find out whether there is a more appropriate notification |
206 // to wait for so we can get rid of this wait. | 219 // to wait for so we can get rid of this wait. |
207 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(5)).Wait()); | 220 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(5)).Wait()); |
208 } | 221 } |
209 | 222 |
210 EXPECT_EQ(Chromoting_Main_URL(), GetCurrentURL()); | 223 EXPECT_EQ(Chromoting_Main_URL(), GetCurrentURL()); |
211 } | 224 } |
212 | 225 |
226 void RemoteDesktopBrowserTest::StartChromotingApp() { | |
227 ClickOnControl("browser-test-continue-init"); | |
228 }; | |
229 | |
213 void RemoteDesktopBrowserTest::Authorize() { | 230 void RemoteDesktopBrowserTest::Authorize() { |
214 // The chromoting extension should be installed. | 231 // The chromoting extension should be installed. |
215 ASSERT_TRUE(extension_); | 232 ASSERT_TRUE(extension_); |
216 | 233 |
217 // The chromoting main page should be loaded in the current tab | 234 // The chromoting main page should be loaded in the current tab |
218 // and isAuthenticated() should be false (auth dialog visible). | 235 // and isAuthenticated() should be false (auth dialog visible). |
219 ASSERT_EQ(Chromoting_Main_URL(), GetCurrentURL()); | 236 ASSERT_EQ(Chromoting_Main_URL(), GetCurrentURL()); |
220 ASSERT_FALSE(IsAuthenticated()); | 237 ASSERT_FALSE(IsAuthenticated()); |
221 | 238 |
222 // The second observer monitors the loading of the Google login page. | 239 // The second observer monitors the loading of the Google login page. |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
458 // TODO(chaitali): Remove this additional timeout after we figure out | 475 // TODO(chaitali): Remove this additional timeout after we figure out |
459 // why this is needed for the v1 app to work. | 476 // why this is needed for the v1 app to work. |
460 // Without this timeout the test fail with a "CloseWebContents called for | 477 // Without this timeout the test fail with a "CloseWebContents called for |
461 // tab not in our strip" error for the v1 app. | 478 // tab not in our strip" error for the v1 app. |
462 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(2)).Wait()); | 479 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(2)).Wait()); |
463 } | 480 } |
464 | 481 |
465 void RemoteDesktopBrowserTest::SetUpTestForMe2Me() { | 482 void RemoteDesktopBrowserTest::SetUpTestForMe2Me() { |
466 VerifyInternetAccess(); | 483 VerifyInternetAccess(); |
467 Install(); | 484 Install(); |
468 LaunchChromotingApp(); | 485 LaunchChromotingApp(false); |
469 Auth(); | 486 Auth(); |
470 LoadScript(app_web_content(), FILE_PATH_LITERAL("browser_test.js")); | 487 LoadScript(app_web_content(), FILE_PATH_LITERAL("browser_test.js")); |
471 ExpandMe2Me(); | 488 ExpandMe2Me(); |
472 // The call to EnsureRemoteConnectionEnabled() does a PIN reset. | 489 // The call to EnsureRemoteConnectionEnabled() does a PIN reset. |
473 // This causes the test to fail because of a recent bug: | 490 // This causes the test to fail because of a recent bug: |
474 // crbug.com/430676 | 491 // crbug.com/430676 |
475 // TODO(anandc): Reactivate this call after above bug is fixed. | 492 // TODO(anandc): Reactivate this call after above bug is fixed. |
476 //EnsureRemoteConnectionEnabled(); | 493 //EnsureRemoteConnectionEnabled(); |
477 } | 494 } |
478 | 495 |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
887 // static | 904 // static |
888 bool RemoteDesktopBrowserTest::IsEnabled( | 905 bool RemoteDesktopBrowserTest::IsEnabled( |
889 content::WebContents* client_web_content, | 906 content::WebContents* client_web_content, |
890 const std::string& element_name) { | 907 const std::string& element_name) { |
891 return !ExecuteScriptAndExtractBool( | 908 return !ExecuteScriptAndExtractBool( |
892 client_web_content, | 909 client_web_content, |
893 "document.getElementById(\"" + element_name + "\").disabled"); | 910 "document.getElementById(\"" + element_name + "\").disabled"); |
894 } | 911 } |
895 | 912 |
896 } // namespace remoting | 913 } // namespace remoting |
OLD | NEW |