OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef EXTENSIONS_RENDERER_DISPATCHER_H_ | 5 #ifndef EXTENSIONS_RENDERER_DISPATCHER_H_ |
6 #define EXTENSIONS_RENDERER_DISPATCHER_H_ | 6 #define EXTENSIONS_RENDERER_DISPATCHER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
11 #include <utility> | 11 #include <utility> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
15 #include "base/scoped_observer.h" | 15 #include "base/scoped_observer.h" |
16 #include "base/timer/timer.h" | 16 #include "base/timer/timer.h" |
17 #include "content/public/renderer/render_process_observer.h" | 17 #include "content/public/renderer/render_process_observer.h" |
18 #include "extensions/common/event_filter.h" | 18 #include "extensions/common/event_filter.h" |
19 #include "extensions/common/extension.h" | 19 #include "extensions/common/extension.h" |
20 #include "extensions/common/extension_set.h" | |
21 #include "extensions/common/extensions_client.h" | 20 #include "extensions/common/extensions_client.h" |
22 #include "extensions/common/features/feature.h" | 21 #include "extensions/common/features/feature.h" |
23 #include "extensions/renderer/resource_bundle_source_map.h" | 22 #include "extensions/renderer/resource_bundle_source_map.h" |
24 #include "extensions/renderer/script_context.h" | 23 #include "extensions/renderer/script_context.h" |
25 #include "extensions/renderer/script_context_set.h" | 24 #include "extensions/renderer/script_context_set.h" |
26 #include "extensions/renderer/user_script_set_manager.h" | 25 #include "extensions/renderer/user_script_set_manager.h" |
27 #include "extensions/renderer/v8_schema_registry.h" | 26 #include "extensions/renderer/v8_schema_registry.h" |
28 #include "third_party/WebKit/public/platform/WebString.h" | 27 #include "third_party/WebKit/public/platform/WebString.h" |
29 #include "third_party/WebKit/public/platform/WebVector.h" | 28 #include "third_party/WebKit/public/platform/WebVector.h" |
30 #include "v8/include/v8.h" | 29 #include "v8/include/v8.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 class Dispatcher : public content::RenderProcessObserver, | 66 class Dispatcher : public content::RenderProcessObserver, |
68 public UserScriptSetManager::Observer { | 67 public UserScriptSetManager::Observer { |
69 public: | 68 public: |
70 explicit Dispatcher(DispatcherDelegate* delegate); | 69 explicit Dispatcher(DispatcherDelegate* delegate); |
71 ~Dispatcher() override; | 70 ~Dispatcher() override; |
72 | 71 |
73 const std::set<std::string>& function_names() const { | 72 const std::set<std::string>& function_names() const { |
74 return function_names_; | 73 return function_names_; |
75 } | 74 } |
76 | 75 |
77 const ExtensionSet* extensions() const { return &extensions_; } | |
78 | |
79 const ScriptContextSet& script_context_set() const { | 76 const ScriptContextSet& script_context_set() const { |
80 return *script_context_set_; | 77 return *script_context_set_; |
81 } | 78 } |
82 | 79 |
83 V8SchemaRegistry* v8_schema_registry() { return v8_schema_registry_.get(); } | 80 V8SchemaRegistry* v8_schema_registry() { return v8_schema_registry_.get(); } |
84 | 81 |
85 ContentWatcher* content_watcher() { return content_watcher_.get(); } | 82 ContentWatcher* content_watcher() { return content_watcher_.get(); } |
86 | 83 |
87 RequestSender* request_sender() { return request_sender_.get(); } | 84 RequestSender* request_sender() { return request_sender_.get(); } |
88 | 85 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 static void RegisterNativeHandlers(ModuleSystem* module_system, | 123 static void RegisterNativeHandlers(ModuleSystem* module_system, |
127 ScriptContext* context, | 124 ScriptContext* context, |
128 Dispatcher* dispatcher, | 125 Dispatcher* dispatcher, |
129 RequestSender* request_sender, | 126 RequestSender* request_sender, |
130 V8SchemaRegistry* v8_schema_registry); | 127 V8SchemaRegistry* v8_schema_registry); |
131 | 128 |
132 bool WasWebRequestUsedBySomeExtensions() const { return webrequest_used_; } | 129 bool WasWebRequestUsedBySomeExtensions() const { return webrequest_used_; } |
133 | 130 |
134 private: | 131 private: |
135 // The RendererPermissionsPolicyDelegateTest.CannotScriptWebstore test needs | 132 // The RendererPermissionsPolicyDelegateTest.CannotScriptWebstore test needs |
136 // to call LoadExtensionForTest and the OnActivateExtension IPCs. | 133 // to call the OnActivateExtension IPCs. |
137 friend class ::ChromeRenderViewTest; | 134 friend class ::ChromeRenderViewTest; |
138 FRIEND_TEST_ALL_PREFIXES(RendererPermissionsPolicyDelegateTest, | 135 FRIEND_TEST_ALL_PREFIXES(RendererPermissionsPolicyDelegateTest, |
139 CannotScriptWebstore); | 136 CannotScriptWebstore); |
140 | 137 |
141 // Inserts an Extension into |extensions_|. Normally the only way to do this | |
142 // would be through the ExtensionMsg_Loaded IPC (OnLoaded) but this can't be | |
143 // triggered for tests, because in the process of serializing then | |
144 // deserializing the IPC, Extension IDs manually set for testing are lost. | |
145 void LoadExtensionForTest(const Extension* extension); | |
146 | |
147 // RenderProcessObserver implementation: | 138 // RenderProcessObserver implementation: |
148 bool OnControlMessageReceived(const IPC::Message& message) override; | 139 bool OnControlMessageReceived(const IPC::Message& message) override; |
149 void WebKitInitialized() override; | 140 void WebKitInitialized() override; |
150 void IdleNotification() override; | 141 void IdleNotification() override; |
151 void OnRenderProcessShutdown() override; | 142 void OnRenderProcessShutdown() override; |
152 | 143 |
153 void OnActivateExtension(const std::string& extension_id); | 144 void OnActivateExtension(const std::string& extension_id); |
154 void OnCancelSuspend(const std::string& extension_id); | 145 void OnCancelSuspend(const std::string& extension_id); |
155 void OnDeliverMessage(int target_port_id, const Message& message); | 146 void OnDeliverMessage(int target_port_id, const Message& message); |
156 void OnDispatchOnConnect(int target_port_id, | 147 void OnDispatchOnConnect(int target_port_id, |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 // Adds features that are specific to the current channel. | 240 // Adds features that are specific to the current channel. |
250 void AddChannelSpecificFeatures(); | 241 void AddChannelSpecificFeatures(); |
251 | 242 |
252 // The delegate for this dispatcher. Not owned, but must extend beyond the | 243 // The delegate for this dispatcher. Not owned, but must extend beyond the |
253 // Dispatcher's own lifetime. | 244 // Dispatcher's own lifetime. |
254 DispatcherDelegate* delegate_; | 245 DispatcherDelegate* delegate_; |
255 | 246 |
256 // True if the IdleNotification timer should be set. | 247 // True if the IdleNotification timer should be set. |
257 bool set_idle_notifications_; | 248 bool set_idle_notifications_; |
258 | 249 |
259 // Contains all loaded extensions. This is essentially the renderer | |
260 // counterpart to ExtensionService in the browser. It contains information | |
261 // about all extensions currently loaded by the browser. | |
262 ExtensionSet extensions_; | |
263 | |
264 // The IDs of extensions that failed to load, mapped to the error message | 250 // The IDs of extensions that failed to load, mapped to the error message |
265 // generated on failure. | 251 // generated on failure. |
266 std::map<std::string, std::string> extension_load_errors_; | 252 std::map<std::string, std::string> extension_load_errors_; |
267 | 253 |
268 // All the bindings contexts that are currently loaded for this renderer. | 254 // All the bindings contexts that are currently loaded for this renderer. |
269 // There is zero or one for each v8 context. | 255 // There is zero or one for each v8 context. |
270 scoped_ptr<ScriptContextSet> script_context_set_; | 256 scoped_ptr<ScriptContextSet> script_context_set_; |
271 | 257 |
272 scoped_ptr<ContentWatcher> content_watcher_; | 258 scoped_ptr<ContentWatcher> content_watcher_; |
273 | 259 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 | 296 |
311 // Status of webrequest usage. | 297 // Status of webrequest usage. |
312 bool webrequest_used_; | 298 bool webrequest_used_; |
313 | 299 |
314 DISALLOW_COPY_AND_ASSIGN(Dispatcher); | 300 DISALLOW_COPY_AND_ASSIGN(Dispatcher); |
315 }; | 301 }; |
316 | 302 |
317 } // namespace extensions | 303 } // namespace extensions |
318 | 304 |
319 #endif // EXTENSIONS_RENDERER_DISPATCHER_H_ | 305 #endif // EXTENSIONS_RENDERER_DISPATCHER_H_ |
OLD | NEW |