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

Unified Diff: chrome/browser/sync/syncable/syncable.cc

Issue 7977034: Revert 102184 - [Sync] use base::Time in sync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/sync/syncable/syncable.h ('k') | chrome/browser/sync/syncable/syncable_columns.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/syncable/syncable.cc
===================================================================
--- chrome/browser/sync/syncable/syncable.cc (revision 102184)
+++ chrome/browser/sync/syncable/syncable.cc (working copy)
@@ -4,6 +4,20 @@
#include "chrome/browser/sync/syncable/syncable.h"
+#include "build/build_config.h"
+
+#include <sys/stat.h>
+#if defined(OS_POSIX)
+#include <sys/time.h>
+#endif
+#include <sys/types.h>
+#include <time.h>
+#if defined(OS_MACOSX)
+#include <CoreFoundation/CoreFoundation.h>
+#elif defined(OS_WIN)
+#include <shlwapi.h> // for PathMatchSpec
+#endif
+
#include <algorithm>
#include <cstring>
#include <functional>
@@ -128,6 +142,25 @@
return list;
}
+int64 Now() {
+#if defined(OS_WIN)
+ FILETIME filetime;
+ SYSTEMTIME systime;
+ GetSystemTime(&systime);
+ SystemTimeToFileTime(&systime, &filetime);
+ // MSDN recommends converting via memcpy like this.
+ LARGE_INTEGER n;
+ memcpy(&n, &filetime, sizeof(filetime));
+ return n.QuadPart;
+#elif defined(OS_POSIX)
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ return static_cast<int64>(tv.tv_sec);
+#else
+#error NEED OS SPECIFIC Now() implementation
+#endif
+}
+
namespace {
// A ScopedIndexUpdater temporarily removes an entry from an index,
@@ -212,10 +245,7 @@
// EntryKernel
EntryKernel::EntryKernel() : dirty_(false) {
- // Everything else should already be default-initialized.
- for (int i = INT64_FIELDS_BEGIN; i < INT64_FIELDS_END; ++i) {
- int64_fields[i] = 0;
- }
+ memset(int64_fields, 0, sizeof(int64_fields));
}
EntryKernel::~EntryKernel() {}
@@ -277,10 +307,6 @@
return Value::CreateStringValue(base::Int64ToString(i));
}
-StringValue* TimeToValue(const base::Time& t) {
- return Value::CreateStringValue(browser_sync::GetTimeDebugString(t));
-}
-
StringValue* IdToValue(const Id& id) {
return id.ToValue();
}
@@ -302,11 +328,6 @@
&GetInt64FieldString, &Int64ToValue,
BASE_VERSION + 1, INT64_FIELDS_END - 1);
- // Time fields.
- SetFieldValues(*this, kernel_info,
- &GetTimeFieldString, &TimeToValue,
- TIME_FIELDS_BEGIN, TIME_FIELDS_END - 1);
-
// ID fields.
SetFieldValues(*this, kernel_info,
&GetIdFieldString, &IdToValue,
@@ -589,6 +610,21 @@
return GetEntryById(Id());
}
+void ZeroFields(EntryKernel* entry, int first_field) {
+ int i = first_field;
+ // Note that bitset<> constructor sets all bits to zero, and strings
+ // initialize to empty.
+ for ( ; i < INT64_FIELDS_END; ++i)
+ entry->put(static_cast<Int64Field>(i), 0);
+ for ( ; i < ID_FIELDS_END; ++i)
+ entry->mutable_ref(static_cast<IdField>(i)).Clear();
+ for ( ; i < BIT_FIELDS_END; ++i)
+ entry->put(static_cast<BitField>(i), false);
+ if (i < PROTO_FIELDS_END)
+ i = PROTO_FIELDS_END;
+ entry->clear_dirty(NULL);
+}
+
void Directory::InsertEntry(EntryKernel* entry) {
ScopedKernelLock lock(this);
InsertEntry(entry, &lock);
@@ -1403,13 +1439,14 @@
void MutableEntry::Init(WriteTransaction* trans, const Id& parent_id,
const string& name) {
- kernel_ = new EntryKernel();
+ kernel_ = new EntryKernel;
+ ZeroFields(kernel_, BEGIN_FIELDS);
kernel_->put(ID, trans->directory_->NextId());
kernel_->put(META_HANDLE, trans->directory_->NextMetahandle());
kernel_->mark_dirty(trans->directory_->kernel_->dirty_metahandles);
kernel_->put(PARENT_ID, parent_id);
kernel_->put(NON_UNIQUE_NAME, name);
- const base::Time& now = base::Time::Now();
+ const int64 now = Now();
kernel_->put(CTIME, now);
kernel_->put(MTIME, now);
// We match the database defaults here
@@ -1429,7 +1466,8 @@
kernel_ = NULL; // already have an item with this ID.
return;
}
- kernel_ = new EntryKernel();
+ kernel_ = new EntryKernel;
+ ZeroFields(kernel_, BEGIN_FIELDS);
kernel_->put(ID, id);
kernel_->put(META_HANDLE, trans->directory_->NextMetahandle());
kernel_->mark_dirty(trans->directory_->kernel_->dirty_metahandles);
@@ -1504,15 +1542,6 @@
return true;
}
-bool MutableEntry::Put(TimeField field, const base::Time& value) {
- DCHECK(kernel_);
- if (kernel_->ref(field) != value) {
- kernel_->put(field, value);
- kernel_->mark_dirty(dir()->kernel_->dirty_metahandles);
- }
- return true;
-}
-
bool MutableEntry::Put(IdField field, const Id& value) {
DCHECK(kernel_);
if (kernel_->ref(field) != value) {
@@ -1885,11 +1914,6 @@
os << g_metas_columns[i].name << ": "
<< kernel->ref(static_cast<Int64Field>(i)) << ", ";
}
- for ( ; i < TIME_FIELDS_END; ++i) {
- os << g_metas_columns[i].name << ": "
- << browser_sync::GetTimeDebugString(
- kernel->ref(static_cast<TimeField>(i))) << ", ";
- }
for ( ; i < ID_FIELDS_END; ++i) {
os << g_metas_columns[i].name << ": "
<< kernel->ref(static_cast<IdField>(i)) << ", ";
« no previous file with comments | « chrome/browser/sync/syncable/syncable.h ('k') | chrome/browser/sync/syncable/syncable_columns.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698