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

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

Issue 207553008: Surface button for loading stale cache copy on net error page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Incorporated comments. Created 6 years, 8 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 | Annotate | Revision Log
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/path_service.h" 10 #include "base/path_service.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 void GoForwardAndWaitForNavigations(int num_navigations) { 247 void GoForwardAndWaitForNavigations(int num_navigations) {
248 NavigateHistory(num_navigations, HISTORY_NAVIGATE_FORWARD); 248 NavigateHistory(num_navigations, HISTORY_NAVIGATE_FORWARD);
249 } 249 }
250 250
251 // Confirms that the javascript variable indicating whether or not we have 251 // Confirms that the javascript variable indicating whether or not we have
252 // a stale copy in the cache has been set to |expected|. 252 // a stale copy in the cache has been set to |expected|.
253 bool ProbeStaleCopyValue(bool expected) { 253 bool ProbeStaleCopyValue(bool expected) {
254 const char* js_cache_probe = 254 const char* js_cache_probe =
255 "try {\n" 255 "try {\n"
256 " domAutomationController.send(\n" 256 " domAutomationController.send(\n"
257 " templateData.staleCopyInCache ? 'yes' : 'no');\n" 257 " 'staleCopyInCache' in templateData ? 'yes' : 'no');\n"
258 "} catch (e) {\n" 258 "} catch (e) {\n"
259 " domAutomationController.send(e.message);\n" 259 " domAutomationController.send(e.message);\n"
260 "}\n"; 260 "}\n";
261 261
262 std::string result; 262 std::string result;
263 bool ret = 263 bool ret =
264 content::ExecuteScriptAndExtractString( 264 content::ExecuteScriptAndExtractString(
265 browser()->tab_strip_model()->GetActiveWebContents(), 265 browser()->tab_strip_model()->GetActiveWebContents(),
266 js_cache_probe, 266 js_cache_probe,
267 &result); 267 &result);
268 EXPECT_TRUE(ret); 268 EXPECT_TRUE(ret);
269 if (!ret) 269 if (!ret)
270 return false; 270 return false;
271 EXPECT_EQ(expected ? "yes" : "no", result); 271 EXPECT_EQ(expected ? "yes" : "no", result);
272 return ((expected ? "yes" : "no") == result); 272 return ((expected ? "yes" : "no") == result);
273 } 273 }
274 274
275 testing::AssertionResult ReloadStaleCopyFromCache() { 275 testing::AssertionResult ReloadStaleCopyFromCache() {
mmenke 2014/04/11 19:42:32 Now that we have a button, should "click" it with
Randy Smith (Not in Mondays) 2014/04/14 22:02:13 Done.
276 const char* js_reload_script = 276 const char* js_reload_script =
277 "try {\n" 277 "try {\n"
278 " errorCacheLoad.reloadStaleInstance();\n" 278 " errorCacheLoad.reloadStaleInstance();\n"
279 " domAutomationController.send('success');\n" 279 " domAutomationController.send('success');\n"
280 "} catch (e) {\n" 280 "} catch (e) {\n"
281 " domAutomationController.send(e.message);\n" 281 " domAutomationController.send(e.message);\n"
282 "}\n"; 282 "}\n";
283 283
284 std::string result; 284 std::string result;
285 bool ret = content::ExecuteScriptAndExtractString( 285 bool ret = content::ExecuteScriptAndExtractString(
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = 673 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter =
674 browser()->profile()->GetRequestContext(); 674 browser()->profile()->GetRequestContext();
675 BrowserThread::PostTask( 675 BrowserThread::PostTask(
676 BrowserThread::IO, FROM_HERE, 676 BrowserThread::IO, FROM_HERE,
677 base::Bind(&InterceptNetworkTransactions, url_request_context_getter, 677 base::Bind(&InterceptNetworkTransactions, url_request_context_getter,
678 net::ERR_FAILED)); 678 net::ERR_FAILED));
679 679
680 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 680 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
681 // With no navigation corrections to load, there's only one navigation. 681 // With no navigation corrections to load, there's only one navigation.
682 browser(), test_url, 1); 682 browser(), test_url, 1);
683 EXPECT_TRUE(ProbeStaleCopyValue(true)); 683 EXPECT_TRUE(ProbeStaleCopyValue(true));
mmenke 2014/04/11 19:42:32 Suggest also checking the button's visibility. Sh
Randy Smith (Not in Mondays) 2014/04/14 22:02:13 Done.
684 EXPECT_NE(base::ASCIIToUTF16("Nocache Test Page"), 684 EXPECT_NE(base::ASCIIToUTF16("Nocache Test Page"),
685 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); 685 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
686 686
687 // Confirm that loading the stale copy from the cache works. 687 // Confirm that loading the stale copy from the cache works.
688 content::TestNavigationObserver same_tab_observer( 688 content::TestNavigationObserver same_tab_observer(
689 browser()->tab_strip_model()->GetActiveWebContents(), 1); 689 browser()->tab_strip_model()->GetActiveWebContents(), 1);
690 ASSERT_TRUE(ReloadStaleCopyFromCache()); 690 ASSERT_TRUE(ReloadStaleCopyFromCache());
691 same_tab_observer.Wait(); 691 same_tab_observer.Wait();
692 EXPECT_EQ(base::ASCIIToUTF16("Nocache Test Page"), 692 EXPECT_EQ(base::ASCIIToUTF16("Nocache Test Page"),
693 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); 693 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle()); 873 browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
874 874
875 // Clear the cache and reload the same URL; confirm the error page is told 875 // Clear the cache and reload the same URL; confirm the error page is told
876 // that there is no cached copy. 876 // that there is no cached copy.
877 BrowsingDataRemover* remover = 877 BrowsingDataRemover* remover =
878 BrowsingDataRemover::CreateForUnboundedRange(browser()->profile()); 878 BrowsingDataRemover::CreateForUnboundedRange(browser()->profile());
879 remover->Remove(BrowsingDataRemover::REMOVE_CACHE, 879 remover->Remove(BrowsingDataRemover::REMOVE_CACHE,
880 BrowsingDataHelper::UNPROTECTED_WEB); 880 BrowsingDataHelper::UNPROTECTED_WEB);
881 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( 881 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
882 browser(), test_url, 2); 882 browser(), test_url, 2);
883 ProbeStaleCopyValue(false); 883 ProbeStaleCopyValue(false);
mmenke 2014/04/11 19:42:32 Should also check that the button's hidden.
Randy Smith (Not in Mondays) 2014/04/14 22:02:13 Done.
884 } 884 }
885 885
886 // A test fixture that simulates failing requests for an IDN domain name. 886 // A test fixture that simulates failing requests for an IDN domain name.
887 class ErrorPageForIDNTest : public InProcessBrowserTest { 887 class ErrorPageForIDNTest : public InProcessBrowserTest {
888 public: 888 public:
889 // Target hostname in different forms. 889 // Target hostname in different forms.
890 static const char kHostname[]; 890 static const char kHostname[];
891 static const char kHostnameJSUnicode[]; 891 static const char kHostnameJSUnicode[];
892 892
893 // InProcessBrowserTest: 893 // InProcessBrowserTest:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 browser(), 931 browser(),
932 URLRequestFailedJob::GetMockHttpUrlForHostname(net::ERR_UNSAFE_PORT, 932 URLRequestFailedJob::GetMockHttpUrlForHostname(net::ERR_UNSAFE_PORT,
933 kHostname), 933 kHostname),
934 1); 934 1);
935 935
936 ToggleHelpBox(browser()); 936 ToggleHelpBox(browser());
937 EXPECT_TRUE(IsDisplayingText(browser(), kHostnameJSUnicode)); 937 EXPECT_TRUE(IsDisplayingText(browser(), kHostnameJSUnicode));
938 } 938 }
939 939
940 } // namespace 940 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698