| Index: chrome/browser/sync/syncable/directory_backing_store.cc
|
| ===================================================================
|
| --- chrome/browser/sync/syncable/directory_backing_store.cc (revision 102184)
|
| +++ chrome/browser/sync/syncable/directory_backing_store.cc (working copy)
|
| @@ -6,6 +6,10 @@
|
|
|
| #include "build/build_config.h"
|
|
|
| +#if defined(OS_MACOSX)
|
| +#include <CoreFoundation/CoreFoundation.h>
|
| +#endif
|
| +
|
| #include <limits>
|
|
|
| #include "base/file_util.h"
|
| @@ -15,14 +19,12 @@
|
| #include "base/stl_util.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/stringprintf.h"
|
| -#include "base/time.h"
|
| #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h"
|
| #include "chrome/browser/sync/protocol/service_constants.h"
|
| #include "chrome/browser/sync/protocol/sync.pb.h"
|
| #include "chrome/browser/sync/syncable/syncable-inl.h"
|
| #include "chrome/browser/sync/syncable/syncable_columns.h"
|
| #include "chrome/browser/sync/util/sqlite_utils.h"
|
| -#include "chrome/browser/sync/util/time.h"
|
| #include "chrome/common/random.h"
|
| #include "third_party/sqlite/sqlite3.h"
|
|
|
| @@ -42,7 +44,7 @@
|
|
|
| // Increment this version whenever updating DB tables.
|
| extern const int32 kCurrentDBVersion; // Global visibility for our unittest.
|
| -const int32 kCurrentDBVersion = 77;
|
| +const int32 kCurrentDBVersion = 76;
|
|
|
| namespace {
|
|
|
| @@ -74,11 +76,6 @@
|
| for (i = BEGIN_FIELDS; i < INT64_FIELDS_END; ++i) {
|
| statement->bind_int64(index++, entry.ref(static_cast<Int64Field>(i)));
|
| }
|
| - for ( ; i < TIME_FIELDS_END; ++i) {
|
| - statement->bind_int64(index++,
|
| - browser_sync::TimeToProtoTime(
|
| - entry.ref(static_cast<TimeField>(i))));
|
| - }
|
| for ( ; i < ID_FIELDS_END; ++i) {
|
| statement->bind_string(index++, entry.ref(static_cast<IdField>(i)).s_);
|
| }
|
| @@ -100,18 +97,14 @@
|
| int UnpackEntry(sqlite_utils::SQLStatement* statement, EntryKernel** kernel) {
|
| *kernel = NULL;
|
| int query_result = statement->step();
|
| - if (query_result == SQLITE_ROW) {
|
| - *kernel = new EntryKernel();
|
| - DCHECK_EQ(statement->column_count(), static_cast<int>(FIELD_COUNT));
|
| + if (SQLITE_ROW == query_result) {
|
| + *kernel = new EntryKernel;
|
| + (*kernel)->clear_dirty(NULL);
|
| + DCHECK(statement->column_count() == static_cast<int>(FIELD_COUNT));
|
| int i = 0;
|
| for (i = BEGIN_FIELDS; i < INT64_FIELDS_END; ++i) {
|
| (*kernel)->put(static_cast<Int64Field>(i), statement->column_int64(i));
|
| }
|
| - for ( ; i < TIME_FIELDS_END; ++i) {
|
| - (*kernel)->put(static_cast<TimeField>(i),
|
| - browser_sync::ProtoTimeToTime(
|
| - statement->column_int64(i)));
|
| - }
|
| for ( ; i < ID_FIELDS_END; ++i) {
|
| (*kernel)->mutable_ref(static_cast<IdField>(i)).s_ =
|
| statement->column_string(i);
|
| @@ -127,8 +120,9 @@
|
| (*kernel)->mutable_ref(static_cast<ProtoField>(i)).ParseFromArray(
|
| statement->column_blob(i), statement->column_bytes(i));
|
| }
|
| + ZeroFields((*kernel), i);
|
| } else {
|
| - DCHECK_EQ(query_result, SQLITE_DONE);
|
| + DCHECK(SQLITE_DONE == query_result);
|
| (*kernel) = NULL;
|
| }
|
| return query_result;
|
| @@ -484,13 +478,6 @@
|
| version_on_disk = 76;
|
| }
|
|
|
| - // Version 77 standardized all time fields to ms since the Unix
|
| - // epoch.
|
| - if (version_on_disk == 76) {
|
| - if (MigrateVersion76To77())
|
| - version_on_disk = 77;
|
| - }
|
| -
|
| // If one of the migrations requested it, drop columns that aren't current.
|
| // It's only safe to do this after migrating all the way to the current
|
| // version.
|
| @@ -1102,35 +1089,6 @@
|
| return true;
|
| }
|
|
|
| -bool DirectoryBackingStore::MigrateVersion76To77() {
|
| - sqlite_utils::SQLStatement update_timestamps;
|
| - // This change changes the format of stored timestamps to ms since
|
| - // the Unix epoch.
|
| -#if defined(OS_WIN)
|
| -// On Windows, we used to store timestamps in FILETIME format (100s of
|
| -// ns since Jan 1, 1601). Magic numbers taken from
|
| -// http://stackoverflow.com/questions/5398557/java-library-for-dealing-with-win32-filetime
|
| -// .
|
| -#define TO_UNIX_TIME_MS(x) #x " = " #x " / 10000 - 11644473600000"
|
| -#else
|
| -// On other platforms, we used to store timestamps in time_t format (s
|
| -// since the Unix epoch).
|
| -#define TO_UNIX_TIME_MS(x) #x " = " #x " * 1000"
|
| -#endif
|
| - update_timestamps.prepare(
|
| - load_dbhandle_,
|
| - "UPDATE metas SET "
|
| - TO_UNIX_TIME_MS(mtime) ", "
|
| - TO_UNIX_TIME_MS(server_mtime) ", "
|
| - TO_UNIX_TIME_MS(ctime) ", "
|
| - TO_UNIX_TIME_MS(server_ctime));
|
| -#undef TO_UNIX_TIME_MS
|
| - if (update_timestamps.step() != SQLITE_DONE)
|
| - return false;
|
| - SetVersion(77);
|
| - return true;
|
| -}
|
| -
|
| int DirectoryBackingStore::CreateTables() {
|
| VLOG(1) << "First run, creating tables";
|
| // Create two little tables share_version and share_info
|
| @@ -1185,7 +1143,7 @@
|
| return result;
|
| {
|
| // Insert the entry for the root into the metas table.
|
| - const int64 now = browser_sync::TimeToProtoTime(base::Time::Now());
|
| + const int64 now = Now();
|
| sqlite_utils::SQLStatement statement;
|
| statement.prepare(load_dbhandle_,
|
| "INSERT INTO metas "
|
|
|