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

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

Issue 2089333002: [Extensions] Add renderer-side logic to short circuit activity logging (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Guard adding dom activity loggers Created 4 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
« no previous file with comments | « extensions/renderer/dispatcher.h ('k') | extensions/renderer/script_injection.h » ('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 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } // namespace 204 } // namespace
205 205
206 // Note that we can't use Blink public APIs in the constructor becase Blink 206 // Note that we can't use Blink public APIs in the constructor becase Blink
207 // is not initialized at the point we create Dispatcher. 207 // is not initialized at the point we create Dispatcher.
208 Dispatcher::Dispatcher(DispatcherDelegate* delegate) 208 Dispatcher::Dispatcher(DispatcherDelegate* delegate)
209 : delegate_(delegate), 209 : delegate_(delegate),
210 content_watcher_(new ContentWatcher()), 210 content_watcher_(new ContentWatcher()),
211 source_map_(&ResourceBundle::GetSharedInstance()), 211 source_map_(&ResourceBundle::GetSharedInstance()),
212 v8_schema_registry_(new V8SchemaRegistry), 212 v8_schema_registry_(new V8SchemaRegistry),
213 user_script_set_manager_observer_(this), 213 user_script_set_manager_observer_(this),
214 webrequest_used_(false) { 214 webrequest_used_(false),
215 activity_logging_enabled_(false) {
215 const base::CommandLine& command_line = 216 const base::CommandLine& command_line =
216 *(base::CommandLine::ForCurrentProcess()); 217 *(base::CommandLine::ForCurrentProcess());
217 set_idle_notifications_ = 218 set_idle_notifications_ =
218 command_line.HasSwitch(switches::kExtensionProcess) || 219 command_line.HasSwitch(switches::kExtensionProcess) ||
219 command_line.HasSwitch(::switches::kSingleProcess); 220 command_line.HasSwitch(::switches::kSingleProcess);
220 221
221 if (set_idle_notifications_) { 222 if (set_idle_notifications_) {
222 RenderThread::Get()->SetIdleNotificationDelayInMs( 223 RenderThread::Get()->SetIdleNotificationDelayInMs(
223 kInitialExtensionIdleHandlerDelayMs); 224 kInitialExtensionIdleHandlerDelayMs);
224 } 225 }
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 std::unique_ptr<NativeHandler>(MessagingBindings::Get(context))); 884 std::unique_ptr<NativeHandler>(MessagingBindings::Get(context)));
884 module_system->RegisterNativeHandler( 885 module_system->RegisterNativeHandler(
885 "apiDefinitions", std::unique_ptr<NativeHandler>( 886 "apiDefinitions", std::unique_ptr<NativeHandler>(
886 new ApiDefinitionsNatives(dispatcher, context))); 887 new ApiDefinitionsNatives(dispatcher, context)));
887 module_system->RegisterNativeHandler( 888 module_system->RegisterNativeHandler(
888 "sendRequest", std::unique_ptr<NativeHandler>( 889 "sendRequest", std::unique_ptr<NativeHandler>(
889 new SendRequestNatives(request_sender, context))); 890 new SendRequestNatives(request_sender, context)));
890 module_system->RegisterNativeHandler( 891 module_system->RegisterNativeHandler(
891 "setIcon", std::unique_ptr<NativeHandler>(new SetIconNatives(context))); 892 "setIcon", std::unique_ptr<NativeHandler>(new SetIconNatives(context)));
892 module_system->RegisterNativeHandler( 893 module_system->RegisterNativeHandler(
893 "activityLogger", 894 "activityLogger", std::unique_ptr<NativeHandler>(
894 std::unique_ptr<NativeHandler>(new APIActivityLogger(context))); 895 new APIActivityLogger(context, dispatcher)));
895 module_system->RegisterNativeHandler( 896 module_system->RegisterNativeHandler(
896 "renderFrameObserverNatives", 897 "renderFrameObserverNatives",
897 std::unique_ptr<NativeHandler>(new RenderFrameObserverNatives(context))); 898 std::unique_ptr<NativeHandler>(new RenderFrameObserverNatives(context)));
898 899
899 // Natives used by multiple APIs. 900 // Natives used by multiple APIs.
900 module_system->RegisterNativeHandler( 901 module_system->RegisterNativeHandler(
901 "file_system_natives", 902 "file_system_natives",
902 std::unique_ptr<NativeHandler>(new FileSystemNatives(context))); 903 std::unique_ptr<NativeHandler>(new FileSystemNatives(context)));
903 904
904 // Custom bindings. 905 // Custom bindings.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 IPC_MESSAGE_HANDLER(ExtensionMsg_ShouldSuspend, OnShouldSuspend) 948 IPC_MESSAGE_HANDLER(ExtensionMsg_ShouldSuspend, OnShouldSuspend)
948 IPC_MESSAGE_HANDLER(ExtensionMsg_Suspend, OnSuspend) 949 IPC_MESSAGE_HANDLER(ExtensionMsg_Suspend, OnSuspend)
949 IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs) 950 IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs)
950 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded) 951 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded)
951 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions) 952 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions)
952 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions, 953 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions,
953 OnUpdateTabSpecificPermissions) 954 OnUpdateTabSpecificPermissions)
954 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions, 955 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions,
955 OnClearTabSpecificPermissions) 956 OnClearTabSpecificPermissions)
956 IPC_MESSAGE_HANDLER(ExtensionMsg_UsingWebRequestAPI, OnUsingWebRequestAPI) 957 IPC_MESSAGE_HANDLER(ExtensionMsg_UsingWebRequestAPI, OnUsingWebRequestAPI)
958 IPC_MESSAGE_HANDLER(ExtensionMsg_SetActivityLoggingEnabled,
959 OnSetActivityLoggingEnabled)
957 IPC_MESSAGE_FORWARD(ExtensionMsg_WatchPages, 960 IPC_MESSAGE_FORWARD(ExtensionMsg_WatchPages,
958 content_watcher_.get(), 961 content_watcher_.get(),
959 ContentWatcher::OnWatchPages) 962 ContentWatcher::OnWatchPages)
960 IPC_MESSAGE_UNHANDLED(handled = false) 963 IPC_MESSAGE_UNHANDLED(handled = false)
961 IPC_END_MESSAGE_MAP() 964 IPC_END_MESSAGE_MAP()
962 965
963 return handled; 966 return handled;
964 } 967 }
965 void Dispatcher::IdleNotification() { 968 void Dispatcher::IdleNotification() {
966 if (set_idle_notifications_ && forced_idle_timer_) { 969 if (set_idle_notifications_ && forced_idle_timer_) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 error.c_str()); 1011 error.c_str());
1009 LOG(FATAL) << extension_id << " was never loaded: " << error; 1012 LOG(FATAL) << extension_id << " was never loaded: " << error;
1010 } 1013 }
1011 1014
1012 active_extension_ids_.insert(extension_id); 1015 active_extension_ids_.insert(extension_id);
1013 1016
1014 // This is called when starting a new extension page, so start the idle 1017 // This is called when starting a new extension page, so start the idle
1015 // handler ticking. 1018 // handler ticking.
1016 RenderThread::Get()->ScheduleIdleHandler(kInitialExtensionIdleHandlerDelayMs); 1019 RenderThread::Get()->ScheduleIdleHandler(kInitialExtensionIdleHandlerDelayMs);
1017 1020
1018 DOMActivityLogger::AttachToWorld( 1021 if (activity_logging_enabled_) {
1019 DOMActivityLogger::kMainWorldId, extension_id); 1022 DOMActivityLogger::AttachToWorld(DOMActivityLogger::kMainWorldId,
1023 extension_id);
1024 }
1020 1025
1021 InitOriginPermissions(extension); 1026 InitOriginPermissions(extension);
1022 1027
1023 UpdateActiveExtensions(); 1028 UpdateActiveExtensions();
1024 } 1029 }
1025 1030
1026 void Dispatcher::OnCancelSuspend(const std::string& extension_id) { 1031 void Dispatcher::OnCancelSuspend(const std::string& extension_id) {
1027 DispatchEvent(extension_id, kOnSuspendCanceledEvent); 1032 DispatchEvent(extension_id, kOnSuspendCanceledEvent);
1028 } 1033 }
1029 1034
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 extension->permissions_data()->GetEffectiveHostPermissions()); 1253 extension->permissions_data()->GetEffectiveHostPermissions());
1249 } 1254 }
1250 } 1255 }
1251 } 1256 }
1252 } 1257 }
1253 1258
1254 void Dispatcher::OnUsingWebRequestAPI(bool webrequest_used) { 1259 void Dispatcher::OnUsingWebRequestAPI(bool webrequest_used) {
1255 webrequest_used_ = webrequest_used; 1260 webrequest_used_ = webrequest_used;
1256 } 1261 }
1257 1262
1263 void Dispatcher::OnSetActivityLoggingEnabled(bool enabled) {
1264 activity_logging_enabled_ = enabled;
1265 if (enabled) {
1266 for (const std::string& id : active_extension_ids_)
1267 DOMActivityLogger::AttachToWorld(DOMActivityLogger::kMainWorldId, id);
1268 }
1269 script_injection_manager_->set_activity_logging_enabled(enabled);
1270 user_script_set_manager_->set_activity_logging_enabled(enabled);
1271 }
1272
1258 void Dispatcher::OnUserScriptsUpdated(const std::set<HostID>& changed_hosts, 1273 void Dispatcher::OnUserScriptsUpdated(const std::set<HostID>& changed_hosts,
1259 const std::vector<UserScript*>& scripts) { 1274 const std::vector<UserScript*>& scripts) {
1260 UpdateActiveExtensions(); 1275 UpdateActiveExtensions();
1261 } 1276 }
1262 1277
1263 void Dispatcher::UpdateActiveExtensions() { 1278 void Dispatcher::UpdateActiveExtensions() {
1264 std::set<std::string> active_extensions = active_extension_ids_; 1279 std::set<std::string> active_extensions = active_extension_ids_;
1265 user_script_set_manager_->GetAllActiveExtensionIds(&active_extensions); 1280 user_script_set_manager_->GetAllActiveExtensionIds(&active_extensions);
1266 delegate_->OnActiveExtensionsUpdated(active_extensions); 1281 delegate_->OnActiveExtensionsUpdated(active_extensions);
1267 } 1282 }
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 // The "guestViewDeny" module must always be loaded last. It registers 1660 // The "guestViewDeny" module must always be loaded last. It registers
1646 // error-providing custom elements for the GuestView types that are not 1661 // error-providing custom elements for the GuestView types that are not
1647 // available, and thus all of those types must have been checked and loaded 1662 // available, and thus all of those types must have been checked and loaded
1648 // (or not loaded) beforehand. 1663 // (or not loaded) beforehand.
1649 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { 1664 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) {
1650 module_system->Require("guestViewDeny"); 1665 module_system->Require("guestViewDeny");
1651 } 1666 }
1652 } 1667 }
1653 1668
1654 } // namespace extensions 1669 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/dispatcher.h ('k') | extensions/renderer/script_injection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698