| 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 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 // active_web_contents() is still the login window but the observer | 302 // active_web_contents() is still the login window but the observer |
| 303 // should be set up to observe the chromoting window because that is | 303 // should be set up to observe the chromoting window because that is |
| 304 // where we'll receive the message from the login window and reload the | 304 // where we'll receive the message from the login window and reload the |
| 305 // chromoting app. | 305 // chromoting app. |
| 306 content::WindowedNotificationObserver observer( | 306 content::WindowedNotificationObserver observer( |
| 307 content::NOTIFICATION_LOAD_STOP, | 307 content::NOTIFICATION_LOAD_STOP, |
| 308 base::Bind( | 308 base::Bind( |
| 309 &RemoteDesktopBrowserTest::IsAuthenticatedInWindow, | 309 &RemoteDesktopBrowserTest::IsAuthenticatedInWindow, |
| 310 browser()->tab_strip_model()->GetActiveWebContents())); | 310 browser()->tab_strip_model()->GetActiveWebContents())); |
| 311 | 311 |
| 312 ExecuteScript( | 312 // Click to Approve the web-app. |
| 313 "lso.approveButtonAction();" | 313 ClickOnControl("submit_approve_access"); |
| 314 "document.forms[\"connect-approve\"].submit();"); | |
| 315 | 314 |
| 316 observer.Wait(); | 315 observer.Wait(); |
| 317 | 316 |
| 318 // Popping the login window off the stack to return to the chromoting | 317 // Popping the login window off the stack to return to the chromoting |
| 319 // window. | 318 // window. |
| 320 web_contents_stack_.pop_back(); | 319 web_contents_stack_.pop_back(); |
| 321 } | 320 } |
| 322 | 321 |
| 323 ASSERT_TRUE(GetCurrentURL() == Chromoting_Main_URL()); | 322 ASSERT_TRUE(GetCurrentURL() == Chromoting_Main_URL()); |
| 324 | 323 |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 ASSERT_TRUE(dict_value->GetBoolean("succeeded", &succeeded)); | 700 ASSERT_TRUE(dict_value->GetBoolean("succeeded", &succeeded)); |
| 702 ASSERT_TRUE(dict_value->GetString("error_message", &error_message)); | 701 ASSERT_TRUE(dict_value->GetString("error_message", &error_message)); |
| 703 ASSERT_TRUE(dict_value->GetString("stack_trace", &stack_trace)); | 702 ASSERT_TRUE(dict_value->GetString("stack_trace", &stack_trace)); |
| 704 | 703 |
| 705 EXPECT_TRUE(succeeded) << error_message << "\n" << stack_trace; | 704 EXPECT_TRUE(succeeded) << error_message << "\n" << stack_trace; |
| 706 } | 705 } |
| 707 | 706 |
| 708 void RemoteDesktopBrowserTest::ClickOnControl(const std::string& name) { | 707 void RemoteDesktopBrowserTest::ClickOnControl(const std::string& name) { |
| 709 ASSERT_TRUE(HtmlElementVisible(name)); | 708 ASSERT_TRUE(HtmlElementVisible(name)); |
| 710 | 709 |
| 710 ConditionalTimeoutWaiter waiter( |
| 711 base::TimeDelta::FromSeconds(5), |
| 712 base::TimeDelta::FromMilliseconds(500), |
| 713 base::Bind(&RemoteDesktopBrowserTest::IsEnabled, |
| 714 active_web_contents(), name)); |
| 715 ASSERT_TRUE(waiter.Wait()); |
| 716 |
| 711 ExecuteScript("document.getElementById(\"" + name + "\").click();"); | 717 ExecuteScript("document.getElementById(\"" + name + "\").click();"); |
| 712 } | 718 } |
| 713 | 719 |
| 714 void RemoteDesktopBrowserTest::EnterPin(const std::string& pin, | 720 void RemoteDesktopBrowserTest::EnterPin(const std::string& pin, |
| 715 bool remember_pin) { | 721 bool remember_pin) { |
| 716 // Wait for the pin-form to be displayed. This can take a while. | 722 // Wait for the pin-form to be displayed. This can take a while. |
| 717 // We also need to dismiss the host-needs-update dialog if it comes up. | 723 // We also need to dismiss the host-needs-update dialog if it comes up. |
| 718 // TODO(weitaosu) 1: Instead of polling, can we register a callback to be | 724 // TODO(weitaosu) 1: Instead of polling, can we register a callback to be |
| 719 // called when the pin-form is ready? | 725 // called when the pin-form is ready? |
| 720 // TODO(weitaosu) 2: Instead of blindly dismiss the host-needs-update dialog, | 726 // TODO(weitaosu) 2: Instead of blindly dismiss the host-needs-update dialog, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 | 800 |
| 795 // static | 801 // static |
| 796 bool RemoteDesktopBrowserTest::IsHostActionComplete( | 802 bool RemoteDesktopBrowserTest::IsHostActionComplete( |
| 797 content::WebContents* client_web_content, | 803 content::WebContents* client_web_content, |
| 798 std::string host_action_var) { | 804 std::string host_action_var) { |
| 799 return ExecuteScriptAndExtractBool( | 805 return ExecuteScriptAndExtractBool( |
| 800 client_web_content, | 806 client_web_content, |
| 801 host_action_var); | 807 host_action_var); |
| 802 } | 808 } |
| 803 | 809 |
| 810 // static |
| 811 bool RemoteDesktopBrowserTest::IsEnabled( |
| 812 content::WebContents* client_web_content, |
| 813 const std::string& element_name) { |
| 814 return !ExecuteScriptAndExtractBool( |
| 815 client_web_content, |
| 816 "document.getElementById(\"" + element_name + "\").disabled"); |
| 817 } |
| 818 |
| 804 } // namespace remoting | 819 } // namespace remoting |
| OLD | NEW |