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

Side by Side Diff: extensions/renderer/dispatcher.cc

Issue 1312653003: Fix for WebView accessible resources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments by kalman@. Created 5 years, 3 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 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
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
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
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
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
OLDNEW
« extensions/browser/renderer_startup_helper.cc ('K') | « extensions/renderer/dispatcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698