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

Unified Diff: chrome/browser/alternate_nav_url_fetcher.cc

Issue 11825005: Move alternate_nav_infobar_delegate.* from c/b/infobars/ to c/b/ui/omnibox. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update chrome_browser_ui.gypi as well Created 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/alternate_nav_url_fetcher.cc
diff --git a/chrome/browser/alternate_nav_url_fetcher.cc b/chrome/browser/alternate_nav_url_fetcher.cc
deleted file mode 100644
index 4915f9ed514bd4ea614742c6cdd0e187af1bff84..0000000000000000000000000000000000000000
--- a/chrome/browser/alternate_nav_url_fetcher.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/alternate_nav_url_fetcher.h"
-
-#include "chrome/browser/api/infobars/infobar_service.h"
-#include "chrome/browser/infobars/alternate_nav_infobar_delegate.h"
-#include "chrome/browser/intranet_redirect_detector.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "net/base/load_flags.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
-#include "net/url_request/url_fetcher.h"
-#include "net/url_request/url_request.h"
-
-using content::NavigationController;
-
-AlternateNavURLFetcher::AlternateNavURLFetcher(
- const GURL& alternate_nav_url)
- : alternate_nav_url_(alternate_nav_url),
- controller_(NULL),
- state_(NOT_STARTED),
- navigated_to_entry_(false) {
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_PENDING,
- content::NotificationService::AllSources());
- registrar_.Add(this, chrome::NOTIFICATION_INSTANT_COMMITTED,
- content::NotificationService::AllSources());
-}
-
-AlternateNavURLFetcher::~AlternateNavURLFetcher() {
-}
-
-void AlternateNavURLFetcher::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- switch (type) {
- case content::NOTIFICATION_NAV_ENTRY_PENDING: {
- // If we've already received a notification for the same controller, we
- // should delete ourselves as that indicates that the page is being
- // re-loaded so this instance is now stale.
- NavigationController* controller =
- content::Source<NavigationController>(source).ptr();
- if (controller_ == controller) {
- delete this;
- } else if (!controller_) {
- // Start listening for the commit notification.
- DCHECK(controller->GetPendingEntry());
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::Source<NavigationController>(
- controller));
- StartFetch(controller);
- }
- break;
- }
-
- case chrome::NOTIFICATION_INSTANT_COMMITTED: {
- // See above.
- NavigationController* controller =
- &content::Source<content::WebContents>(source)->GetController();
- if (controller_ == controller) {
- delete this;
- } else if (!controller_) {
- navigated_to_entry_ = true;
- StartFetch(controller);
- }
- break;
- }
-
- case content::NOTIFICATION_NAV_ENTRY_COMMITTED:
- // The page was navigated, we can show the infobar now if necessary.
- registrar_.Remove(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::Source<NavigationController>(controller_));
- navigated_to_entry_ = true;
- ShowInfobarIfPossible();
- // WARNING: |this| may be deleted!
- break;
-
- case content::NOTIFICATION_WEB_CONTENTS_DESTROYED:
- // We have been closed. In order to prevent the URLFetcher from trying to
- // access the controller that will be invalid, we delete ourselves.
- // This deletes the URLFetcher and insures its callback won't be called.
- delete this;
- break;
-
- default:
- NOTREACHED();
- }
-}
-
-void AlternateNavURLFetcher::OnURLFetchComplete(
- const net::URLFetcher* source) {
- DCHECK_EQ(fetcher_.get(), source);
- SetStatusFromURLFetch(
- source->GetURL(), source->GetStatus(), source->GetResponseCode());
- ShowInfobarIfPossible();
- // WARNING: |this| may be deleted!
-}
-
-void AlternateNavURLFetcher::StartFetch(NavigationController* controller) {
- controller_ = controller;
- content::WebContents* web_contents = controller_->GetWebContents();
- registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
- content::Source<content::WebContents>(web_contents));
-
- DCHECK_EQ(NOT_STARTED, state_);
- state_ = IN_PROGRESS;
- fetcher_.reset(net::URLFetcher::Create(GURL(alternate_nav_url_),
- net::URLFetcher::HEAD, this));
- fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES);
- fetcher_->SetRequestContext(
- controller_->GetBrowserContext()->GetRequestContext());
- fetcher_->SetStopOnRedirect(true);
- fetcher_->Start();
-}
-
-void AlternateNavURLFetcher::SetStatusFromURLFetch(
- const GURL& url,
- const net::URLRequestStatus& status,
- int response_code) {
- if (status.is_success()) {
- // HTTP 2xx, 401, and 407 all indicate that the target address exists.
- state_ = (((response_code / 100) == 2) || (response_code == 401) ||
- (response_code == 407)) ? SUCCEEDED : FAILED;
- } else {
- // If we got HTTP 3xx, we'll have auto-canceled; treat this as evidence the
- // target address exists as long as we're not redirected to a common
- // location every time, lest we annoy the user with infobars on everything
- // they type. See comments on IntranetRedirectDetector.
- state_ = ((status.status() == net::URLRequestStatus::CANCELED) &&
- ((response_code / 100) == 3) &&
- !net::RegistryControlledDomainService::SameDomainOrHost(url,
- IntranetRedirectDetector::RedirectOrigin())) ? SUCCEEDED : FAILED;
- }
-}
-
-void AlternateNavURLFetcher::ShowInfobarIfPossible() {
- if (navigated_to_entry_ && (state_ == SUCCEEDED)) {
- AlternateNavInfoBarDelegate::Create(
- InfoBarService::FromWebContents(controller_->GetWebContents()),
- alternate_nav_url_);
- } else if (state_ != FAILED) {
- return;
- }
- delete this;
-}
« no previous file with comments | « chrome/browser/alternate_nav_url_fetcher.h ('k') | chrome/browser/infobars/alternate_nav_infobar_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698