| Index: chrome/browser/renderer_host/chrome_render_message_filter.cc
|
| diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc
|
| index 0c7b1535920d470bda0fd782467745fa2b097ee7..0fbb8b021370f8b7fe92a3c4f9e395d193f85a32 100644
|
| --- a/chrome/browser/renderer_host/chrome_render_message_filter.cc
|
| +++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc
|
| @@ -57,6 +57,31 @@ using WebKit::WebSecurityOrigin;
|
|
|
| namespace {
|
|
|
| +void AddAPIActionToExtensionActivityLog(
|
| + Profile* profile,
|
| + const extensions::Extension* extension,
|
| + const std::string& api_call,
|
| + scoped_ptr<ListValue> args,
|
| + const std::string& extra) {
|
| + // The ActivityLog can only be accessed from the main (UI) thread. If we're
|
| + // running on the wrong thread, re-dispatch from the main thread.
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + BrowserThread::PostTask(BrowserThread::UI,
|
| + FROM_HERE,
|
| + base::Bind(&AddAPIActionToExtensionActivityLog,
|
| + profile,
|
| + extension,
|
| + api_call,
|
| + base::Passed(&args),
|
| + extra));
|
| + } else {
|
| + extensions::ActivityLog* activity_log =
|
| + extensions::ActivityLog::GetInstance(profile);
|
| + if (activity_log && activity_log->IsLogEnabled())
|
| + activity_log->LogAPIAction(extension, api_call, args.get(), extra);
|
| + }
|
| +}
|
| +
|
| void AddDOMActionToExtensionActivityLog(
|
| Profile* profile,
|
| const extensions::Extension* extension,
|
| @@ -81,7 +106,7 @@ void AddDOMActionToExtensionActivityLog(
|
| } else {
|
| extensions::ActivityLog* activity_log =
|
| extensions::ActivityLog::GetInstance(profile);
|
| - if (activity_log)
|
| + if (activity_log && activity_log->IsLogEnabled())
|
| activity_log->LogDOMAction(extension, url, url_title,
|
| api_call, args.get(), extra);
|
| }
|
| @@ -153,6 +178,8 @@ bool ChromeRenderMessageFilter::OnMessageReceived(const IPC::Message& message,
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_SuspendAck, OnExtensionSuspendAck)
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_ResumeRequests,
|
| OnExtensionResumeRequests);
|
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddAPIActionToActivityLog,
|
| + OnAddAPIActionToExtensionActivityLog);
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddDOMActionToActivityLog,
|
| OnAddDOMActionToExtensionActivityLog);
|
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_AllowDatabase, OnAllowDatabase)
|
| @@ -562,6 +589,19 @@ void ChromeRenderMessageFilter::OnExtensionResumeRequests(int route_id) {
|
| render_process_id_, route_id);
|
| }
|
|
|
| +void ChromeRenderMessageFilter::OnAddAPIActionToExtensionActivityLog(
|
| + const std::string& extension_id,
|
| + const ExtensionHostMsg_APIAction_Params& params) {
|
| + const extensions::Extension* extension =
|
| + extension_info_map_->extensions().GetByID(extension_id);
|
| + scoped_ptr<ListValue> args(params.arguments.DeepCopy());
|
| + // The activity is recorded as an API action in the extension
|
| + // activity log.
|
| + AddAPIActionToExtensionActivityLog(profile_, extension,
|
| + params.api_call, args.Pass(),
|
| + params.extra);
|
| +}
|
| +
|
| void ChromeRenderMessageFilter::OnAddDOMActionToExtensionActivityLog(
|
| const std::string& extension_id,
|
| const ExtensionHostMsg_DOMAction_Params& params) {
|
|
|