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

Unified Diff: chrome/browser/extensions/activity_log/activity_database.cc

Issue 19690003: Extension activity log database refactoring (step 3) (Closed) Base URL: http://git.chromium.org/chromium/src.git@refactor2
Patch Set: Rebase Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/activity_log/activity_database.cc
diff --git a/chrome/browser/extensions/activity_log/activity_database.cc b/chrome/browser/extensions/activity_log/activity_database.cc
index 1a644b872dc27893deb9b41fadea930287850ad4..f2ee33e09cc90b573d41e651e998f6e659999210 100644
--- a/chrome/browser/extensions/activity_log/activity_database.cc
+++ b/chrome/browser/extensions/activity_log/activity_database.cc
@@ -25,15 +25,6 @@
using content::BrowserThread;
-namespace {
-
-bool SortActionsByTime(const scoped_refptr<extensions::Action> a,
- const scoped_refptr<extensions::Action> b) {
- return a->time() > b->time();
-}
-
-} // namespace
-
namespace extensions {
ActivityDatabase::ActivityDatabase(ActivityDatabase::Delegate* delegate)
@@ -163,8 +154,10 @@ scoped_ptr<ActivityDatabase::ActionVector> ActivityDatabase::GetActions(
late_bound = late_time.ToInternalValue();
}
std::string query_str = base::StringPrintf(
- "SELECT time, action_type, api_name, args, page_url, arg_url, other "
- "FROM %s WHERE extension_id=? AND time>? AND time<=?",
+ "SELECT time, action_type, api_name, args, page_url, page_title, "
+ "arg_url, other "
+ "FROM %s WHERE extension_id=? AND time>? AND time<=? "
+ "ORDER BY time DESC",
felt 2013/07/23 17:07:17 good call :)
mvrable 2013/07/23 18:16:56 To be fair, this wasn't possible before since the
FullStreamUIPolicy::kTableName);
sql::Statement query(db_.GetCachedStatement(SQL_FROM_HERE,
query_str.c_str()));
@@ -172,38 +165,47 @@ scoped_ptr<ActivityDatabase::ActionVector> ActivityDatabase::GetActions(
query.BindInt64(1, early_bound);
query.BindInt64(2, late_bound);
while (query.is_valid() && query.Step()) {
- scoped_ptr<Value> raw_value(base::JSONReader::Read(query.ColumnString(3)));
- scoped_ptr<ListValue> args;
- if (raw_value && raw_value->IsType(Value::TYPE_LIST)) {
- args.reset(static_cast<ListValue*>(raw_value.release()));
- } else {
- args.reset(new ListValue());
+ scoped_refptr<Action> action =
+ new Action(extension_id,
+ base::Time::FromInternalValue(query.ColumnInt64(0)),
+ static_cast<Action::ActionType>(query.ColumnInt(1)));
+
+ action->set_api_name(query.ColumnString(2));
+
+ if (query.ColumnType(3) != sql::COLUMN_TYPE_NULL) {
+ scoped_ptr<Value> parsed_value(
+ base::JSONReader::Read(query.ColumnString(3)));
+ if (parsed_value && parsed_value->IsType(Value::TYPE_LIST)) {
+ action->set_args(
+ make_scoped_ptr(static_cast<ListValue*>(parsed_value.release())));
+ } else {
+ LOG(WARNING) << "Unable to parse args: '" << query.ColumnString(3)
+ << "'";
+ }
}
GURL page_url(query.ColumnString(4));
- GURL arg_url(query.ColumnString(5));
-
- raw_value.reset(base::JSONReader::Read(query.ColumnString(6)));
- scoped_ptr<DictionaryValue> other;
- if (raw_value && raw_value->IsType(Value::TYPE_DICTIONARY)) {
- other.reset(static_cast<DictionaryValue*>(raw_value.release()));
- } else {
- other.reset(new DictionaryValue());
+ action->set_page_url(page_url);
+
+ action->set_page_title(query.ColumnString(5));
+
+ GURL arg_url(query.ColumnString(6));
+ action->set_arg_url(arg_url);
+
+ if (query.ColumnType(7) != sql::COLUMN_TYPE_NULL) {
+ scoped_ptr<Value> parsed_value(
+ base::JSONReader::Read(query.ColumnString(7)));
+ if (parsed_value && parsed_value->IsType(Value::TYPE_DICTIONARY)) {
+ action->set_other(make_scoped_ptr(
+ static_cast<DictionaryValue*>(parsed_value.release())));
+ } else {
+ LOG(WARNING) << "Unable to parse other: '" << query.ColumnString(7)
+ << "'";
+ }
}
- scoped_refptr<WatchdogAction> action =
- new WatchdogAction(extension_id,
- base::Time::FromInternalValue(query.ColumnInt64(0)),
- static_cast<Action::ActionType>(query.ColumnInt(1)),
- query.ColumnString(2),
- args.Pass(),
- page_url,
- arg_url,
- other.Pass());
actions->push_back(action);
}
- // Sort by time (from newest to oldest).
- std::sort(actions->begin(), actions->end(), SortActionsByTime);
return actions.Pass();
}

Powered by Google App Engine
This is Rietveld 408576698