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

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: 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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
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(bool defer_start) { 169 void RemoteDesktopBrowserTest::LaunchChromotingApp(
170 bool defer_start,
171 WindowOpenDisposition opt_window_open_disposition) {
170 ASSERT_TRUE(extension_); 172 ASSERT_TRUE(extension_);
171 173
172 GURL chromoting_main = Chromoting_Main_URL(); 174 GURL chromoting_main = Chromoting_Main_URL();
173 // We cannot simply wait for any page load because the first page 175 // We cannot simply wait for any page load because the first page
174 // loaded could be the generated background page. We need to wait 176 // loaded could be the generated background page. We need to wait
175 // till the chromoting main page is loaded. 177 // till the chromoting main page is loaded.
176 PageLoadNotificationObserver observer(chromoting_main); 178 PageLoadNotificationObserver observer(chromoting_main);
177 observer.set_ignore_url_parameters(true); 179 observer.set_ignore_url_parameters(true);
178 180
179 // If the app should be started in deferred mode, ensure that a "source" URL 181 // If the app should be started in deferred mode, ensure that a "source" URL
180 // parameter; if not, ensure that no such parameter is present. The value of 182 // parameter; if not, ensure that no such parameter is present. The value of
181 // the parameter is determined by the AppLaunchParams ("test", in this case). 183 // the parameter is determined by the AppLaunchParams ("test", in this case).
182 extensions::FeatureSwitch::ScopedOverride override_trace_app_source( 184 extensions::FeatureSwitch::ScopedOverride override_trace_app_source(
183 extensions::FeatureSwitch::trace_app_source(), 185 extensions::FeatureSwitch::trace_app_source(),
184 defer_start); 186 defer_start);
185 187
186 OpenApplication(AppLaunchParams(browser()->profile(), extension_, 188 OpenApplication(AppLaunchParams(browser()->profile(), extension_,
187 is_platform_app() 189 is_platform_app()
188 ? extensions::LAUNCH_CONTAINER_NONE 190 ? extensions::LAUNCH_CONTAINER_NONE
189 : extensions::LAUNCH_CONTAINER_TAB, 191 : extensions::LAUNCH_CONTAINER_TAB,
190 is_platform_app() ? NEW_WINDOW : CURRENT_TAB, 192 opt_window_open_disposition,
191 extensions::SOURCE_TEST)); 193 extensions::SOURCE_TEST));
192 194
193 observer.Wait(); 195 observer.Wait();
194 196
195 197
196 // The active WebContents instance should be the source of the LOAD_STOP 198 // The active WebContents instance should be the source of the LOAD_STOP
197 // notification. 199 // notification.
198 content::NavigationController* controller = 200 content::NavigationController* controller =
199 content::Source<content::NavigationController>(observer.source()).ptr(); 201 content::Source<content::NavigationController>(observer.source()).ptr();
200 202
(...skipping 10 matching lines...) Expand all
211 // event. A half second wait is necessary for the subsequent javascript 213 // event. A half second wait is necessary for the subsequent javascript
212 // injection to work. 214 // injection to work.
213 // TODO(weitaosu): Find out whether there is a more appropriate notification 215 // TODO(weitaosu): Find out whether there is a more appropriate notification
214 // to wait for so we can get rid of this wait. 216 // to wait for so we can get rid of this wait.
215 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(5)).Wait()); 217 ASSERT_TRUE(TimeoutWaiter(base::TimeDelta::FromSeconds(5)).Wait());
216 } 218 }
217 219
218 EXPECT_EQ(Chromoting_Main_URL(), GetCurrentURL()); 220 EXPECT_EQ(Chromoting_Main_URL(), GetCurrentURL());
219 } 221 }
220 222
223 void RemoteDesktopBrowserTest::LaunchChromotingApp(bool defer_start) {
224 LaunchChromotingApp(defer_start,
225 is_platform_app() ? NEW_WINDOW : CURRENT_TAB);
226 }
227
221 void RemoteDesktopBrowserTest::StartChromotingApp() { 228 void RemoteDesktopBrowserTest::StartChromotingApp() {
222 ClickOnControl("browser-test-continue-init"); 229 ClickOnControl("browser-test-continue-init");
223 }; 230 };
224 231
225 void RemoteDesktopBrowserTest::Authorize() { 232 void RemoteDesktopBrowserTest::Authorize() {
226 // The chromoting extension should be installed. 233 // The chromoting extension should be installed.
227 ASSERT_TRUE(extension_); 234 ASSERT_TRUE(extension_);
228 235
229 // The chromoting main page should be loaded in the current tab 236 // The chromoting main page should be loaded in the current tab
230 // and isAuthenticated() should be false (auth dialog visible). 237 // and isAuthenticated() should be false (auth dialog visible).
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 base::FilePath script_path = src_dir.Append(path); 717 base::FilePath script_path = src_dir.Append(path);
711 718
712 if (!base::ReadFileToString(script_path, &script)) { 719 if (!base::ReadFileToString(script_path, &script)) {
713 LOG(ERROR) << "Failed to load script " << script_path.value(); 720 LOG(ERROR) << "Failed to load script " << script_path.value();
714 return false; 721 return false;
715 } 722 }
716 723
717 return content::ExecuteScript(web_contents, script); 724 return content::ExecuteScript(web_contents, script);
718 } 725 }
719 726
720 // static
721 void RemoteDesktopBrowserTest::RunJavaScriptTest( 727 void RemoteDesktopBrowserTest::RunJavaScriptTest(
722 content::WebContents* web_contents, 728 content::WebContents* web_contents,
723 const std::string& testName, 729 const std::string& testName,
724 const std::string& testData) { 730 const std::string& testData,
731 base::Value** opt_return_value) {
725 std::string result; 732 std::string result;
726 std::string script = "browserTest.runTest(browserTest." + testName + ", " + 733 std::string script = "browserTest.runTest(browserTest." + testName + ", " +
727 testData + ");"; 734 testData + ");";
728 735
729 DVLOG(1) << "Executing " << script; 736 DVLOG(1) << "Executing " << script;
730 737
731 ASSERT_TRUE( 738 ASSERT_TRUE(
732 content::ExecuteScriptAndExtractString(web_contents, script, &result)); 739 content::ExecuteScriptAndExtractString(web_contents, script, &result));
733 740
734 // Read in the JSON 741 // Read in the JSON
735 base::JSONReader reader; 742 base::JSONReader reader;
736 scoped_ptr<base::Value> value; 743 scoped_ptr<base::Value> value;
737 value.reset(reader.Read(result, base::JSON_ALLOW_TRAILING_COMMAS)); 744 value.reset(reader.Read(result, base::JSON_ALLOW_TRAILING_COMMAS));
738 745
739 // Convert to dictionary 746 // Convert to dictionary
740 base::DictionaryValue* dict_value = NULL; 747 base::DictionaryValue* dict_value = nullptr;
741 ASSERT_TRUE(value->GetAsDictionary(&dict_value)); 748 ASSERT_TRUE(value->GetAsDictionary(&dict_value));
742 749
743 bool succeeded; 750 bool succeeded;
744 std::string error_message; 751 std::string error_message;
745 std::string stack_trace; 752 std::string stack_trace;
746 753
747 // Extract the fields 754 // Extract the fields
748 ASSERT_TRUE(dict_value->GetBoolean("succeeded", &succeeded)); 755 ASSERT_TRUE(dict_value->GetBoolean("succeeded", &succeeded));
749 ASSERT_TRUE(dict_value->GetString("error_message", &error_message)); 756 ASSERT_TRUE(dict_value->GetString("error_message", &error_message));
750 ASSERT_TRUE(dict_value->GetString("stack_trace", &stack_trace)); 757 ASSERT_TRUE(dict_value->GetString("stack_trace", &stack_trace));
751 758
752 EXPECT_TRUE(succeeded) << error_message << "\n" << stack_trace; 759 EXPECT_TRUE(succeeded) << error_message << "\n" << stack_trace;
760
761 base::Value* return_value = nullptr;
762 if (dict_value->Get("value", &return_value) && return_value != nullptr) {
763 ASSERT_EQ(*opt_return_value, nullptr);
764 *opt_return_value = return_value->DeepCopy();
765 }
753 } 766 }
754 767
768 void RemoteDesktopBrowserTest::RunJavaScriptTest(
769 content::WebContents* web_contents,
770 const std::string& testName,
771 const std::string& testData) {
772 base::Value* return_value = nullptr;
773 RunJavaScriptTest(web_contents, testName, testData, &return_value);
774 if (return_value != nullptr) {
775 delete return_value;
Jamie 2015/01/06 22:18:51 No need to test for null before deleting. Better s
kelvinp 2015/01/09 22:21:30 Done.
776 }
777 };
778
779
755 void RemoteDesktopBrowserTest::ClickOnControl(const std::string& name) { 780 void RemoteDesktopBrowserTest::ClickOnControl(const std::string& name) {
756 ASSERT_TRUE(HtmlElementVisible(name)); 781 ASSERT_TRUE(HtmlElementVisible(name));
757 782
758 std::string has_disabled_attribute = 783 std::string has_disabled_attribute =
759 "document.getElementById('" + name + "').hasAttribute('disabled')"; 784 "document.getElementById('" + name + "').hasAttribute('disabled')";
760 785
761 if (ExecuteScriptAndExtractBool(active_web_contents(), 786 if (ExecuteScriptAndExtractBool(active_web_contents(),
762 has_disabled_attribute)) { 787 has_disabled_attribute)) {
763 // This element has a disabled attribute. Wait for it become enabled. 788 // This element has a disabled attribute. Wait for it become enabled.
764 ConditionalTimeoutWaiter waiter( 789 ConditionalTimeoutWaiter waiter(
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 // static 920 // static
896 bool RemoteDesktopBrowserTest::IsEnabled( 921 bool RemoteDesktopBrowserTest::IsEnabled(
897 content::WebContents* client_web_content, 922 content::WebContents* client_web_content,
898 const std::string& element_name) { 923 const std::string& element_name) {
899 return !ExecuteScriptAndExtractBool( 924 return !ExecuteScriptAndExtractBool(
900 client_web_content, 925 client_web_content,
901 "document.getElementById(\"" + element_name + "\").disabled"); 926 "document.getElementById(\"" + element_name + "\").disabled");
902 } 927 }
903 928
904 } // namespace remoting 929 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698