OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 <set> | 5 #include <set> |
6 #include <vector> | 6 #include <vector> |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/json/json_string_value_serializer.h" | 8 #include "base/json/json_string_value_serializer.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
11 #include "base/threading/thread_checker.h" | 11 #include "base/threading/thread_checker.h" |
12 #include "chrome/browser/extensions/activity_log/activity_log.h" | 12 #include "chrome/browser/extensions/activity_log/activity_log.h" |
13 #include "chrome/browser/extensions/activity_log/api_actions.h" | 13 #include "chrome/browser/extensions/activity_log/api_actions.h" |
14 #include "chrome/browser/extensions/activity_log/blocked_actions.h" | 14 #include "chrome/browser/extensions/activity_log/blocked_actions.h" |
15 #include "chrome/browser/extensions/api/activity_log_private/activity_log_privat e_api.h" | 15 #include "chrome/browser/extensions/api/activity_log_private/activity_log_privat e_api.h" |
16 #include "chrome/browser/extensions/extension_service.h" | 16 #include "chrome/browser/extensions/extension_service.h" |
17 #include "chrome/browser/extensions/extension_system.h" | 17 #include "chrome/browser/extensions/extension_system.h" |
18 #include "chrome/browser/profiles/incognito_helpers.h" | 18 #include "chrome/browser/profiles/incognito_helpers.h" |
19 #include "chrome/common/chrome_constants.h" | 19 #include "chrome/common/chrome_constants.h" |
20 #include "chrome/common/chrome_switches.h" | 20 #include "chrome/common/chrome_switches.h" |
21 #include "chrome/common/extensions/extension.h" | 21 #include "chrome/common/extensions/extension.h" |
22 #include "content/public/browser/web_contents.h" | 22 #include "content/public/browser/web_contents.h" |
23 #include "googleurl/src/gurl.h" | 23 #include "googleurl/src/gurl.h" |
24 #include "sql/error_delegate_util.h" | |
25 #include "third_party/re2/re2/re2.h" | 24 #include "third_party/re2/re2/re2.h" |
26 | 25 |
27 namespace { | 26 namespace { |
28 | 27 |
29 // Concatenate arguments. | 28 // Concatenate arguments. |
30 std::string MakeArgList(const ListValue* args) { | 29 std::string MakeArgList(const ListValue* args) { |
31 std::string call_signature; | 30 std::string call_signature; |
32 ListValue::const_iterator it = args->begin(); | 31 ListValue::const_iterator it = args->begin(); |
33 for (; it != args->end(); ++it) { | 32 for (; it != args->end(); ++it) { |
34 std::string arg; | 33 std::string arg; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
124 | 123 |
125 // If the database cannot be initialized for some reason, we keep | 124 // If the database cannot be initialized for some reason, we keep |
126 // chugging along but nothing will get recorded. If the UI is | 125 // chugging along but nothing will get recorded. If the UI is |
127 // available, things will still get sent to the UI even if nothing | 126 // available, things will still get sent to the UI even if nothing |
128 // is being written to the database. | 127 // is being written to the database. |
129 db_ = new ActivityDatabase(); | 128 db_ = new ActivityDatabase(); |
130 if (!IsLogEnabled()) return; | 129 if (!IsLogEnabled()) return; |
131 base::FilePath base_dir = profile->GetPath(); | 130 base::FilePath base_dir = profile->GetPath(); |
132 base::FilePath database_name = base_dir.Append( | 131 base::FilePath database_name = base_dir.Append( |
133 chrome::kExtensionActivityLogFilename); | 132 chrome::kExtensionActivityLogFilename); |
134 db_->SetErrorCallback(base::Bind(&ActivityLog::DatabaseErrorCallback, | |
135 base::Unretained(this))); | |
136 ScheduleAndForget(&ActivityDatabase::Init, database_name); | 133 ScheduleAndForget(&ActivityDatabase::Init, database_name); |
137 } | 134 } |
138 | 135 |
139 ActivityLog::~ActivityLog() { | 136 ActivityLog::~ActivityLog() { |
140 ScheduleAndForget(&ActivityDatabase::Close); | 137 if (dispatch_thread_ == BrowserThread::UI) // Cleanup fast in a unittest. |
Matt Perry
2013/06/07 20:58:01
I think it would be better for the unit tests to f
Matt Perry
2013/06/07 20:58:01
OK, I see you're already doing RunUntilIdle. Are y
felt
2013/06/08 00:01:48
the problem is in other people's unit tests. our c
Matt Perry
2013/06/08 00:34:17
Ah, that is unfortunate. I don't have a general so
| |
138 db_->Close(); | |
139 else | |
140 ScheduleAndForget(&ActivityDatabase::Close); | |
141 } | 141 } |
142 | 142 |
143 void ActivityLog::SetArgumentLoggingForTesting(bool log_arguments) { | 143 void ActivityLog::SetArgumentLoggingForTesting(bool log_arguments) { |
144 testing_mode_ = log_arguments; | 144 testing_mode_ = log_arguments; |
145 } | 145 } |
146 | 146 |
147 // static | 147 // static |
148 ActivityLog* ActivityLog::GetInstance(Profile* profile) { | 148 ActivityLog* ActivityLog::GetInstance(Profile* profile) { |
149 return ActivityLogFactory::GetForProfile(profile); | 149 return ActivityLogFactory::GetForProfile(profile); |
150 } | 150 } |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
352 on_url, | 352 on_url, |
353 web_contents->GetTitle(), | 353 web_contents->GetTitle(), |
354 std::string(), // no api call here | 354 std::string(), // no api call here |
355 script_names.get(), | 355 script_names.get(), |
356 DomActionType::INSERTED, | 356 DomActionType::INSERTED, |
357 std::string()); // no extras either | 357 std::string()); // no extras either |
358 } | 358 } |
359 } | 359 } |
360 } | 360 } |
361 | 361 |
362 void ActivityLog::DatabaseErrorCallback(int error, sql::Statement* stmt) { | |
363 if (sql::IsErrorCatastrophic(error)) | |
364 ScheduleAndForget(&ActivityDatabase::KillDatabase); | |
365 } | |
366 | |
367 } // namespace extensions | 362 } // namespace extensions |
OLD | NEW |