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

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

Issue 2383573002: [DO NOT COMMIT] Remove chrome::NOTIFICATION_RETARGETING
Patch Set: Rebase on ToT Created 4 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
« no previous file with comments | « no previous file | chrome/browser/extensions/api/web_navigation/web_navigation_api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Defines the Chrome Extensions WebNavigation API functions for observing and 5 // Defines the Chrome Extensions WebNavigation API functions for observing and
6 // intercepting navigation events, as specified in the extension JSON API. 6 // intercepting navigation events, as specified in the extension JSON API.
7 7
8 #ifndef CHROME_BROWSER_EXTENSIONS_API_WEB_NAVIGATION_WEB_NAVIGATION_API_H_ 8 #ifndef CHROME_BROWSER_EXTENSIONS_API_WEB_NAVIGATION_WEB_NAVIGATION_API_H_
9 #define CHROME_BROWSER_EXTENSIONS_API_WEB_NAVIGATION_WEB_NAVIGATION_API_H_ 9 #define CHROME_BROWSER_EXTENSIONS_API_WEB_NAVIGATION_WEB_NAVIGATION_API_H_
10 10
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 // Observes navigation notifications and routes them as events to the extension 104 // Observes navigation notifications and routes them as events to the extension
105 // system. 105 // system.
106 class WebNavigationEventRouter : public TabStripModelObserver, 106 class WebNavigationEventRouter : public TabStripModelObserver,
107 public BrowserTabStripTrackerDelegate, 107 public BrowserTabStripTrackerDelegate,
108 public content::NotificationObserver { 108 public content::NotificationObserver {
109 public: 109 public:
110 explicit WebNavigationEventRouter(Profile* profile); 110 explicit WebNavigationEventRouter(Profile* profile);
111 ~WebNavigationEventRouter() override; 111 ~WebNavigationEventRouter() override;
112 112
113 private: 113 // Handler for the NOTIFICATION_RETARGETING event. The method takes the
114 // details of such an event and stores them for the later
115 // NOTIFICATION_TAB_ADDED event.
116 void Retargeting(const RetargetingDetails* details);
117
114 // Used to cache the information about newly created WebContents objects. 118 // Used to cache the information about newly created WebContents objects.
115 struct PendingWebContents{ 119 struct PendingWebContents{
116 PendingWebContents(); 120 PendingWebContents();
117 PendingWebContents(content::WebContents* source_web_contents, 121 PendingWebContents(content::WebContents* source_web_contents,
118 content::RenderFrameHost* source_frame_host, 122 content::RenderFrameHost* source_frame_host,
119 content::WebContents* target_web_contents, 123 content::WebContents* target_web_contents,
120 const GURL& target_url); 124 const GURL& target_url);
121 ~PendingWebContents(); 125 ~PendingWebContents();
122 126
123 content::WebContents* source_web_contents; 127 content::WebContents* source_web_contents;
124 content::RenderFrameHost* source_frame_host; 128 content::RenderFrameHost* source_frame_host;
125 content::WebContents* target_web_contents; 129 content::WebContents* target_web_contents;
126 GURL target_url; 130 GURL target_url;
127 }; 131 };
128 132
133 private:
129 // BrowserTabStripTrackerDelegate implementation. 134 // BrowserTabStripTrackerDelegate implementation.
130 bool ShouldTrackBrowser(Browser* browser) override; 135 bool ShouldTrackBrowser(Browser* browser) override;
131 136
132 // TabStripModelObserver implementation. 137 // TabStripModelObserver implementation.
133 void TabReplacedAt(TabStripModel* tab_strip_model, 138 void TabReplacedAt(TabStripModel* tab_strip_model,
134 content::WebContents* old_contents, 139 content::WebContents* old_contents,
135 content::WebContents* new_contents, 140 content::WebContents* new_contents,
136 int index) override; 141 int index) override;
137 142
138 // content::NotificationObserver implementation. 143 // content::NotificationObserver implementation.
139 void Observe(int type, 144 void Observe(int type,
140 const content::NotificationSource& source, 145 const content::NotificationSource& source,
141 const content::NotificationDetails& details) override; 146 const content::NotificationDetails& details) override;
142 147
143 // Handler for the NOTIFICATION_RETARGETING event. The method takes the
144 // details of such an event and stores them for the later
145 // NOTIFICATION_TAB_ADDED event.
146 void Retargeting(const RetargetingDetails* details);
147
148 // Handler for the NOTIFICATION_TAB_ADDED event. The method takes the details 148 // Handler for the NOTIFICATION_TAB_ADDED event. The method takes the details
149 // of such an event and creates a JSON formated extension event from it. 149 // of such an event and creates a JSON formated extension event from it.
150 void TabAdded(content::WebContents* tab); 150 void TabAdded(content::WebContents* tab);
151 151
152 // Handler for NOTIFICATION_WEB_CONTENTS_DESTROYED. If |tab| is in 152 // Handler for NOTIFICATION_WEB_CONTENTS_DESTROYED. If |tab| is in
153 // |pending_web_contents_|, it is removed. 153 // |pending_web_contents_|, it is removed.
154 void TabDestroyed(content::WebContents* tab); 154 void TabDestroyed(content::WebContents* tab);
155 155
156 // Mapping pointers to WebContents objects to information about how they got 156 // Mapping pointers to WebContents objects to information about how they got
157 // created. 157 // created.
158 std::map<content::WebContents*, PendingWebContents> pending_web_contents_;
159 158
160 // Used for tracking registrations to navigation notifications. 159 // Used for tracking registrations to navigation notifications.
161 content::NotificationRegistrar registrar_; 160 content::NotificationRegistrar registrar_;
162 161
163 // The profile that owns us via ExtensionService. 162 // The profile that owns us via ExtensionService.
164 Profile* profile_; 163 Profile* profile_;
165 164
166 BrowserTabStripTracker browser_tab_strip_tracker_; 165 BrowserTabStripTracker browser_tab_strip_tracker_;
167 166
168 DISALLOW_COPY_AND_ASSIGN(WebNavigationEventRouter); 167 DISALLOW_COPY_AND_ASSIGN(WebNavigationEventRouter);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 210
212 // Created lazily upon OnListenerAdded. 211 // Created lazily upon OnListenerAdded.
213 std::unique_ptr<WebNavigationEventRouter> web_navigation_event_router_; 212 std::unique_ptr<WebNavigationEventRouter> web_navigation_event_router_;
214 213
215 DISALLOW_COPY_AND_ASSIGN(WebNavigationAPI); 214 DISALLOW_COPY_AND_ASSIGN(WebNavigationAPI);
216 }; 215 };
217 216
218 } // namespace extensions 217 } // namespace extensions
219 218
220 #endif // CHROME_BROWSER_EXTENSIONS_API_WEB_NAVIGATION_WEB_NAVIGATION_API_H_ 219 #endif // CHROME_BROWSER_EXTENSIONS_API_WEB_NAVIGATION_WEB_NAVIGATION_API_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/api/web_navigation/web_navigation_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698