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

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

Issue 10890023: Miscellaneous cleanups from several months ago I never got around to landing. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 3 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 "chrome/browser/alternate_nav_url_fetcher.h" 5 #include "chrome/browser/alternate_nav_url_fetcher.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/api/infobars/link_infobar_delegate.h" 8 #include "chrome/browser/api/infobars/link_infobar_delegate.h"
9 #include "chrome/browser/infobars/infobar_tab_helper.h" 9 #include "chrome/browser/infobars/infobar_tab_helper.h"
10 #include "chrome/browser/intranet_redirect_detector.h" 10 #include "chrome/browser/intranet_redirect_detector.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 const net::URLFetcher* source) { 177 const net::URLFetcher* source) {
178 DCHECK_EQ(fetcher_.get(), source); 178 DCHECK_EQ(fetcher_.get(), source);
179 SetStatusFromURLFetch( 179 SetStatusFromURLFetch(
180 source->GetURL(), source->GetStatus(), source->GetResponseCode()); 180 source->GetURL(), source->GetStatus(), source->GetResponseCode());
181 ShowInfobarIfPossible(); 181 ShowInfobarIfPossible();
182 // WARNING: |this| may be deleted! 182 // WARNING: |this| may be deleted!
183 } 183 }
184 184
185 void AlternateNavURLFetcher::StartFetch(NavigationController* controller) { 185 void AlternateNavURLFetcher::StartFetch(NavigationController* controller) {
186 controller_ = controller; 186 controller_ = controller;
187 registrar_.Add( 187 content::WebContents* web_contents = controller_->GetWebContents();
188 this, 188 registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
189 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, 189 content::Source<content::WebContents>(web_contents));
190 content::Source<content::WebContents>(controller_->GetWebContents()));
191 190
192 DCHECK_EQ(NOT_STARTED, state_); 191 DCHECK_EQ(NOT_STARTED, state_);
193 state_ = IN_PROGRESS; 192 state_ = IN_PROGRESS;
194 fetcher_.reset(net::URLFetcher::Create( 193 fetcher_.reset(net::URLFetcher::Create(GURL(alternate_nav_url_),
195 GURL(alternate_nav_url_), net::URLFetcher::HEAD, this)); 194 net::URLFetcher::HEAD, this));
196 fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); 195 fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES);
197 fetcher_->SetRequestContext( 196 fetcher_->SetRequestContext(
198 controller_->GetBrowserContext()->GetRequestContext()); 197 controller_->GetBrowserContext()->GetRequestContext());
199 fetcher_->SetStopOnRedirect(true); 198 fetcher_->SetStopOnRedirect(true);
200 fetcher_->Start(); 199 fetcher_->Start();
201 } 200 }
202 201
203 void AlternateNavURLFetcher::SetStatusFromURLFetch( 202 void AlternateNavURLFetcher::SetStatusFromURLFetch(
204 const GURL& url, 203 const GURL& url,
205 const net::URLRequestStatus& status, 204 const net::URLRequestStatus& status,
206 int response_code) { 205 int response_code) {
207 if (status.is_success()) { 206 if (status.is_success()) {
208 // HTTP 2xx, 401, and 407 all indicate that the target address exists. 207 // HTTP 2xx, 401, and 407 all indicate that the target address exists.
209 state_ = (((response_code / 100) == 2) || (response_code == 401) || 208 state_ = (((response_code / 100) == 2) || (response_code == 401) ||
210 (response_code == 407)) ? SUCCEEDED : FAILED; 209 (response_code == 407)) ? SUCCEEDED : FAILED;
211 } else { 210 } else {
212 // If we got HTTP 3xx, we'll have auto-canceled; treat this as evidence the 211 // If we got HTTP 3xx, we'll have auto-canceled; treat this as evidence the
213 // target address exists as long as we're not redirected to a common 212 // target address exists as long as we're not redirected to a common
214 // location every time, lest we annoy the user with infobars on everything 213 // location every time, lest we annoy the user with infobars on everything
215 // they type. See comments on IntranetRedirectDetector. 214 // they type. See comments on IntranetRedirectDetector.
216 state_ = ((status.status() == net::URLRequestStatus::CANCELED) && 215 state_ = ((status.status() == net::URLRequestStatus::CANCELED) &&
217 ((response_code / 100) == 3) && 216 ((response_code / 100) == 3) &&
218 !net::RegistryControlledDomainService::SameDomainOrHost(url, 217 !net::RegistryControlledDomainService::SameDomainOrHost(url,
219 IntranetRedirectDetector::RedirectOrigin())) ? SUCCEEDED : FAILED; 218 IntranetRedirectDetector::RedirectOrigin())) ? SUCCEEDED : FAILED;
220 } 219 }
221 } 220 }
222 221
223 void AlternateNavURLFetcher::ShowInfobarIfPossible() { 222 void AlternateNavURLFetcher::ShowInfobarIfPossible() {
224 if (!navigated_to_entry_ || state_ != SUCCEEDED) { 223 if (navigated_to_entry_ && (state_ == SUCCEEDED)) {
225 if (state_ == FAILED) 224 InfoBarTabHelper* infobar_helper =
226 delete this; 225 TabContents::FromWebContents(controller_->GetWebContents())->
226 infobar_tab_helper();
227 infobar_helper->AddInfoBar(
228 new AlternateNavInfoBarDelegate(infobar_helper, alternate_nav_url_));
229 } else if (state_ != FAILED) {
227 return; 230 return;
228 } 231 }
229
230 InfoBarTabHelper* infobar_helper =
231 TabContents::FromWebContents(controller_->GetWebContents())->
232 infobar_tab_helper();
233 infobar_helper->AddInfoBar(
234 new AlternateNavInfoBarDelegate(infobar_helper, alternate_nav_url_));
235 delete this; 232 delete this;
236 } 233 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698