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

Side by Side Diff: chrome/browser/extensions/extension_webnavigation_api.h

Issue 7243012: Change many extension event routers to not be singletons and to be more profile-aware. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bookmark remove observer Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 6 // intercepting navigation events, as specified in
7 // chrome/common/extensions/api/extension_api.json. 7 // chrome/common/extensions/api/extension_api.json.
8 8
9 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_ 9 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_
10 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_ 10 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_
11 #pragma once 11 #pragma once
12 12
13 #include <map> 13 #include <map>
14 14
15 #include "base/memory/singleton.h"
16 #include "chrome/browser/extensions/extension_function.h" 15 #include "chrome/browser/extensions/extension_function.h"
16 #include "chrome/browser/profiles/profile.h"
17 #include "content/browser/tab_contents/tab_contents_observer.h" 17 #include "content/browser/tab_contents/tab_contents_observer.h"
18 #include "content/common/notification_observer.h" 18 #include "content/common/notification_observer.h"
19 #include "content/common/notification_registrar.h" 19 #include "content/common/notification_registrar.h"
20 #include "googleurl/src/gurl.h" 20 #include "googleurl/src/gurl.h"
21 21
22 class TabContents; 22 class TabContents;
23 struct ViewHostMsg_CreateWindow_Params; 23 struct ViewHostMsg_CreateWindow_Params;
24 24
25 // Tracks the navigation state of all frames currently known to the 25 // Tracks the navigation state of all frames currently known to the
26 // webNavigation API. It is mainly used to track in which frames an error 26 // webNavigation API. It is mainly used to track in which frames an error
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 // Tracks the state of the frames we are sending events for. 125 // Tracks the state of the frames we are sending events for.
126 FrameNavigationState navigation_state_; 126 FrameNavigationState navigation_state_;
127 127
128 DISALLOW_COPY_AND_ASSIGN(ExtensionWebNavigationTabObserver); 128 DISALLOW_COPY_AND_ASSIGN(ExtensionWebNavigationTabObserver);
129 }; 129 };
130 130
131 // Observes navigation notifications and routes them as events to the extension 131 // Observes navigation notifications and routes them as events to the extension
132 // system. 132 // system.
133 class ExtensionWebNavigationEventRouter : public NotificationObserver { 133 class ExtensionWebNavigationEventRouter : public NotificationObserver {
134 public: 134 public:
135 // Returns the singleton instance of the event router. 135 explicit ExtensionWebNavigationEventRouter(Profile* profile);
136 static ExtensionWebNavigationEventRouter* GetInstance(); 136 virtual ~ExtensionWebNavigationEventRouter();
137 137
138 // Invoked by the extensions service once the extension system is fully set 138 // Invoked by the extensions service once the extension system is fully set
139 // up and can start dispatching events to extensions. 139 // up and can start dispatching events to extensions.
140 void Init(); 140 void Init();
141 141
142 private: 142 private:
143 friend struct DefaultSingletonTraits<ExtensionWebNavigationEventRouter>;
144
145 ExtensionWebNavigationEventRouter();
146 virtual ~ExtensionWebNavigationEventRouter();
147
148 // NotificationObserver implementation. 143 // NotificationObserver implementation.
149 virtual void Observe(NotificationType type, 144 virtual void Observe(NotificationType type,
150 const NotificationSource& source, 145 const NotificationSource& source,
151 const NotificationDetails& details); 146 const NotificationDetails& details);
152 147
153 // Handler for the CREATING_NEW_WINDOW event. The method takes the details of 148 // Handler for the CREATING_NEW_WINDOW event. The method takes the details of
154 // such an event and constructs a suitable JSON formatted extension event from 149 // such an event and constructs a suitable JSON formatted extension event from
155 // it. 150 // it.
156 void CreatingNewWindow(TabContents* tab_content, 151 void CreatingNewWindow(TabContents* tab_content,
157 const ViewHostMsg_CreateWindow_Params* details); 152 const ViewHostMsg_CreateWindow_Params* details);
158 153
159 // Used for tracking registrations to navigation notifications. 154 // Used for tracking registrations to navigation notifications.
160 NotificationRegistrar registrar_; 155 NotificationRegistrar registrar_;
161 156
157 // The profile that owns us via ExtensionService.
158 Profile* profile_;
159
162 DISALLOW_COPY_AND_ASSIGN(ExtensionWebNavigationEventRouter); 160 DISALLOW_COPY_AND_ASSIGN(ExtensionWebNavigationEventRouter);
163 }; 161 };
164 162
165 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_ 163 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/extension_webnavigation_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698