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

Side by Side Diff: chrome/test/remoting/remote_desktop_browsertest.cc

Issue 838543002: Implement browser test for It2Me (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix merge conflicts Created 5 years, 11 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
OLDNEW
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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 extensions::Manifest::Type type = extension_->GetType(); 162 extensions::Manifest::Type type = extension_->GetType();
163 EXPECT_TRUE(type == extensions::Manifest::TYPE_PLATFORM_APP || 163 EXPECT_TRUE(type == extensions::Manifest::TYPE_PLATFORM_APP ||
164 type == extensions::Manifest::TYPE_LEGACY_PACKAGED_APP); 164 type == extensions::Manifest::TYPE_LEGACY_PACKAGED_APP);
165 165
166 EXPECT_TRUE(extension_->ShouldDisplayInAppLauncher()); 166 EXPECT_TRUE(extension_->ShouldDisplayInAppLauncher());
167 } 167 }
168 168
169 ASSERT_EQ(installed, expected); 169 ASSERT_EQ(installed, expected);
170 } 170 }
171 171
172 void RemoteDesktopBrowserTest::LaunchChromotingApp(bool defer_start) { 172 content::WebContents* RemoteDesktopBrowserTest::LaunchChromotingApp(
173 ASSERT_TRUE(extension_); 173 bool defer_start,
174 WindowOpenDisposition window_open_disposition) {
175 _ASSERT_TRUE(extension_);
174 176
175 GURL chromoting_main = Chromoting_Main_URL(); 177 GURL chromoting_main = Chromoting_Main_URL();
176 // We cannot simply wait for any page load because the first page 178 // We cannot simply wait for any page load because the first page
177 // loaded could be the generated background page. We need to wait 179 // loaded could be the generated background page. We need to wait
178 // till the chromoting main page is loaded. 180 // till the chromoting main page is loaded.
179 PageLoadNotificationObserver observer(chromoting_main); 181 PageLoadNotificationObserver observer(chromoting_main);
180 observer.set_ignore_url_parameters(true); 182 observer.set_ignore_url_parameters(true);
181 183
182 // If the app should be started in deferred mode, ensure that a "source" URL 184 // If the app should be started in deferred mode, ensure that a "source" URL
183 // parameter; if not, ensure that no such parameter is present. The value of 185 // parameter; if not, ensure that no such parameter is present. The value of
184 // the parameter is determined by the AppLaunchParams ("test", in this case). 186 // the parameter is determined by the AppLaunchParams ("test", in this case).
185 extensions::FeatureSwitch::ScopedOverride override_trace_app_source( 187 extensions::FeatureSwitch::ScopedOverride override_trace_app_source(
186 extensions::FeatureSwitch::trace_app_source(), 188 extensions::FeatureSwitch::trace_app_source(),
187 defer_start); 189 defer_start);
188 190
191 if (is_platform_app()) {
192 window_open_disposition = NEW_WINDOW;
193 }
194
189 OpenApplication(AppLaunchParams(browser()->profile(), extension_, 195 OpenApplication(AppLaunchParams(browser()->profile(), extension_,
190 is_platform_app() 196 is_platform_app()
191 ? extensions::LAUNCH_CONTAINER_NONE 197 ? extensions::LAUNCH_CONTAINER_NONE
192 : extensions::LAUNCH_CONTAINER_TAB, 198 : extensions::LAUNCH_CONTAINER_TAB,
193 is_platform_app() ? NEW_WINDOW : CURRENT_TAB, 199 window_open_disposition,
194 extensions::SOURCE_TEST)); 200 extensions::SOURCE_TEST));
195 201
196 observer.Wait(); 202 observer.Wait();
197 203
198 204
199 // The active WebContents instance should be the source of the LOAD_STOP 205 // The active WebContents instance should be the source of the LOAD_STOP
200 // notification. 206 // notification.
201 content::NavigationController* controller = 207 content::NavigationController* controller =
202 content::Source<content::NavigationController>(observer.source()).ptr(); 208 content::Source<content::NavigationController>(observer.source()).ptr();
203 209
204 content::WebContents* web_contents = controller->GetWebContents(); 210 content::WebContents* web_contents = controller->GetWebContents();
211 _ASSERT_TRUE(web_contents);
212
205 if (web_contents != active_web_contents()) 213 if (web_contents != active_web_contents())
206 web_contents_stack_.push_back(web_contents); 214 web_contents_stack_.push_back(web_contents);
207 215
208 app_web_content_ = web_contents;
209
210 if (is_platform_app()) { 216 if (is_platform_app()) {
211 EXPECT_EQ(GetFirstAppWindowWebContents(), active_web_contents()); 217 EXPECT_EQ(GetFirstAppWindowWebContents(), active_web_contents());
212 } else { 218 } else {
213 // For apps v1 only, the DOMOperationObserver is not ready at the LOAD_STOP 219 // For apps v1 only, the DOMOperationObserver is not ready at the LOAD_STOP
214 // event. A half second wait is necessary for the subsequent javascript 220 // event. A half second wait is necessary for the subsequent javascript
215 // injection to work. 221 // injection to work.
216 // TODO(weitaosu): Find out whether there is a more appropriate notification 222 // TODO(weitaosu): Find out whether there is a more appropriate notification
217 // to wait for so we can get rid of this wait. 223 // to wait for so we can get rid of this wait.
218 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(5)).Wait()); 224 _ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(5)).Wait());
219 } 225 }
220 226
221 EXPECT_EQ(Chromoting_Main_URL(), GetCurrentURL()); 227 EXPECT_EQ(Chromoting_Main_URL(), GetCurrentURL());
228 return web_contents;
229 }
230
231 content::WebContents* RemoteDesktopBrowserTest::LaunchChromotingApp(
232 bool defer_start) {
233 return LaunchChromotingApp(defer_start, CURRENT_TAB);
222 } 234 }
223 235
224 void RemoteDesktopBrowserTest::StartChromotingApp() { 236 void RemoteDesktopBrowserTest::StartChromotingApp() {
225 ClickOnControl("browser-test-continue-init"); 237 ClickOnControl("browser-test-continue-init");
226 }; 238 };
227 239
228 void RemoteDesktopBrowserTest::Authorize() { 240 void RemoteDesktopBrowserTest::Authorize() {
229 // The chromoting extension should be installed. 241 // The chromoting extension should be installed.
230 ASSERT_TRUE(extension_); 242 ASSERT_TRUE(extension_);
231 243
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 VerifyChromotingLoaded(false); 490 VerifyChromotingLoaded(false);
479 } 491 }
480 492
481 // TODO(chaitali): Remove this additional timeout after we figure out 493 // TODO(chaitali): Remove this additional timeout after we figure out
482 // why this is needed for the v1 app to work. 494 // why this is needed for the v1 app to work.
483 // Without this timeout the test fail with a "CloseWebContents called for 495 // Without this timeout the test fail with a "CloseWebContents called for
484 // tab not in our strip" error for the v1 app. 496 // tab not in our strip" error for the v1 app.
485 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(2)).Wait()); 497 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(2)).Wait());
486 } 498 }
487 499
488 void RemoteDesktopBrowserTest::SetUpTestForMe2Me() { 500 content::WebContents* RemoteDesktopBrowserTest::SetUpTest() {
489 VerifyInternetAccess(); 501 VerifyInternetAccess();
490 Install(); 502 Install();
491 LaunchChromotingApp(false); 503 content::WebContents* app_web_content = LaunchChromotingApp(false);
492 LoadBrowserTestJavaScript(app_web_content());
493 Auth(); 504 Auth();
505 LoadBrowserTestJavaScript(app_web_content);
494 ExpandMe2Me(); 506 ExpandMe2Me();
495 // The call to EnsureRemoteConnectionEnabled() does a PIN reset. 507 // The call to EnsureRemoteConnectionEnabled() does a PIN reset.
496 // This causes the test to fail because of a recent bug: 508 // This causes the test to fail because of a recent bug:
497 // crbug.com/430676 509 // crbug.com/430676
498 // TODO(anandc): Reactivate this call after above bug is fixed. 510 // TODO(anandc): Reactivate this call after above bug is fixed.
499 //EnsureRemoteConnectionEnabled(); 511 //EnsureRemoteConnectionEnabled(app_web_content);
512 return app_web_content;
500 } 513 }
501 514
502 void RemoteDesktopBrowserTest::Auth() { 515 void RemoteDesktopBrowserTest::Auth() {
503 // For this test, we must be given the user-name and password. 516 // For this test, we must be given the user-name and password.
504 ASSERT_TRUE(!username_.empty() && !password_.empty()); 517 ASSERT_TRUE(!username_.empty() && !password_.empty());
505 518
506 Authorize(); 519 Authorize();
507 Authenticate(); 520 Authenticate();
508 Approve(); 521 Approve();
509 } 522 }
510 523
511 void RemoteDesktopBrowserTest::EnsureRemoteConnectionEnabled() { 524 void RemoteDesktopBrowserTest::EnsureRemoteConnectionEnabled(
525 content::WebContents* app_web_contents) {
512 // browser_test.ensureRemoteConnectionEnabled is defined in 526 // browser_test.ensureRemoteConnectionEnabled is defined in
513 // browser_test.js, which must be loaded before calling this function. 527 // browser_test.js, which must be loaded before calling this function.
514 // TODO(kelvinp): This function currently only works on linux when the user is 528 // TODO(kelvinp): This function currently only works on linux when the user is
515 // already part of the chrome-remote-desktop group. Extend this functionality 529 // already part of the chrome-remote-desktop group. Extend this functionality
516 // to Mac (https://crbug.com/397576) and Windows (https://crbug.com/397575). 530 // to Mac (https://crbug.com/397576) and Windows (https://crbug.com/397575).
517 bool result; 531 bool result;
518 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 532 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
519 app_web_content(), 533 app_web_contents,
520 "browserTest.ensureRemoteConnectionEnabled(" + me2me_pin() + ")", 534 "browserTest.ensureRemoteConnectionEnabled(" + me2me_pin() + ")",
521 &result)); 535 &result));
522 EXPECT_TRUE(result) << "Cannot start the host with Pin:" << me2me_pin(); 536 EXPECT_TRUE(result) << "Cannot start the host with Pin:" << me2me_pin();
523 } 537 }
524 538
525 void RemoteDesktopBrowserTest::ConnectToLocalHost(bool remember_pin) { 539 void RemoteDesktopBrowserTest::ConnectToLocalHost(bool remember_pin) {
526 // Wait for local-host to be ready. 540 // Wait for local-host to be ready.
527 ConditionalTimeoutWaiter waiter( 541 ConditionalTimeoutWaiter waiter(
528 base::TimeDelta::FromSeconds(5), 542 base::TimeDelta::FromSeconds(5),
529 base::TimeDelta::FromMilliseconds(500), 543 base::TimeDelta::FromMilliseconds(500),
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 // static 888 // static
875 bool RemoteDesktopBrowserTest::IsEnabled( 889 bool RemoteDesktopBrowserTest::IsEnabled(
876 content::WebContents* client_web_content, 890 content::WebContents* client_web_content,
877 const std::string& element_name) { 891 const std::string& element_name) {
878 return !RemoteTestHelper::ExecuteScriptAndExtractBool( 892 return !RemoteTestHelper::ExecuteScriptAndExtractBool(
879 client_web_content, 893 client_web_content,
880 "document.getElementById(\"" + element_name + "\").disabled"); 894 "document.getElementById(\"" + element_name + "\").disabled");
881 } 895 }
882 896
883 } // namespace remoting 897 } // namespace remoting
OLDNEW
« no previous file with comments | « chrome/test/remoting/remote_desktop_browsertest.h ('k') | chrome/test/remoting/scrollbar_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698