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

Side by Side Diff: chrome/browser/ui/search/instant_controller.cc

Issue 14043009: Fall back to local page if online NTP fails to load. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove logic to always try to load a server-provided NTP on frontmost tab. Created 7 years, 7 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "chrome/browser/ui/search/instant_controller.h" 5 #include "chrome/browser/ui/search/instant_controller.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 } 1067 }
1068 1068
1069 void InstantController::UndoAllMostVisitedDeletions() { 1069 void InstantController::UndoAllMostVisitedDeletions() {
1070 history::TopSites* top_sites = browser_->profile()->GetTopSites(); 1070 history::TopSites* top_sites = browser_->profile()->GetTopSites();
1071 if (!top_sites) 1071 if (!top_sites)
1072 return; 1072 return;
1073 1073
1074 top_sites->ClearBlacklistedURLs(); 1074 top_sites->ClearBlacklistedURLs();
1075 } 1075 }
1076 1076
1077 void InstantController::InstantPageLoadFailed(content::WebContents* contents) {
samarth 2013/05/01 06:26:47 Please keep the functions in the same order as in
David Black 2013/05/02 00:49:45 Done.
1078 GURL local_fallback_url = chrome::GetLocalInstantURL(browser_->profile());
1079
1080 if (instant_tab_ && IsContentsFrom(instant_tab(), contents)) {
1081 if (instant_tab_->IsLocal())
1082 return;
1083 SearchTabHelper::FromWebContents(contents)->RedirectingToLocal();
samarth 2013/05/01 06:26:47 It't not clear to me why this is necessary. Do yo
David Black 2013/05/02 00:49:45 Fixed as we discussed in person.
1084 RedirectToLocalNTP(contents);
samarth 2013/05/01 06:26:47 I can try this tomorrow but what if you have a sea
David Black 2013/05/02 00:49:45 Good point. Changed to fall back only if the URL
1085 }
1086
1087 if (ntp_ && IsContentsFrom(ntp(), contents)) {
1088 if (ntp_->IsLocal())
1089 return;
1090 ResetNTP(false, true);
samarth 2013/05/01 06:26:47 No, this will lead to an infinite loop of reloadin
David Black 2013/05/02 00:49:45 Will not cause an infinite loop - second param is
1091 }
1092
1093 if (overlay_ && IsContentsFrom(overlay(), contents)) {
1094 if (overlay_->IsLocal())
1095 return;
1096 CreateOverlay(local_fallback_url.spec(), contents);
samarth 2013/05/01 06:26:47 Update already handles the fallback, so you just n
David Black 2013/05/02 00:49:45 Update is too late - they've already typed a chara
1097 }
1098 }
1099
1077 void InstantController::Observe(int type, 1100 void InstantController::Observe(int type,
1078 const content::NotificationSource& source, 1101 const content::NotificationSource& source,
1079 const content::NotificationDetails& details) { 1102 const content::NotificationDetails& details) {
1080 DCHECK_EQ(type, chrome::NOTIFICATION_TOP_SITES_CHANGED); 1103 DCHECK_EQ(type, chrome::NOTIFICATION_TOP_SITES_CHANGED);
1081 RequestMostVisitedItems(); 1104 RequestMostVisitedItems();
1082 } 1105 }
1083 1106
1084 // TODO(shishir): We assume that the WebContent's current RenderViewHost is the 1107 // TODO(shishir): We assume that the WebContent's current RenderViewHost is the
1085 // RenderViewHost being created which is not always true. Fix this. 1108 // RenderViewHost being created which is not always true. Fix this.
1086 void InstantController::InstantPageRenderViewCreated( 1109 void InstantController::InstantPageRenderViewCreated(
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after
1712 if (browser_->GetActiveWebContents()) 1735 if (browser_->GetActiveWebContents())
1713 return true; 1736 return true;
1714 1737
1715 return chrome::IsAggressiveLocalNTPFallbackEnabled(); 1738 return chrome::IsAggressiveLocalNTPFallbackEnabled();
1716 } 1739 }
1717 1740
1718 bool InstantController::UsingLocalPage() const { 1741 bool InstantController::UsingLocalPage() const {
1719 return (instant_tab_ && instant_tab_->IsLocal()) || 1742 return (instant_tab_ && instant_tab_->IsLocal()) ||
1720 (!instant_tab_ && overlay_ && overlay_->IsLocal()); 1743 (!instant_tab_ && overlay_ && overlay_->IsLocal());
1721 } 1744 }
1745
1746 void InstantController::RedirectToLocalNTP(content::WebContents* contents) {
1747 contents->GetController().LoadURL(
1748 chrome::GetLocalInstantURL(browser_->profile()),
1749 content::Referrer(),
1750 content::PAGE_TRANSITION_SERVER_REDIRECT,
1751 std::string()); // No extra headers.
1752 // TODO(dcblack): Remove extraneous history entry.
1753 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698