Chromium Code Reviews| 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 #include "extensions/renderer/dispatcher.h" | 5 #include "extensions/renderer/dispatcher.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/containers/scoped_ptr_map.h" | 10 #include "base/containers/scoped_ptr_map.h" |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 214 base::ScopedPtrMap<GURL, scoped_ptr<ScriptContext>> script_contexts_; | 214 base::ScopedPtrMap<GURL, scoped_ptr<ScriptContext>> script_contexts_; |
| 215 | 215 |
| 216 mutable base::Lock lock_; | 216 mutable base::Lock lock_; |
| 217 | 217 |
| 218 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerScriptContextSet); | 218 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerScriptContextSet); |
| 219 }; | 219 }; |
| 220 | 220 |
| 221 base::LazyInstance<ServiceWorkerScriptContextSet> | 221 base::LazyInstance<ServiceWorkerScriptContextSet> |
| 222 g_service_worker_script_context_set = LAZY_INSTANCE_INITIALIZER; | 222 g_service_worker_script_context_set = LAZY_INSTANCE_INITIALIZER; |
| 223 | 223 |
| 224 base::LazyInstance<std::string> webview_partition_id = | |
| 225 LAZY_INSTANCE_INITIALIZER; | |
|
not at google - send to devlin
2015/08/31 21:52:51
This can be a member of Dispatcher, and note that
paulmeyer
2015/09/02 13:43:57
Done.
| |
| 226 | |
| 224 } // namespace | 227 } // namespace |
| 225 | 228 |
| 226 Dispatcher::Dispatcher(DispatcherDelegate* delegate) | 229 Dispatcher::Dispatcher(DispatcherDelegate* delegate) |
| 227 : delegate_(delegate), | 230 : delegate_(delegate), |
| 228 content_watcher_(new ContentWatcher()), | 231 content_watcher_(new ContentWatcher()), |
| 229 source_map_(&ResourceBundle::GetSharedInstance()), | 232 source_map_(&ResourceBundle::GetSharedInstance()), |
| 230 v8_schema_registry_(new V8SchemaRegistry), | 233 v8_schema_registry_(new V8SchemaRegistry), |
| 231 is_webkit_initialized_(false), | 234 is_webkit_initialized_(false), |
| 232 user_script_set_manager_observer_(this), | 235 user_script_set_manager_observer_(this), |
| 233 webrequest_used_(false) { | 236 webrequest_used_(false) { |
| (...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 818 new GuestViewInternalCustomBindings(context))); | 821 new GuestViewInternalCustomBindings(context))); |
| 819 module_system->RegisterNativeHandler( | 822 module_system->RegisterNativeHandler( |
| 820 "i18n", scoped_ptr<NativeHandler>(new I18NCustomBindings(context))); | 823 "i18n", scoped_ptr<NativeHandler>(new I18NCustomBindings(context))); |
| 821 module_system->RegisterNativeHandler( | 824 module_system->RegisterNativeHandler( |
| 822 "id_generator", | 825 "id_generator", |
| 823 scoped_ptr<NativeHandler>(new IdGeneratorCustomBindings(context))); | 826 scoped_ptr<NativeHandler>(new IdGeneratorCustomBindings(context))); |
| 824 module_system->RegisterNativeHandler( | 827 module_system->RegisterNativeHandler( |
| 825 "runtime", scoped_ptr<NativeHandler>(new RuntimeCustomBindings(context))); | 828 "runtime", scoped_ptr<NativeHandler>(new RuntimeCustomBindings(context))); |
| 826 } | 829 } |
| 827 | 830 |
| 831 // static | |
| 832 std::string Dispatcher::GetWebViewPartitionID() { | |
| 833 return webview_partition_id.Get(); | |
| 834 } | |
| 835 | |
| 828 bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) { | 836 bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) { |
| 829 bool handled = true; | 837 bool handled = true; |
| 830 IPC_BEGIN_MESSAGE_MAP(Dispatcher, message) | 838 IPC_BEGIN_MESSAGE_MAP(Dispatcher, message) |
| 831 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension) | 839 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension) |
| 832 IPC_MESSAGE_HANDLER(ExtensionMsg_CancelSuspend, OnCancelSuspend) | 840 IPC_MESSAGE_HANDLER(ExtensionMsg_CancelSuspend, OnCancelSuspend) |
| 833 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage) | 841 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage) |
| 834 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect) | 842 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect) |
| 835 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, OnDispatchOnDisconnect) | 843 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, OnDispatchOnDisconnect) |
| 836 IPC_MESSAGE_HANDLER(ExtensionMsg_Loaded, OnLoaded) | 844 IPC_MESSAGE_HANDLER(ExtensionMsg_Loaded, OnLoaded) |
| 837 IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnMessageInvoke) | 845 IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnMessageInvoke) |
| 838 IPC_MESSAGE_HANDLER(ExtensionMsg_SetChannel, OnSetChannel) | 846 IPC_MESSAGE_HANDLER(ExtensionMsg_SetChannel, OnSetChannel) |
| 839 IPC_MESSAGE_HANDLER(ExtensionMsg_SetFunctionNames, OnSetFunctionNames) | 847 IPC_MESSAGE_HANDLER(ExtensionMsg_SetFunctionNames, OnSetFunctionNames) |
| 840 IPC_MESSAGE_HANDLER(ExtensionMsg_SetScriptingWhitelist, | 848 IPC_MESSAGE_HANDLER(ExtensionMsg_SetScriptingWhitelist, |
| 841 OnSetScriptingWhitelist) | 849 OnSetScriptingWhitelist) |
| 842 IPC_MESSAGE_HANDLER(ExtensionMsg_SetSystemFont, OnSetSystemFont) | 850 IPC_MESSAGE_HANDLER(ExtensionMsg_SetSystemFont, OnSetSystemFont) |
| 851 IPC_MESSAGE_HANDLER(ExtensionMsg_SetWebViewPartitionID, | |
| 852 OnSetWebViewPartitionID) | |
| 843 IPC_MESSAGE_HANDLER(ExtensionMsg_ShouldSuspend, OnShouldSuspend) | 853 IPC_MESSAGE_HANDLER(ExtensionMsg_ShouldSuspend, OnShouldSuspend) |
| 844 IPC_MESSAGE_HANDLER(ExtensionMsg_Suspend, OnSuspend) | 854 IPC_MESSAGE_HANDLER(ExtensionMsg_Suspend, OnSuspend) |
| 845 IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs) | 855 IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs) |
| 846 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded) | 856 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded) |
| 847 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions) | 857 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions) |
| 848 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions, | 858 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions, |
| 849 OnUpdateTabSpecificPermissions) | 859 OnUpdateTabSpecificPermissions) |
| 850 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions, | 860 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions, |
| 851 OnClearTabSpecificPermissions) | 861 OnClearTabSpecificPermissions) |
| 852 IPC_MESSAGE_HANDLER(ExtensionMsg_UsingWebRequestAPI, OnUsingWebRequestAPI) | 862 IPC_MESSAGE_HANDLER(ExtensionMsg_UsingWebRequestAPI, OnUsingWebRequestAPI) |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1047 const ExtensionsClient::ScriptingWhitelist& extension_ids) { | 1057 const ExtensionsClient::ScriptingWhitelist& extension_ids) { |
| 1048 ExtensionsClient::Get()->SetScriptingWhitelist(extension_ids); | 1058 ExtensionsClient::Get()->SetScriptingWhitelist(extension_ids); |
| 1049 } | 1059 } |
| 1050 | 1060 |
| 1051 void Dispatcher::OnSetSystemFont(const std::string& font_family, | 1061 void Dispatcher::OnSetSystemFont(const std::string& font_family, |
| 1052 const std::string& font_size) { | 1062 const std::string& font_size) { |
| 1053 system_font_family_ = font_family; | 1063 system_font_family_ = font_family; |
| 1054 system_font_size_ = font_size; | 1064 system_font_size_ = font_size; |
| 1055 } | 1065 } |
| 1056 | 1066 |
| 1067 void Dispatcher::OnSetWebViewPartitionID(const std::string& partition_id) { | |
| 1068 // |webview_partition_id| cannot be changed once set. | |
| 1069 std::string& stored_id = webview_partition_id.Get(); | |
| 1070 DCHECK(stored_id.empty() || stored_id == partition_id); | |
| 1071 if (stored_id.empty()) | |
| 1072 stored_id = partition_id; | |
| 1073 } | |
| 1074 | |
| 1057 void Dispatcher::OnShouldSuspend(const std::string& extension_id, | 1075 void Dispatcher::OnShouldSuspend(const std::string& extension_id, |
| 1058 uint64 sequence_id) { | 1076 uint64 sequence_id) { |
| 1059 RenderThread::Get()->Send( | 1077 RenderThread::Get()->Send( |
| 1060 new ExtensionHostMsg_ShouldSuspendAck(extension_id, sequence_id)); | 1078 new ExtensionHostMsg_ShouldSuspendAck(extension_id, sequence_id)); |
| 1061 } | 1079 } |
| 1062 | 1080 |
| 1063 void Dispatcher::OnSuspend(const std::string& extension_id) { | 1081 void Dispatcher::OnSuspend(const std::string& extension_id) { |
| 1064 // Dispatch the suspend event. This doesn't go through the standard event | 1082 // Dispatch the suspend event. This doesn't go through the standard event |
| 1065 // dispatch machinery because it requires special handling. We need to let | 1083 // dispatch machinery because it requires special handling. We need to let |
| 1066 // the browser know when we are starting and stopping the event dispatch, so | 1084 // the browser know when we are starting and stopping the event dispatch, so |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1569 void Dispatcher::AddChannelSpecificFeatures() { | 1587 void Dispatcher::AddChannelSpecificFeatures() { |
| 1570 // chrome-extension: resources should be allowed to register a Service Worker. | 1588 // chrome-extension: resources should be allowed to register a Service Worker. |
| 1571 if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker) | 1589 if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker) |
| 1572 ->IsAvailableToEnvironment() | 1590 ->IsAvailableToEnvironment() |
| 1573 .is_available()) | 1591 .is_available()) |
| 1574 WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers( | 1592 WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers( |
| 1575 WebString::fromUTF8(kExtensionScheme)); | 1593 WebString::fromUTF8(kExtensionScheme)); |
| 1576 } | 1594 } |
| 1577 | 1595 |
| 1578 } // namespace extensions | 1596 } // namespace extensions |
| OLD | NEW |