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

Side by Side Diff: chrome/browser/extensions/api/web_navigation/web_navigation_api.cc

Issue 1400823003: Creates BrowserTabStripTracker to consolidate common code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review feedback and git cl format Created 5 years, 2 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
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 // Implements the Chrome Extensions WebNavigation API. 5 // Implements the Chrome Extensions WebNavigation API.
6 6
7 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h" 7 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 const GURL& target_url) 67 const GURL& target_url)
68 : source_web_contents(source_web_contents), 68 : source_web_contents(source_web_contents),
69 source_frame_host(source_frame_host), 69 source_frame_host(source_frame_host),
70 target_web_contents(target_web_contents), 70 target_web_contents(target_web_contents),
71 target_url(target_url) { 71 target_url(target_url) {
72 } 72 }
73 73
74 WebNavigationEventRouter::PendingWebContents::~PendingWebContents() {} 74 WebNavigationEventRouter::PendingWebContents::~PendingWebContents() {}
75 75
76 WebNavigationEventRouter::WebNavigationEventRouter(Profile* profile) 76 WebNavigationEventRouter::WebNavigationEventRouter(Profile* profile)
77 : profile_(profile) { 77 : profile_(profile), browser_tab_strip_tracker_(this, this, nullptr) {
78 CHECK(registrar_.IsEmpty()); 78 CHECK(registrar_.IsEmpty());
79 registrar_.Add(this, 79 registrar_.Add(this,
80 chrome::NOTIFICATION_RETARGETING, 80 chrome::NOTIFICATION_RETARGETING,
81 content::NotificationService::AllSources()); 81 content::NotificationService::AllSources());
82 registrar_.Add(this, 82 registrar_.Add(this,
83 chrome::NOTIFICATION_TAB_ADDED, 83 chrome::NOTIFICATION_TAB_ADDED,
84 content::NotificationService::AllSources()); 84 content::NotificationService::AllSources());
85 registrar_.Add(this, 85 registrar_.Add(this,
86 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, 86 content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
87 content::NotificationService::AllSources()); 87 content::NotificationService::AllSources());
88 88
89 BrowserList::AddObserver(this); 89 browser_tab_strip_tracker_.Init(
90 for (chrome::BrowserIterator it; !it.done(); it.Next()) 90 BrowserTabStripTracker::InitWith::ALL_BROWERS);
91 OnBrowserAdded(*it);
92 } 91 }
93 92
94 WebNavigationEventRouter::~WebNavigationEventRouter() { 93 WebNavigationEventRouter::~WebNavigationEventRouter() {
95 for (chrome::BrowserIterator it; !it.done(); it.Next())
96 OnBrowserRemoved(*it);
97 BrowserList::RemoveObserver(this);
98 } 94 }
99 95
100 void WebNavigationEventRouter::OnBrowserAdded(Browser* browser) { 96 bool WebNavigationEventRouter::ShouldTrackBrowser(Browser* browser) {
101 if (!profile_->IsSameProfile(browser->profile())) 97 return profile_->IsSameProfile(browser->profile());
102 return;
103 browser->tab_strip_model()->AddObserver(this);
104 }
105
106 void WebNavigationEventRouter::OnBrowserRemoved(Browser* browser) {
107 if (!profile_->IsSameProfile(browser->profile()))
108 return;
109 browser->tab_strip_model()->RemoveObserver(this);
110 } 98 }
111 99
112 void WebNavigationEventRouter::TabReplacedAt( 100 void WebNavigationEventRouter::TabReplacedAt(
113 TabStripModel* tab_strip_model, 101 TabStripModel* tab_strip_model,
114 content::WebContents* old_contents, 102 content::WebContents* old_contents,
115 content::WebContents* new_contents, 103 content::WebContents* new_contents,
116 int index) { 104 int index) {
117 WebNavigationTabObserver* tab_observer = 105 WebNavigationTabObserver* tab_observer =
118 WebNavigationTabObserver::Get(old_contents); 106 WebNavigationTabObserver::Get(old_contents);
119 if (!tab_observer) { 107 if (!tab_observer) {
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 return g_factory.Pointer(); 613 return g_factory.Pointer();
626 } 614 }
627 615
628 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { 616 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) {
629 web_navigation_event_router_.reset(new WebNavigationEventRouter( 617 web_navigation_event_router_.reset(new WebNavigationEventRouter(
630 Profile::FromBrowserContext(browser_context_))); 618 Profile::FromBrowserContext(browser_context_)));
631 EventRouter::Get(browser_context_)->UnregisterObserver(this); 619 EventRouter::Get(browser_context_)->UnregisterObserver(this);
632 } 620 }
633 621
634 } // namespace extensions 622 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/web_navigation/web_navigation_api.h ('k') | chrome/browser/memory/tab_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698