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

Side by Side Diff: chrome/browser/errorpage_browsertest.cc

Issue 961443002: Three way experiment for "Show saved copy" button. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patched in CL 952563003 Created 5 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 // Check that the search box is populated correctly. 129 // Check that the search box is populated correctly.
130 bool search_box_populated = false; 130 bool search_box_populated = false;
131 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 131 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
132 browser->tab_strip_model()->GetActiveWebContents(), 132 browser->tab_strip_model()->GetActiveWebContents(),
133 "var searchText = document.getElementById('search-box').value;" 133 "var searchText = document.getElementById('search-box').value;"
134 "domAutomationController.send(searchText == 'search query');", 134 "domAutomationController.send(searchText == 'search query');",
135 &search_box_populated)); 135 &search_box_populated));
136 EXPECT_TRUE(search_box_populated); 136 EXPECT_TRUE(search_box_populated);
137 } 137 }
138 138
139 std::string GetLoadStaleButtonLabel() { 139 std::string GetShowSavedButtonLabel() {
140 return l10n_util::GetStringUTF8(IDS_ERRORPAGES_BUTTON_LOAD_STALE); 140 return l10n_util::GetStringUTF8(IDS_ERRORPAGES_BUTTON_SHOW_SAVED);
141 } 141 }
142 142
143 void AddInterceptorForURL( 143 void AddInterceptorForURL(
144 const GURL& url, 144 const GURL& url,
145 scoped_ptr<net::URLRequestInterceptor> handler) { 145 scoped_ptr<net::URLRequestInterceptor> handler) {
146 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 146 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
147 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( 147 net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
148 url, handler.Pass()); 148 url, handler.Pass());
149 } 149 }
150 150
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 HISTORY_NAVIGATE_BACK, 292 HISTORY_NAVIGATE_BACK,
293 HISTORY_NAVIGATE_FORWARD, 293 HISTORY_NAVIGATE_FORWARD,
294 }; 294 };
295 295
296 ErrorPageTest() : link_doctor_interceptor_(NULL) {} 296 ErrorPageTest() : link_doctor_interceptor_(NULL) {}
297 ~ErrorPageTest() override {} 297 ~ErrorPageTest() override {}
298 298
299 // Navigates the active tab to a mock url created for the file at |file_path|. 299 // Navigates the active tab to a mock url created for the file at |file_path|.
300 // Needed for StaleCacheStatus and StaleCacheStatusFailedCorrections tests. 300 // Needed for StaleCacheStatus and StaleCacheStatusFailedCorrections tests.
301 void SetUpCommandLine(base::CommandLine* command_line) override { 301 void SetUpCommandLine(base::CommandLine* command_line) override {
302 command_line->AppendSwitch(switches::kEnableOfflineLoadStaleCache); 302 command_line->AppendSwitch(switches::kEnableShowSavedCopyPrimary);
303 } 303 }
304 304
305 // Navigates the active tab to a mock url created for the file at |file_path|. 305 // Navigates the active tab to a mock url created for the file at |file_path|.
306 void NavigateToFileURL(const base::FilePath::StringType& file_path) { 306 void NavigateToFileURL(const base::FilePath::StringType& file_path) {
307 ui_test_utils::NavigateToURL( 307 ui_test_utils::NavigateToURL(
308 browser(), 308 browser(),
309 net::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(file_path))); 309 net::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(file_path)));
310 } 310 }
311 311
312 // Navigates to the given URL and waits for |num_navigations| to occur, and 312 // Navigates to the given URL and waits for |num_navigations| to occur, and
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 NavigateHistory(num_navigations, HISTORY_NAVIGATE_FORWARD); 351 NavigateHistory(num_navigations, HISTORY_NAVIGATE_FORWARD);
352 } 352 }
353 353
354 // Confirms that the javascript variable indicating whether or not we have 354 // Confirms that the javascript variable indicating whether or not we have
355 // a stale copy in the cache has been set to |expected|, and that the 355 // a stale copy in the cache has been set to |expected|, and that the
356 // stale load button is or isn't there based on the same expectation. 356 // stale load button is or isn't there based on the same expectation.
357 testing::AssertionResult ProbeStaleCopyValue(bool expected) { 357 testing::AssertionResult ProbeStaleCopyValue(bool expected) {
358 const char* js_cache_probe = 358 const char* js_cache_probe =
359 "try {\n" 359 "try {\n"
360 " domAutomationController.send(\n" 360 " domAutomationController.send(\n"
361 " loadTimeData.valueExists('staleLoadButton') ? 'yes' : 'no');\n" 361 " loadTimeData.valueExists('showSavedCopyButton') ?"
362 " 'yes' : 'no');\n"
362 "} catch (e) {\n" 363 "} catch (e) {\n"
363 " domAutomationController.send(e.message);\n" 364 " domAutomationController.send(e.message);\n"
364 "}\n"; 365 "}\n";
365 366
366 std::string result; 367 std::string result;
367 bool ret = 368 bool ret =
368 content::ExecuteScriptAndExtractString( 369 content::ExecuteScriptAndExtractString(
369 browser()->tab_strip_model()->GetActiveWebContents(), 370 browser()->tab_strip_model()->GetActiveWebContents(),
370 js_cache_probe, 371 js_cache_probe,
371 &result); 372 &result);
372 if (!ret) { 373 if (!ret) {
373 return testing::AssertionFailure() 374 return testing::AssertionFailure()
374 << "Failing return from ExecuteScriptAndExtractString."; 375 << "Failing return from ExecuteScriptAndExtractString.";
375 } 376 }
376 377
377 if ((expected && "yes" == result) || (!expected && "no" == result)) 378 if ((expected && "yes" == result) || (!expected && "no" == result))
378 return testing::AssertionSuccess(); 379 return testing::AssertionSuccess();
379 380
380 return testing::AssertionFailure() << "Cache probe result is " << result; 381 return testing::AssertionFailure() << "Cache probe result is " << result;
381 } 382 }
382 383
383 testing::AssertionResult ReloadStaleCopyFromCache() { 384 testing::AssertionResult ReloadStaleCopyFromCache() {
384 const char* js_reload_script = 385 const char* js_reload_script =
385 "try {\n" 386 "try {\n"
386 " document.getElementById('stale-load-button').click();\n" 387 " document.getElementById('show-saved-copy-button').click();\n"
387 " domAutomationController.send('success');\n" 388 " domAutomationController.send('success');\n"
388 "} catch (e) {\n" 389 "} catch (e) {\n"
389 " domAutomationController.send(e.message);\n" 390 " domAutomationController.send(e.message);\n"
390 "}\n"; 391 "}\n";
391 392
392 std::string result; 393 std::string result;
393 bool ret = content::ExecuteScriptAndExtractString( 394 bool ret = content::ExecuteScriptAndExtractString(
394 browser()->tab_strip_model()->GetActiveWebContents(), 395 browser()->tab_strip_model()->GetActiveWebContents(),
395 js_reload_script, 396 js_reload_script,
396 &result); 397 &result);
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 839
839 // Reload same URL after forcing an error from the the network layer; 840 // Reload same URL after forcing an error from the the network layer;
840 // confirm that the error page is told the cached copy exists. 841 // confirm that the error page is told the cached copy exists.
841 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = 842 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter =
842 browser()->profile()->GetRequestContext(); 843 browser()->profile()->GetRequestContext();
843 BrowserThread::PostTask( 844 BrowserThread::PostTask(
844 BrowserThread::IO, FROM_HERE, 845 BrowserThread::IO, FROM_HERE,
845 base::Bind(&InterceptNetworkTransactions, url_request_context_getter, 846 base::Bind(&InterceptNetworkTransactions, url_request_context_getter,
846 net::ERR_FAILED)); 847 net::ERR_FAILED));
847 848
848 // With no navigation corrections to load, there's only one navigation. 849 // With no navigation corrections to load, there's only one navigation.
849 ui_test_utils::NavigateToURL(browser(), test_url); 850 ui_test_utils::NavigateToURL(browser(), test_url);
850 EXPECT_TRUE(ProbeStaleCopyValue(true)); 851 EXPECT_TRUE(ProbeStaleCopyValue(true));
851 EXPECT_TRUE(IsDisplayingText(browser(), GetLoadStaleButtonLabel())); 852 EXPECT_TRUE(IsDisplayingText(browser(), GetShowSavedButtonLabel()));
852 EXPECT_NE(base::ASCIIToUTF16("Nocache Test Page"), 853 EXPECT_NE(base::ASCIIToUTF16("Nocache Test Page"),
853 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); 854 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
854 855
855 // Confirm that loading the stale copy from the cache works. 856 // Confirm that loading the stale copy from the cache works.
856 content::TestNavigationObserver same_tab_observer( 857 content::TestNavigationObserver same_tab_observer(
857 browser()->tab_strip_model()->GetActiveWebContents(), 1); 858 browser()->tab_strip_model()->GetActiveWebContents(), 1);
858 ASSERT_TRUE(ReloadStaleCopyFromCache()); 859 ASSERT_TRUE(ReloadStaleCopyFromCache());
859 same_tab_observer.Wait(); 860 same_tab_observer.Wait();
860 EXPECT_EQ(base::ASCIIToUTF16("Nocache Test Page"), 861 EXPECT_EQ(base::ASCIIToUTF16("Nocache Test Page"),
861 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); 862 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
862 863
864 // Reload the same URL with a post request; confirm the error page is told
865 // that there is no cached copy.
866 ui_test_utils::NavigateToURLWithPost(browser(), test_url);
867 EXPECT_TRUE(ProbeStaleCopyValue(false));
868 EXPECT_FALSE(IsDisplayingText(browser(), GetShowSavedButtonLabel()));
869 EXPECT_EQ(0, link_doctor_interceptor()->num_requests());
870
863 // Clear the cache and reload the same URL; confirm the error page is told 871 // Clear the cache and reload the same URL; confirm the error page is told
864 // that there is no cached copy. 872 // that there is no cached copy.
865 BrowsingDataRemover* remover = 873 BrowsingDataRemover* remover =
866 BrowsingDataRemover::CreateForUnboundedRange(browser()->profile()); 874 BrowsingDataRemover::CreateForUnboundedRange(browser()->profile());
867 remover->Remove(BrowsingDataRemover::REMOVE_CACHE, 875 remover->Remove(BrowsingDataRemover::REMOVE_CACHE,
868 BrowsingDataHelper::UNPROTECTED_WEB); 876 BrowsingDataHelper::UNPROTECTED_WEB);
869 ui_test_utils::NavigateToURL(browser(), test_url); 877 ui_test_utils::NavigateToURL(browser(), test_url);
870 EXPECT_TRUE(ProbeStaleCopyValue(false)); 878 EXPECT_TRUE(ProbeStaleCopyValue(false));
871 EXPECT_FALSE(IsDisplayingText(browser(), GetLoadStaleButtonLabel())); 879 EXPECT_FALSE(IsDisplayingText(browser(), GetShowSavedButtonLabel()));
872 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); 880 EXPECT_EQ(0, link_doctor_interceptor()->num_requests());
873 } 881 }
874 882
875 class ErrorPageAutoReloadTest : public InProcessBrowserTest { 883 class ErrorPageAutoReloadTest : public InProcessBrowserTest {
876 public: 884 public:
877 void SetUpCommandLine(base::CommandLine* command_line) override { 885 void SetUpCommandLine(base::CommandLine* command_line) override {
878 command_line->AppendSwitch(switches::kEnableOfflineAutoReload); 886 command_line->AppendSwitch(switches::kEnableOfflineAutoReload);
879 } 887 }
880 888
881 void InstallInterceptor(const GURL& url, int requests_to_fail) { 889 void InstallInterceptor(const GURL& url, int requests_to_fail) {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 // confirm that the error page is told the cached copy exists. 1048 // confirm that the error page is told the cached copy exists.
1041 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = 1049 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter =
1042 browser()->profile()->GetRequestContext(); 1050 browser()->profile()->GetRequestContext();
1043 BrowserThread::PostTask( 1051 BrowserThread::PostTask(
1044 BrowserThread::IO, FROM_HERE, 1052 BrowserThread::IO, FROM_HERE,
1045 base::Bind(&InterceptNetworkTransactions, url_request_context_getter, 1053 base::Bind(&InterceptNetworkTransactions, url_request_context_getter,
1046 net::ERR_CONNECTION_FAILED)); 1054 net::ERR_CONNECTION_FAILED));
1047 1055
1048 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 1056 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
1049 browser(), test_url, 2); 1057 browser(), test_url, 2);
1050 EXPECT_TRUE(IsDisplayingText(browser(), GetLoadStaleButtonLabel())); 1058 EXPECT_TRUE(IsDisplayingText(browser(), GetShowSavedButtonLabel()));
1051 EXPECT_TRUE(ProbeStaleCopyValue(true)); 1059 EXPECT_TRUE(ProbeStaleCopyValue(true));
1052 1060
1053 // Confirm that loading the stale copy from the cache works. 1061 // Confirm that loading the stale copy from the cache works.
1054 content::TestNavigationObserver same_tab_observer( 1062 content::TestNavigationObserver same_tab_observer(
1055 browser()->tab_strip_model()->GetActiveWebContents(), 1); 1063 browser()->tab_strip_model()->GetActiveWebContents(), 1);
1056 ASSERT_TRUE(ReloadStaleCopyFromCache()); 1064 ASSERT_TRUE(ReloadStaleCopyFromCache());
1057 same_tab_observer.Wait(); 1065 same_tab_observer.Wait();
1058 EXPECT_EQ(base::ASCIIToUTF16("Nocache Test Page"), 1066 EXPECT_EQ(base::ASCIIToUTF16("Nocache Test Page"),
1059 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); 1067 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
1060 1068
1061 // Clear the cache and reload the same URL; confirm the error page is told 1069 // Clear the cache and reload the same URL; confirm the error page is told
1062 // that there is no cached copy. 1070 // that there is no cached copy.
1063 BrowsingDataRemover* remover = 1071 BrowsingDataRemover* remover =
1064 BrowsingDataRemover::CreateForUnboundedRange(browser()->profile()); 1072 BrowsingDataRemover::CreateForUnboundedRange(browser()->profile());
1065 remover->Remove(BrowsingDataRemover::REMOVE_CACHE, 1073 remover->Remove(BrowsingDataRemover::REMOVE_CACHE,
1066 BrowsingDataHelper::UNPROTECTED_WEB); 1074 BrowsingDataHelper::UNPROTECTED_WEB);
1067 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 1075 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
1068 browser(), test_url, 2); 1076 browser(), test_url, 2);
1069 EXPECT_TRUE(ProbeStaleCopyValue(false)); 1077 EXPECT_TRUE(ProbeStaleCopyValue(false));
1070 EXPECT_FALSE(IsDisplayingText(browser(), GetLoadStaleButtonLabel())); 1078 EXPECT_FALSE(IsDisplayingText(browser(), GetShowSavedButtonLabel()));
1071 } 1079 }
1072 1080
1073 // A test fixture that simulates failing requests for an IDN domain name. 1081 // A test fixture that simulates failing requests for an IDN domain name.
1074 class ErrorPageForIDNTest : public InProcessBrowserTest { 1082 class ErrorPageForIDNTest : public InProcessBrowserTest {
1075 public: 1083 public:
1076 // Target hostname in different forms. 1084 // Target hostname in different forms.
1077 static const char kHostname[]; 1085 static const char kHostname[];
1078 static const char kHostnameJSUnicode[]; 1086 static const char kHostnameJSUnicode[];
1079 1087
1080 // InProcessBrowserTest: 1088 // InProcessBrowserTest:
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 ui_test_utils::NavigateToURL( 1125 ui_test_utils::NavigateToURL(
1118 browser(), 1126 browser(),
1119 URLRequestFailedJob::GetMockHttpUrlForHostname(net::ERR_UNSAFE_PORT, 1127 URLRequestFailedJob::GetMockHttpUrlForHostname(net::ERR_UNSAFE_PORT,
1120 kHostname)); 1128 kHostname));
1121 1129
1122 ToggleHelpBox(browser()); 1130 ToggleHelpBox(browser());
1123 EXPECT_TRUE(IsDisplayingText(browser(), kHostnameJSUnicode)); 1131 EXPECT_TRUE(IsDisplayingText(browser(), kHostnameJSUnicode));
1124 } 1132 }
1125 1133
1126 } // namespace 1134 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698