Upstream version 11.39.264.0
[platform/framework/web/crosswalk.git] / src / components / sync_driver / sync_prefs.cc
index 9d34236..fd5ffb2 100644 (file)
@@ -4,15 +4,14 @@
 
 #include "components/sync_driver/sync_prefs.h"
 
-#include "base/command_line.h"
 #include "base/logging.h"
 #include "base/prefs/pref_member.h"
 #include "base/prefs/pref_service.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
 #include "build/build_config.h"
+#include "components/pref_registry/pref_registry_syncable.h"
 #include "components/sync_driver/pref_names.h"
-#include "components/user_prefs/pref_registry_syncable.h"
 
 namespace sync_driver {
 
@@ -29,6 +28,8 @@ SyncPrefs::SyncPrefs(PrefService* pref_service) : pref_service_(pref_service) {
       base::Bind(&SyncPrefs::OnSyncManagedPrefChanged, base::Unretained(this)));
 }
 
+SyncPrefs::SyncPrefs() : pref_service_(NULL) {}
+
 SyncPrefs::~SyncPrefs() { DCHECK(CalledOnValidThread()); }
 
 // static
@@ -46,6 +47,10 @@ void SyncPrefs::RegisterProfilePrefs(
       prefs::kSyncLastSyncedTime,
       0,
       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
+  registry->RegisterInt64Pref(
+      prefs::kSyncFirstSyncTime,
+      0,
+      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
 
   // All datatypes are on by default, but this gets set explicitly
   // when you configure sync (when turning it on), in
@@ -61,9 +66,11 @@ void SyncPrefs::RegisterProfilePrefs(
   // although they don't have sync representations.
   user_types.PutAll(syncer::ProxyTypes());
 
-  // Treat bookmarks specially.
+  // Treat bookmarks and device info specially.
   RegisterDataTypePreferredPref(registry, syncer::BOOKMARKS, true);
+  RegisterDataTypePreferredPref(registry, syncer::DEVICE_INFO, true);
   user_types.Remove(syncer::BOOKMARKS);
+  user_types.Remove(syncer::DEVICE_INFO);
 
   // These two prefs are set from sync experiment to enable enhanced bookmarks.
   registry->RegisterIntegerPref(
@@ -135,6 +142,10 @@ void SyncPrefs::RegisterProfilePrefs(
   registry->RegisterListPref(prefs::kSyncAcknowledgedSyncTypes,
                              syncer::ModelTypeSetToValue(model_set),
                              user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
+
+  registry->RegisterIntegerPref(
+      prefs::kSyncRemainingRollbackTries, 0,
+      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
 }
 
 void SyncPrefs::AddSyncPrefObserver(SyncPrefObserver* sync_pref_observer) {
@@ -320,22 +331,24 @@ const char* SyncPrefs::GetPrefNameForDataType(syncer::ModelType data_type) {
       return prefs::kSyncFaviconImages;
     case syncer::FAVICON_TRACKING:
       return prefs::kSyncFaviconTracking;
-    case syncer::MANAGED_USER_SETTINGS:
-      return prefs::kSyncManagedUserSettings;
+    case syncer::SUPERVISED_USER_SETTINGS:
+      return prefs::kSyncSupervisedUserSettings;
     case syncer::PROXY_TABS:
       return prefs::kSyncTabs;
     case syncer::PRIORITY_PREFERENCES:
       return prefs::kSyncPriorityPreferences;
-    case syncer::MANAGED_USERS:
-      return prefs::kSyncManagedUsers;
+    case syncer::SUPERVISED_USERS:
+      return prefs::kSyncSupervisedUsers;
     case syncer::ARTICLES:
       return prefs::kSyncArticles;
-    case syncer::MANAGED_USER_SHARED_SETTINGS:
-      return prefs::kSyncManagedUserSharedSettings;
+    case syncer::SUPERVISED_USER_SHARED_SETTINGS:
+      return prefs::kSyncSupervisedUserSharedSettings;
+    case syncer::DEVICE_INFO:
+      return prefs::kSyncDeviceInfo;
     default:
       break;
   }
-  NOTREACHED();
+  NOTREACHED() << "Type is " << data_type;
   return NULL;
 }
 
@@ -365,6 +378,14 @@ void SyncPrefs::AcknowledgeSyncedTypes(syncer::ModelTypeSet types) {
   pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value);
 }
 
+int SyncPrefs::GetRemainingRollbackTries() const {
+  return pref_service_->GetInteger(prefs::kSyncRemainingRollbackTries);
+}
+
+void SyncPrefs::SetRemainingRollbackTries(int times) {
+  pref_service_->SetInteger(prefs::kSyncRemainingRollbackTries, times);
+}
+
 void SyncPrefs::OnSyncManagedPrefChanged() {
   DCHECK(CalledOnValidThread());
   FOR_EACH_OBSERVER(SyncPrefObserver,
@@ -405,8 +426,6 @@ void SyncPrefs::RegisterPrefGroups() {
   pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_IMAGES);
   pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_TRACKING);
 
-  pref_groups_[syncer::MANAGED_USER_SETTINGS].Put(syncer::SESSIONS);
-
   // TODO(zea): put favicons in the bookmarks group as well once it handles
   // those favicons.
 }
@@ -434,6 +453,11 @@ bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const {
     NOTREACHED();
     return false;
   }
+
+  // Device info is always enabled.
+  if (pref_name == prefs::kSyncDeviceInfo)
+    return true;
+
   if (type == syncer::PROXY_TABS &&
       pref_service_->GetUserPrefValue(pref_name) == NULL &&
       pref_service_->IsUserModifiablePreference(pref_name)) {
@@ -453,6 +477,11 @@ void SyncPrefs::SetDataTypePreferred(syncer::ModelType type,
     NOTREACHED();
     return;
   }
+
+  // Device info is always preferred.
+  if (type == syncer::DEVICE_INFO)
+    return;
+
   pref_service_->SetBoolean(pref_name, is_preferred);
 }
 
@@ -471,4 +500,17 @@ syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups(
   return types_with_groups;
 }
 
-}  // namespace browser_sync
+base::Time SyncPrefs::GetFirstSyncTime() const {
+  return base::Time::FromInternalValue(
+      pref_service_->GetInt64(prefs::kSyncFirstSyncTime));
+}
+
+void SyncPrefs::SetFirstSyncTime(base::Time time) {
+  pref_service_->SetInt64(prefs::kSyncFirstSyncTime, time.ToInternalValue());
+}
+
+void SyncPrefs::ClearFirstSyncTime() {
+  pref_service_->ClearPref(prefs::kSyncFirstSyncTime);
+}
+
+}  // namespace sync_driver