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

Side by Side Diff: chrome/browser/extensions/extension_activity_log.cc

Issue 10824198: Move small c/b/extensions classes into extensions namespace no.1 (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Latest-er master for cq Created 8 years, 4 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
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/extension_activity_log.h"
6
7 #include "base/command_line.h"
8 #include "base/logging.h"
9 #include "chrome/common/chrome_switches.h"
10 #include "chrome/common/extensions/extension.h"
11
12 ExtensionActivityLog::ExtensionActivityLog() {
13 log_activity_to_stdout_ = CommandLine::ForCurrentProcess()->
14 HasSwitch(switches::kEnableExtensionActivityLogging);
15 }
16
17 ExtensionActivityLog::~ExtensionActivityLog() {
18 }
19
20 // static
21 ExtensionActivityLog* ExtensionActivityLog::GetInstance() {
22 return Singleton<ExtensionActivityLog>::get();
23 }
24
25 void ExtensionActivityLog::AddObserver(
26 const extensions::Extension* extension,
27 ExtensionActivityLog::Observer* observer) {
28 base::AutoLock scoped_lock(lock_);
29
30 if (observers_.count(extension) == 0) {
31 observers_[extension] = new ObserverListThreadSafe<Observer>;
32 }
33
34 observers_[extension]->AddObserver(observer);
35 }
36
37 void ExtensionActivityLog::RemoveObserver(
38 const extensions::Extension* extension,
39 ExtensionActivityLog::Observer* observer) {
40 base::AutoLock scoped_lock(lock_);
41
42 if (observers_.count(extension) == 1) {
43 observers_[extension]->RemoveObserver(observer);
44 }
45 }
46 // Extension*
47 bool ExtensionActivityLog::HasObservers(
48 const extensions::Extension* extension) const {
49 base::AutoLock scoped_lock(lock_);
50
51 // We also return true if extension activity logging is enabled since in that
52 // case this class is observing all extensions.
53 return observers_.count(extension) > 0 || log_activity_to_stdout_;
54 }
55
56 void ExtensionActivityLog::Log(const extensions::Extension* extension,
57 Activity activity,
58 const std::string& msg) const {
59 base::AutoLock scoped_lock(lock_);
60
61 ObserverMap::const_iterator iter = observers_.find(extension);
62 if (iter != observers_.end()) {
63 iter->second->Notify(&Observer::OnExtensionActivity, extension, activity,
64 msg);
65 }
66
67 if (log_activity_to_stdout_) {
68 LOG(INFO) << extension->id() + ":" + ActivityToString(activity) + ":" + msg;
69 }
70 }
71
72 // static
73 const char* ExtensionActivityLog::ActivityToString(Activity activity) {
74 switch (activity) {
75 case ExtensionActivityLog::ACTIVITY_EXTENSION_API_CALL:
76 return "api_call";
77 case ExtensionActivityLog::ACTIVITY_EXTENSION_API_BLOCK:
78 return "api_block";
79 default:
80 NOTREACHED();
81 return "";
82 }
83 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_activity_log.h ('k') | chrome/browser/extensions/extension_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698