| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/extensions/extension_function_dispatcher.h" | 5 #include "chrome/browser/extensions/extension_function_dispatcher.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/json/json_string_value_serializer.h" | 10 #include "base/json/json_string_value_serializer.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 BrowserThread::PostTask(BrowserThread::UI, | 56 BrowserThread::PostTask(BrowserThread::UI, |
| 57 FROM_HERE, | 57 FROM_HERE, |
| 58 base::Bind(&LogSuccess, | 58 base::Bind(&LogSuccess, |
| 59 extension, | 59 extension, |
| 60 api_name, | 60 api_name, |
| 61 base::Passed(&args), | 61 base::Passed(&args), |
| 62 profile)); | 62 profile)); |
| 63 } else { | 63 } else { |
| 64 extensions::ActivityLog* activity_log = | 64 extensions::ActivityLog* activity_log = |
| 65 extensions::ActivityLog::GetInstance(profile); | 65 extensions::ActivityLog::GetInstance(profile); |
| 66 activity_log->LogAPIAction(extension, api_name, args.get(), ""); | 66 activity_log->LogAPIAction(extension, api_name, args.get(), std::string()); |
| 67 } | 67 } |
| 68 } | 68 } |
| 69 | 69 |
| 70 void LogFailure(const Extension* extension, | 70 void LogFailure(const Extension* extension, |
| 71 const std::string& api_name, | 71 const std::string& api_name, |
| 72 scoped_ptr<ListValue> args, | 72 scoped_ptr<ListValue> args, |
| 73 const char* reason, | 73 const char* reason, |
| 74 Profile* profile) { | 74 Profile* profile) { |
| 75 // The ActivityLog can only be accessed from the main (UI) thread. If we're | 75 // The ActivityLog can only be accessed from the main (UI) thread. If we're |
| 76 // running on the wrong thread, re-dispatch from the main thread. | 76 // running on the wrong thread, re-dispatch from the main thread. |
| 77 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { | 77 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| 78 BrowserThread::PostTask(BrowserThread::UI, | 78 BrowserThread::PostTask(BrowserThread::UI, |
| 79 FROM_HERE, | 79 FROM_HERE, |
| 80 base::Bind(&LogFailure, | 80 base::Bind(&LogFailure, |
| 81 extension, | 81 extension, |
| 82 api_name, | 82 api_name, |
| 83 base::Passed(&args), | 83 base::Passed(&args), |
| 84 reason, | 84 reason, |
| 85 profile)); | 85 profile)); |
| 86 } else { | 86 } else { |
| 87 extensions::ActivityLog* activity_log = | 87 extensions::ActivityLog* activity_log = |
| 88 extensions::ActivityLog::GetInstance(profile); | 88 extensions::ActivityLog::GetInstance(profile); |
| 89 activity_log->LogBlockedAction(extension, | 89 activity_log->LogBlockedAction( |
| 90 api_name, | 90 extension, api_name, args.get(), reason, std::string()); |
| 91 args.get(), | |
| 92 reason, | |
| 93 ""); | |
| 94 } | 91 } |
| 95 } | 92 } |
| 96 | 93 |
| 97 | 94 |
| 98 // Separate copy of ExtensionAPI used for IO thread extension functions. We need | 95 // Separate copy of ExtensionAPI used for IO thread extension functions. We need |
| 99 // this because ExtensionAPI has mutable data. It should be possible to remove | 96 // this because ExtensionAPI has mutable data. It should be possible to remove |
| 100 // this once all the extension APIs are updated to the feature system. | 97 // this once all the extension APIs are updated to the feature system. |
| 101 struct Static { | 98 struct Static { |
| 102 Static() | 99 Static() |
| 103 : api(extensions::ExtensionAPI::CreateWithDefaultConfiguration()) { | 100 : api(extensions::ExtensionAPI::CreateWithDefaultConfiguration()) { |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 } | 402 } |
| 406 | 403 |
| 407 // static | 404 // static |
| 408 void ExtensionFunctionDispatcher::SendAccessDenied( | 405 void ExtensionFunctionDispatcher::SendAccessDenied( |
| 409 IPC::Sender* ipc_sender, int routing_id, int request_id) { | 406 IPC::Sender* ipc_sender, int routing_id, int request_id) { |
| 410 ListValue empty_list; | 407 ListValue empty_list; |
| 411 ipc_sender->Send(new ExtensionMsg_Response( | 408 ipc_sender->Send(new ExtensionMsg_Response( |
| 412 routing_id, request_id, false, empty_list, | 409 routing_id, request_id, false, empty_list, |
| 413 "Access to extension API denied.")); | 410 "Access to extension API denied.")); |
| 414 } | 411 } |
| OLD | NEW |