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

Unified Diff: chrome/browser/ui/tabs/tab_finder.cc

Issue 10631009: Removes TabFinder. We're not going to use it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: git rm tab_finder.cc Created 8 years, 6 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
« no previous file with comments | « chrome/browser/ui/tabs/tab_finder.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/tabs/tab_finder.cc
diff --git a/chrome/browser/ui/tabs/tab_finder.cc b/chrome/browser/ui/tabs/tab_finder.cc
deleted file mode 100644
index cca41b5d7568595a1cba72f82aeb690412496b39..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/tabs/tab_finder.cc
+++ /dev/null
@@ -1,246 +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/ui/tabs/tab_finder.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/command_line.h"
-#include "base/stl_util.h"
-#include "chrome/browser/history/history.h"
-#include "chrome/browser/history/history_service_factory.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_list.h"
-#include "chrome/browser/ui/tab_contents/tab_contents.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/chrome_switches.h"
-#include "content/public/browser/navigation_details.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_observer.h"
-#include "content/public/common/frame_navigate_params.h"
-#include "content/public/common/page_transition_types.h"
-
-using content::NavigationEntry;
-using content::WebContents;
-
-class TabFinder::WebContentsObserverImpl : public content::WebContentsObserver {
- public:
- WebContentsObserverImpl(WebContents* tab, TabFinder* finder);
- virtual ~WebContentsObserverImpl();
-
- WebContents* web_contents() {
- return content::WebContentsObserver::web_contents();
- }
-
- // content::WebContentsObserver overrides:
- virtual void DidNavigateAnyFrame(
- const content::LoadCommittedDetails& details,
- const content::FrameNavigateParams& params) OVERRIDE;
- virtual void WebContentsDestroyed(WebContents* tab) OVERRIDE;
-
- private:
- TabFinder* finder_;
-
- DISALLOW_COPY_AND_ASSIGN(WebContentsObserverImpl);
-};
-
-TabFinder::WebContentsObserverImpl::WebContentsObserverImpl(
- WebContents* tab,
- TabFinder* finder)
- : content::WebContentsObserver(tab),
- finder_(finder) {
-}
-
-TabFinder::WebContentsObserverImpl::~WebContentsObserverImpl() {
-}
-
-void TabFinder::WebContentsObserverImpl::DidNavigateAnyFrame(
- const content::LoadCommittedDetails& details,
- const content::FrameNavigateParams& params) {
- finder_->DidNavigateAnyFrame(web_contents(), details, params);
-}
-
-void TabFinder::WebContentsObserverImpl::WebContentsDestroyed(
- WebContents* tab) {
- finder_->TabDestroyed(this);
- delete this;
-}
-
-// static
-TabFinder* TabFinder::GetInstance() {
- return IsEnabled() ? Singleton<TabFinder>::get() : NULL;
-}
-
-// static
-bool TabFinder::IsEnabled() {
- return CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kFocusExistingTabOnOpen);
-}
-
-WebContents* TabFinder::FindTab(Browser* browser,
- const GURL& url,
- Browser** existing_browser) {
- if (browser->profile()->IsOffTheRecord())
- return NULL;
-
- // If the current tab matches the url, ignore it and let the user reload the
- // existing tab.
- WebContents* selected_tab = browser->GetActiveWebContents();
- if (TabMatchesURL(selected_tab, url))
- return NULL;
-
- // See if the current browser has a tab matching the specified url.
- WebContents* tab_in_browser = FindTabInBrowser(browser, url);
- if (tab_in_browser) {
- *existing_browser = browser;
- return tab_in_browser;
- }
-
- // Then check other browsers.
- for (BrowserList::const_iterator i = BrowserList::begin();
- i != BrowserList::end(); ++i) {
- if (!(*i)->profile()->IsOffTheRecord() &&
- (*i)->profile()->IsSameProfile(browser->profile())) {
- tab_in_browser = FindTabInBrowser(*i, url);
- if (tab_in_browser) {
- *existing_browser = *i;
- return tab_in_browser;
- }
- }
- }
-
- return NULL;
-}
-
-void TabFinder::Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK_EQ(type, chrome::NOTIFICATION_TAB_PARENTED);
-
- // The tab was added to a browser. Query for its state now.
- TabContents* tab = content::Source<TabContents>(source).ptr();
- TrackTab(tab->web_contents());
-}
-
-TabFinder::TabFinder() {
- registrar_.Add(this, chrome::NOTIFICATION_TAB_PARENTED,
- content::NotificationService::AllSources());
-}
-
-TabFinder::~TabFinder() {
- STLDeleteElements(&tab_contents_observers_);
-}
-
-void TabFinder::DidNavigateAnyFrame(
- WebContents* source,
- const content::LoadCommittedDetails& details,
- const content::FrameNavigateParams& params) {
- CancelRequestsFor(source);
-
- if (content::PageTransitionIsRedirect(params.transition)) {
- // If this is a redirect, we need to go to the db to get the start.
- FetchRedirectStart(source);
- } else if (params.redirects.size() > 1 ||
- params.redirects[0] != details.entry->GetURL()) {
- web_contents_to_url_[source] = params.redirects[0];
- }
-}
-
-bool TabFinder::TabMatchesURL(WebContents* tab_contents, const GURL& url) {
- if (tab_contents->GetURL() == url)
- return true;
-
- WebContentsToURLMap::const_iterator i =
- web_contents_to_url_.find(tab_contents);
- return i != web_contents_to_url_.end() && i->second == url;
-}
-
-WebContents* TabFinder::FindTabInBrowser(Browser* browser, const GURL& url) {
- if (!browser->is_type_tabbed())
- return NULL;
-
- for (int i = 0; i < browser->tab_count(); ++i) {
- if (TabMatchesURL(browser->GetWebContentsAt(i), url))
- return browser->GetWebContentsAt(i);
- }
- return NULL;
-}
-
-void TabFinder::TrackTab(WebContents* tab) {
- for (WebContentsObservers::const_iterator i = tab_contents_observers_.begin();
- i != tab_contents_observers_.end(); ++i) {
- if ((*i)->web_contents() == tab) {
- // Already tracking the tab.
- return;
- }
- }
- WebContentsObserverImpl* observer = new WebContentsObserverImpl(tab, this);
- tab_contents_observers_.insert(observer);
- FetchRedirectStart(tab);
-}
-
-void TabFinder::TabDestroyed(WebContentsObserverImpl* observer) {
- DCHECK_GT(tab_contents_observers_.count(observer), 0u);
- tab_contents_observers_.erase(observer);
-}
-
-void TabFinder::CancelRequestsFor(WebContents* web_contents) {
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- if (profile->IsOffTheRecord())
- return;
-
- web_contents_to_url_.erase(web_contents);
-
- HistoryService* history =
- HistoryServiceFactory::GetForProfile(profile,
- Profile::EXPLICIT_ACCESS);
- if (history) {
- CancelableRequestProvider::Handle request_handle;
- if (callback_consumer_.GetFirstHandleForClientData(web_contents,
- &request_handle)) {
- history->CancelRequest(request_handle);
- }
- }
-}
-
-void TabFinder::FetchRedirectStart(WebContents* tab) {
- Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext());
- if (profile->IsOffTheRecord())
- return;
-
- NavigationEntry* committed_entry =
- tab->GetController().GetLastCommittedEntry();
- if (!committed_entry || committed_entry->GetURL().is_empty())
- return;
-
- HistoryService* history =
- HistoryServiceFactory::GetForProfile(profile,
- Profile::EXPLICIT_ACCESS);
- if (history) {
- CancelableRequestProvider::Handle request_handle =
- history->QueryRedirectsTo(
- committed_entry->GetURL(),
- &callback_consumer_,
- base::Bind(&TabFinder::QueryRedirectsToComplete,
- base::Unretained(this)));
- callback_consumer_.SetClientData(history, request_handle, tab);
- }
-}
-
-void TabFinder::QueryRedirectsToComplete(HistoryService::Handle handle,
- GURL url,
- bool success,
- history::RedirectList* redirects) {
- if (success && !redirects->empty()) {
- WebContents* web_contents =
- callback_consumer_.GetClientDataForCurrentRequest();
- DCHECK(web_contents);
- web_contents_to_url_[web_contents] = redirects->back();
- }
-}
« no previous file with comments | « chrome/browser/ui/tabs/tab_finder.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698