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

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

Issue 21646004: Compressed activity log database storage (Closed) Base URL: http://git.chromium.org/chromium/src.git@refactor-cleanups
Patch Set: Factor out dropping of obsolete tables and use in all policies Created 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
diff --git a/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc b/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
index 24f54947e58b82dad5f53433cb8643ad58f715ed..01a0a92804fd9e1f70ba67afce1713757faa3790 100644
--- a/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
+++ b/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
@@ -33,17 +33,6 @@ namespace constants = activity_log_constants;
namespace {
-// Key strings for passing parameters to the ProcessAction member function.
-const char kKeyReason[] = "fsuip.reason";
-const char kKeyDomainAction[] = "fsuip.domact";
-const char kKeyURLTitle[] = "fsuip.urltitle";
-const char kKeyDetailsString[] = "fsuip.details";
-
-// Obsolete database tables: these should be dropped from the database if
-// found.
-const char* kObsoleteTables[] = {"activitylog_apis", "activitylog_blocked",
- "activitylog_urls"};
-
std::string Serialize(const base::Value* value) {
std::string value_as_text;
if (!value) {
@@ -68,7 +57,8 @@ const char* FullStreamUIPolicy::kTableFieldTypes[] = {
"LONGVARCHAR NOT NULL", "INTEGER", "INTEGER", "LONGVARCHAR", "LONGVARCHAR",
"LONGVARCHAR", "LONGVARCHAR", "LONGVARCHAR", "LONGVARCHAR"
};
-const int FullStreamUIPolicy::kTableFieldCount = arraysize(kTableContentFields);
+const int FullStreamUIPolicy::kTableFieldCount =
+ arraysize(FullStreamUIPolicy::kTableContentFields);
FullStreamUIPolicy::FullStreamUIPolicy(Profile* profile)
: ActivityLogDatabasePolicy(
@@ -78,17 +68,8 @@ FullStreamUIPolicy::FullStreamUIPolicy(Profile* profile)
FullStreamUIPolicy::~FullStreamUIPolicy() {}
bool FullStreamUIPolicy::InitDatabase(sql::Connection* db) {
- // Drop old database tables.
- for (size_t i = 0; i < arraysize(kObsoleteTables); i++) {
- const char* table_name = kObsoleteTables[i];
- if (db->DoesTableExist(table_name)) {
- std::string drop_statement =
- base::StringPrintf("DROP TABLE %s", table_name);
- if (!db->Execute(drop_statement.c_str())) {
- return false;
- }
- }
- }
+ if (!Util::DropObsoleteTables(db))
+ return false;
// Create the unified activity log entry table.
return ActivityDatabase::InitializeTable(db,
@@ -113,13 +94,6 @@ bool FullStreamUIPolicy::FlushDatabase(sql::Connection* db) {
sql::Statement statement(db->GetCachedStatement(
sql::StatementID(SQL_FROM_HERE), sql_str.c_str()));
- url_canon::Replacements<char> url_sanitizer;
- if (!CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableExtensionActivityLogTesting)) {
- url_sanitizer.ClearQuery();
- url_sanitizer.ClearRef();
- }
-
Action::ActionVector::size_type i;
for (i = 0; i != queued_actions_.size(); ++i) {
const Action& action = *queued_actions_[i];
@@ -135,8 +109,7 @@ bool FullStreamUIPolicy::FlushDatabase(sql::Connection* db) {
if (action.page_incognito()) {
statement.BindString(5, constants::kIncognitoUrl);
} else {
- statement.BindString(
- 5, action.page_url().ReplaceComponents(url_sanitizer).spec());
+ statement.BindString(5, action.page_url().spec());
}
}
if (!action.page_title().empty() && !action.page_incognito()) {
@@ -146,8 +119,7 @@ bool FullStreamUIPolicy::FlushDatabase(sql::Connection* db) {
if (action.arg_incognito()) {
statement.BindString(7, constants::kIncognitoUrl);
felt 2013/08/07 01:09:42 Probably should have caught this before. Why are w
mvrable 2013/08/07 17:01:19 Looks like I forgot to update this code. The inte
felt 2013/08/08 02:08:50 Hmm. It seems like doing "<incognito>url" is overl
} else {
- statement.BindString(
- 7, action.arg_url().ReplaceComponents(url_sanitizer).spec());
+ statement.BindString(7, action.arg_url().spec());
}
}
if (action.other()) {
@@ -170,6 +142,10 @@ bool FullStreamUIPolicy::FlushDatabase(sql::Connection* db) {
scoped_ptr<Action::ActionVector> FullStreamUIPolicy::DoReadData(
const std::string& extension_id,
const int days_ago) {
+ // Ensure data is flushed to the database first so that we query over all
+ // data.
+ activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately);
+
DCHECK_GE(days_ago, 0);
scoped_ptr<Action::ActionVector> actions(new Action::ActionVector());
@@ -178,21 +154,9 @@ scoped_ptr<Action::ActionVector> FullStreamUIPolicy::DoReadData(
return actions.Pass();
}
- // Compute the time bounds for that day.
- base::Time morning_midnight = Now().LocalMidnight();
- int64 early_bound = 0;
- int64 late_bound = 0;
- if (days_ago == 0) {
- early_bound = morning_midnight.ToInternalValue();
- late_bound = base::Time::Max().ToInternalValue();
- } else {
- base::Time early_time = morning_midnight -
- base::TimeDelta::FromDays(days_ago);
- base::Time late_time = morning_midnight -
- base::TimeDelta::FromDays(days_ago-1);
- early_bound = early_time.ToInternalValue();
- late_bound = late_time.ToInternalValue();
- }
+ int64 early_bound;
+ int64 late_bound;
+ Util::ComputeDatabaseTimeBounds(Now(), days_ago, &early_bound, &late_bound);
std::string query_str = base::StringPrintf(
"SELECT time, action_type, api_name, args, page_url, page_title, "
"arg_url, other "
@@ -277,22 +241,6 @@ void FullStreamUIPolicy::ReadData(
callback);
}
-std::string FullStreamUIPolicy::GetKey(ActivityLogPolicy::KeyType key_ty) const
felt 2013/08/07 01:09:42 where did this go?
mvrable 2013/08/07 17:01:19 This code isn't being used any longer. The consta
felt 2013/08/08 02:08:50 Ahhh OK, right, I couldn't find them in this CL be
-{
- switch (key_ty) {
- case PARAM_KEY_REASON:
- return std::string(kKeyReason);
- case PARAM_KEY_DOM_ACTION:
- return std::string(kKeyDomainAction);
- case PARAM_KEY_URL_TITLE:
- return std::string(kKeyURLTitle);
- case PARAM_KEY_DETAILS_STRING:
- return std::string(kKeyDetailsString);
- default:
- return std::string();
- }
-}
-
scoped_refptr<Action> FullStreamUIPolicy::ProcessArguments(
scoped_refptr<Action> action) const {
return action;
@@ -310,7 +258,7 @@ void FullStreamUIPolicy::ProcessAction(scoped_refptr<Action> action) {
void FullStreamUIPolicy::QueueAction(scoped_refptr<Action> action) {
if (activity_database()->is_db_valid()) {
queued_actions_.push_back(action);
- activity_database()->NotifyAction();
+ activity_database()->AdviseFlush(queued_actions_.size());
}
}

Powered by Google App Engine
This is Rietveld 408576698