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

Side by Side Diff: chrome/browser/extensions/activity_log/fullstream_ui_policy.cc

Issue 23629015: Add deletion to the activityLogPrivate API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Undoing last commit Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/activity_log/fullstream_ui_policy.h" 5 #include "chrome/browser/extensions/activity_log/fullstream_ui_policy.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 } 151 }
152 if (!page_url.empty()) { 152 if (!page_url.empty()) {
153 where_str += where_next + "page_url LIKE ?"; 153 where_str += where_next + "page_url LIKE ?";
154 where_next = " AND "; 154 where_next = " AND ";
155 } 155 }
156 if (!arg_url.empty()) { 156 if (!arg_url.empty()) {
157 where_str += where_next + "arg_url LIKE ?"; 157 where_str += where_next + "arg_url LIKE ?";
158 } 158 }
159 std::string query_str = base::StringPrintf( 159 std::string query_str = base::StringPrintf(
160 "SELECT extension_id,time,action_type,api_name,args,page_url,page_title," 160 "SELECT extension_id,time,action_type,api_name,args,page_url,page_title,"
161 "arg_url,other FROM %s WHERE %s ORDER BY time DESC LIMIT 300", 161 "arg_url,other FROM %s %s %s ORDER BY time DESC LIMIT 300",
162 kTableName, 162 kTableName,
163 where_str.empty() ? "" : "WHERE",
163 where_str.c_str()); 164 where_str.c_str());
164 sql::Statement query(db->GetUniqueStatement(query_str.c_str())); 165 sql::Statement query(db->GetUniqueStatement(query_str.c_str()));
165 int i = -1; 166 int i = -1;
166 if (!extension_id.empty()) 167 if (!extension_id.empty())
167 query.BindString(++i, extension_id); 168 query.BindString(++i, extension_id);
168 if (!api_name.empty()) 169 if (!api_name.empty())
169 query.BindString(++i, api_name); 170 query.BindString(++i, api_name);
170 if (type != Action::ACTION_ANY) 171 if (type != Action::ACTION_ANY)
171 query.BindInt(++i, static_cast<int>(type)); 172 query.BindInt(++i, static_cast<int>(type));
172 if (!page_url.empty()) 173 if (!page_url.empty())
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 statement.BindString(0, restrict_urls[i].spec()); 334 statement.BindString(0, restrict_urls[i].spec());
334 335
335 if (!statement.Run()) { 336 if (!statement.Run()) {
336 LOG(ERROR) << "Removing arg URL from database failed: " 337 LOG(ERROR) << "Removing arg URL from database failed: "
337 << statement.GetSQLStatement(); 338 << statement.GetSQLStatement();
338 return; 339 return;
339 } 340 }
340 } 341 }
341 } 342 }
342 343
344 void FullStreamUIPolicy::DoDeleteDatabase() {
345 sql::Connection* db = GetDatabaseConnection();
346 if (!db) {
347 LOG(ERROR) << "Unable to connect to database";
348 return;
349 }
350
351 queued_actions_.clear();
352
353 // Not wrapped in a transaction because the deletion should happen even if
354 // the vacuuming fails.
355 std::string sql_str = base::StringPrintf("DELETE FROM %s;", kTableName);
356 sql::Statement statement(db->GetCachedStatement(
357 sql::StatementID(SQL_FROM_HERE), sql_str.c_str()));
358 if (!statement.Run()) {
359 LOG(ERROR) << "Deleting the database failed: "
360 << statement.GetSQLStatement();
361 return;
362 }
363 statement.Clear();
364 statement.Assign(db->GetCachedStatement(sql::StatementID(SQL_FROM_HERE),
365 "VACUUM"));
366 if (!statement.Run()) {
367 LOG(ERROR) << "Vacuuming the database failed: "
368 << statement.GetSQLStatement();
369 }
370 }
371
343 void FullStreamUIPolicy::OnDatabaseFailure() { 372 void FullStreamUIPolicy::OnDatabaseFailure() {
344 queued_actions_.clear(); 373 queued_actions_.clear();
345 } 374 }
346 375
347 void FullStreamUIPolicy::OnDatabaseClose() { 376 void FullStreamUIPolicy::OnDatabaseClose() {
348 delete this; 377 delete this;
349 } 378 }
350 379
351 void FullStreamUIPolicy::Close() { 380 void FullStreamUIPolicy::Close() {
352 // The policy object should have never been created if there's no DB thread. 381 // The policy object should have never been created if there's no DB thread.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 api_name, 416 api_name,
388 page_url, 417 page_url,
389 arg_url), 418 arg_url),
390 callback); 419 callback);
391 } 420 }
392 421
393 void FullStreamUIPolicy::RemoveURLs(const std::vector<GURL>& restrict_urls) { 422 void FullStreamUIPolicy::RemoveURLs(const std::vector<GURL>& restrict_urls) {
394 ScheduleAndForget(this, &FullStreamUIPolicy::DoRemoveURLs, restrict_urls); 423 ScheduleAndForget(this, &FullStreamUIPolicy::DoRemoveURLs, restrict_urls);
395 } 424 }
396 425
426 void FullStreamUIPolicy::DeleteDatabase() {
427 ScheduleAndForget(this, &FullStreamUIPolicy::DoDeleteDatabase);
428 }
429
397 scoped_refptr<Action> FullStreamUIPolicy::ProcessArguments( 430 scoped_refptr<Action> FullStreamUIPolicy::ProcessArguments(
398 scoped_refptr<Action> action) const { 431 scoped_refptr<Action> action) const {
399 return action; 432 return action;
400 } 433 }
401 434
402 void FullStreamUIPolicy::ProcessAction(scoped_refptr<Action> action) { 435 void FullStreamUIPolicy::ProcessAction(scoped_refptr<Action> action) {
403 // TODO(mvrable): Right now this argument stripping updates the Action object 436 // TODO(mvrable): Right now this argument stripping updates the Action object
404 // in place, which isn't good if there are other users of the object. When 437 // in place, which isn't good if there are other users of the object. When
405 // database writing is moved to policy class, the modifications should be 438 // database writing is moved to policy class, the modifications should be
406 // made locally. 439 // made locally.
407 action = ProcessArguments(action); 440 action = ProcessArguments(action);
408 ScheduleAndForget(this, &FullStreamUIPolicy::QueueAction, action); 441 ScheduleAndForget(this, &FullStreamUIPolicy::QueueAction, action);
409 } 442 }
410 443
411 void FullStreamUIPolicy::QueueAction(scoped_refptr<Action> action) { 444 void FullStreamUIPolicy::QueueAction(scoped_refptr<Action> action) {
412 if (activity_database()->is_db_valid()) { 445 if (activity_database()->is_db_valid()) {
413 queued_actions_.push_back(action); 446 queued_actions_.push_back(action);
414 activity_database()->AdviseFlush(queued_actions_.size()); 447 activity_database()->AdviseFlush(queued_actions_.size());
415 } 448 }
416 } 449 }
417 450
418 } // namespace extensions 451 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698