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

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

Issue 807343002: Adding the first set of remote test cases and associated framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing comments and merge issues. 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 11 matching lines...) Expand all
22 #include "extensions/browser/extension_registry.h" 22 #include "extensions/browser/extension_registry.h"
23 #include "extensions/common/constants.h" 23 #include "extensions/common/constants.h"
24 #include "extensions/common/extension.h" 24 #include "extensions/common/extension.h"
25 #include "extensions/common/extension_set.h" 25 #include "extensions/common/extension_set.h"
26 #include "extensions/common/switches.h" 26 #include "extensions/common/switches.h"
27 #include "ui/base/window_open_disposition.h" 27 #include "ui/base/window_open_disposition.h"
28 28
29 namespace remoting { 29 namespace remoting {
30 30
31 RemoteDesktopBrowserTest::RemoteDesktopBrowserTest() 31 RemoteDesktopBrowserTest::RemoteDesktopBrowserTest()
32 : extension_(NULL) { 32 : remote_test_helper_(nullptr), extension_(nullptr) {
33 } 33 }
34 34
35 RemoteDesktopBrowserTest::~RemoteDesktopBrowserTest() {} 35 RemoteDesktopBrowserTest::~RemoteDesktopBrowserTest() {}
36 36
37 void RemoteDesktopBrowserTest::SetUp() { 37 void RemoteDesktopBrowserTest::SetUp() {
38 ParseCommandLine(); 38 ParseCommandLine();
39 PlatformAppBrowserTest::SetUp(); 39 PlatformAppBrowserTest::SetUp();
40 } 40 }
41 41
42 void RemoteDesktopBrowserTest::SetUpOnMainThread() { 42 void RemoteDesktopBrowserTest::SetUpOnMainThread() {
(...skipping 22 matching lines...) Expand all
65 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 65 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
66 browser(), GURL("http://www.google.com"), 1); 66 browser(), GURL("http://www.google.com"), 1);
67 67
68 EXPECT_EQ(GetCurrentURL().host(), "www.google.com"); 68 EXPECT_EQ(GetCurrentURL().host(), "www.google.com");
69 } 69 }
70 70
71 void RemoteDesktopBrowserTest::OpenClientBrowserPage() { 71 void RemoteDesktopBrowserTest::OpenClientBrowserPage() {
72 // Open the client browser page in a new tab 72 // Open the client browser page in a new tab
73 ui_test_utils::NavigateToURLWithDisposition( 73 ui_test_utils::NavigateToURLWithDisposition(
74 browser(), 74 browser(),
75 GURL(http_server() + "/clientpage.html"), 75 GURL(http_server() + "/client.html"),
76 NEW_FOREGROUND_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); 76 NEW_FOREGROUND_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
77 77
78 // Save this web content for later reference 78 // Save this web content for later reference
79 client_web_content_ = browser()->tab_strip_model()->GetActiveWebContents(); 79 client_web_content_ = browser()->tab_strip_model()->GetActiveWebContents();
80 80
81 // Go back to the previous tab that has chromoting opened 81 // Go back to the previous tab that has chromoting opened
82 browser()->tab_strip_model()->SelectPreviousTab(); 82 browser()->tab_strip_model()->SelectPreviousTab();
83
84 // Create the RemoteTestHelper object to use.
85 remote_test_helper_.reset(new RemoteTestHelper(client_web_content_));
83 } 86 }
84 87
85 bool RemoteDesktopBrowserTest::HtmlElementVisible(const std::string& name) { 88 bool RemoteDesktopBrowserTest::HtmlElementVisible(const std::string& name) {
86 _ASSERT_TRUE(HtmlElementExists(name)); 89 _ASSERT_TRUE(HtmlElementExists(name));
87 90
88 ExecuteScript( 91 ExecuteScript(
89 "function isElementVisible(name) {" 92 "function isElementVisible(name) {"
90 " var element = document.getElementById(name);" 93 " var element = document.getElementById(name);"
91 " /* The existence of the element has already been ASSERTed. */" 94 " /* The existence of the element has already been ASSERTed. */"
92 " do {" 95 " do {"
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 content::Source<content::NavigationController>( 661 content::Source<content::NavigationController>(
659 &active_web_contents()-> 662 &active_web_contents()->
660 GetController())); 663 GetController()));
661 664
662 ExecuteScript(script); 665 ExecuteScript(script);
663 666
664 observer.Wait(); 667 observer.Wait();
665 } 668 }
666 669
667 // static 670 // static
668 bool RemoteDesktopBrowserTest::ExecuteScriptAndExtractBool(
669 content::WebContents* web_contents, const std::string& script) {
670 bool result;
671 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
672 web_contents,
673 "window.domAutomationController.send(" + script + ");",
674 &result));
675
676 return result;
677 }
678
679 // static
680 int RemoteDesktopBrowserTest::ExecuteScriptAndExtractInt(
681 content::WebContents* web_contents, const std::string& script) {
682 int result;
683 _ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
684 web_contents,
685 "window.domAutomationController.send(" + script + ");",
686 &result));
687
688 return result;
689 }
690
691 // static
692 std::string RemoteDesktopBrowserTest::ExecuteScriptAndExtractString(
693 content::WebContents* web_contents, const std::string& script) {
694 std::string result;
695 _ASSERT_TRUE(content::ExecuteScriptAndExtractString(
696 web_contents,
697 "window.domAutomationController.send(" + script + ");",
698 &result));
699
700 return result;
701 }
702
703 // static
704 bool RemoteDesktopBrowserTest::LoadScript( 671 bool RemoteDesktopBrowserTest::LoadScript(
705 content::WebContents* web_contents, 672 content::WebContents* web_contents,
706 const base::FilePath::StringType& path) { 673 const base::FilePath::StringType& path) {
707 std::string script; 674 std::string script;
708 base::FilePath src_dir; 675 base::FilePath src_dir;
709 _ASSERT_TRUE(PathService::Get(base::DIR_EXE, &src_dir)); 676 _ASSERT_TRUE(PathService::Get(base::DIR_EXE, &src_dir));
710 base::FilePath script_path = src_dir.Append(path); 677 base::FilePath script_path = src_dir.Append(path);
711 678
712 if (!base::ReadFileToString(script_path, &script)) { 679 if (!base::ReadFileToString(script_path, &script)) {
713 LOG(ERROR) << "Failed to load script " << script_path.value(); 680 LOG(ERROR) << "Failed to load script " << script_path.value();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 718
752 EXPECT_TRUE(succeeded) << error_message << "\n" << stack_trace; 719 EXPECT_TRUE(succeeded) << error_message << "\n" << stack_trace;
753 } 720 }
754 721
755 void RemoteDesktopBrowserTest::ClickOnControl(const std::string& name) { 722 void RemoteDesktopBrowserTest::ClickOnControl(const std::string& name) {
756 ASSERT_TRUE(HtmlElementVisible(name)); 723 ASSERT_TRUE(HtmlElementVisible(name));
757 724
758 std::string has_disabled_attribute = 725 std::string has_disabled_attribute =
759 "document.getElementById('" + name + "').hasAttribute('disabled')"; 726 "document.getElementById('" + name + "').hasAttribute('disabled')";
760 727
761 if (ExecuteScriptAndExtractBool(active_web_contents(), 728 if (RemoteTestHelper::ExecuteScriptAndExtractBool(active_web_contents(),
762 has_disabled_attribute)) { 729 has_disabled_attribute)) {
763 // This element has a disabled attribute. Wait for it become enabled. 730 // This element has a disabled attribute. Wait for it become enabled.
764 ConditionalTimeoutWaiter waiter( 731 ConditionalTimeoutWaiter waiter(
765 base::TimeDelta::FromSeconds(5), 732 base::TimeDelta::FromSeconds(5),
766 base::TimeDelta::FromMilliseconds(500), 733 base::TimeDelta::FromMilliseconds(500),
767 base::Bind(&RemoteDesktopBrowserTest::IsEnabled, 734 base::Bind(&RemoteDesktopBrowserTest::IsEnabled,
768 active_web_contents(), name)); 735 active_web_contents(), name));
769 ASSERT_TRUE(waiter.Wait()); 736 ASSERT_TRUE(waiter.Wait());
770 } 737 }
771 738
772 ExecuteScript("document.getElementById(\"" + name + "\").click();"); 739 ExecuteScript("document.getElementById(\"" + name + "\").click();");
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 // Now get the dictionary for the specified account type. 839 // Now get the dictionary for the specified account type.
873 const base::DictionaryValue* account_dict = NULL; 840 const base::DictionaryValue* account_dict = NULL;
874 ASSERT_TRUE(root_dict->GetDictionary(account_type, &account_dict)); 841 ASSERT_TRUE(root_dict->GetDictionary(account_type, &account_dict));
875 ASSERT_TRUE(account_dict->GetString(kUserName, &username_)); 842 ASSERT_TRUE(account_dict->GetString(kUserName, &username_));
876 ASSERT_TRUE(account_dict->GetString(kUserPassword, &password_)); 843 ASSERT_TRUE(account_dict->GetString(kUserPassword, &password_));
877 } 844 }
878 845
879 // static 846 // static
880 bool RemoteDesktopBrowserTest::IsAuthenticatedInWindow( 847 bool RemoteDesktopBrowserTest::IsAuthenticatedInWindow(
881 content::WebContents* web_contents) { 848 content::WebContents* web_contents) {
882 return ExecuteScriptAndExtractBool( 849 return RemoteTestHelper::ExecuteScriptAndExtractBool(
883 web_contents, "remoting.identity.isAuthenticated()"); 850 web_contents, "remoting.identity.isAuthenticated()");
884 } 851 }
885 852
886 // static 853 // static
887 bool RemoteDesktopBrowserTest::IsHostActionComplete( 854 bool RemoteDesktopBrowserTest::IsHostActionComplete(
888 content::WebContents* client_web_content, 855 content::WebContents* client_web_content,
889 std::string host_action_var) { 856 std::string host_action_var) {
890 return ExecuteScriptAndExtractBool( 857 return RemoteTestHelper::ExecuteScriptAndExtractBool(
891 client_web_content, 858 client_web_content,
892 host_action_var); 859 host_action_var);
893 } 860 }
894 861
895 // static 862 // static
896 bool RemoteDesktopBrowserTest::IsEnabled( 863 bool RemoteDesktopBrowserTest::IsEnabled(
897 content::WebContents* client_web_content, 864 content::WebContents* client_web_content,
898 const std::string& element_name) { 865 const std::string& element_name) {
899 return !ExecuteScriptAndExtractBool( 866 return !RemoteTestHelper::ExecuteScriptAndExtractBool(
900 client_web_content, 867 client_web_content,
901 "document.getElementById(\"" + element_name + "\").disabled"); 868 "document.getElementById(\"" + element_name + "\").disabled");
902 } 869 }
903 870
904 } // namespace remoting 871 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698