| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/themes/theme_syncable_service.h" | 5 #include "chrome/browser/themes/theme_syncable_service.h" |
| 6 | 6 |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
| 9 #include "chrome/browser/extensions/extension_system.h" | 9 #include "chrome/browser/extensions/extension_system.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 return list; | 128 return list; |
| 129 } | 129 } |
| 130 | 130 |
| 131 syncer::SyncError ThemeSyncableService::ProcessSyncChanges( | 131 syncer::SyncError ThemeSyncableService::ProcessSyncChanges( |
| 132 const tracked_objects::Location& from_here, | 132 const tracked_objects::Location& from_here, |
| 133 const syncer::SyncChangeList& change_list) { | 133 const syncer::SyncChangeList& change_list) { |
| 134 DCHECK(thread_checker_.CalledOnValidThread()); | 134 DCHECK(thread_checker_.CalledOnValidThread()); |
| 135 | 135 |
| 136 if (!sync_processor_.get()) { | 136 if (!sync_processor_.get()) { |
| 137 return syncer::SyncError(FROM_HERE, | 137 return syncer::SyncError(FROM_HERE, |
| 138 syncer::SyncError::DATATYPE_ERROR, |
| 138 "Theme syncable service is not started.", | 139 "Theme syncable service is not started.", |
| 139 syncer::THEMES); | 140 syncer::THEMES); |
| 140 } | 141 } |
| 141 | 142 |
| 142 // TODO(akalin): Normally, we should only have a single change and | 143 // TODO(akalin): Normally, we should only have a single change and |
| 143 // it should be an update. However, the syncapi may occasionally | 144 // it should be an update. However, the syncapi may occasionally |
| 144 // generates multiple changes. When we fix syncapi to not do that, | 145 // generates multiple changes. When we fix syncapi to not do that, |
| 145 // we can remove the extra logic below. See: | 146 // we can remove the extra logic below. See: |
| 146 // http://code.google.com/p/chromium/issues/detail?id=41696 . | 147 // http://code.google.com/p/chromium/issues/detail?id=41696 . |
| 147 if (change_list.size() != 1) { | 148 if (change_list.size() != 1) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 173 ++theme_change) { | 174 ++theme_change) { |
| 174 if (theme_change->sync_data().GetSpecifics().has_theme() && | 175 if (theme_change->sync_data().GetSpecifics().has_theme() && |
| 175 (theme_change->change_type() == syncer::SyncChange::ACTION_ADD || | 176 (theme_change->change_type() == syncer::SyncChange::ACTION_ADD || |
| 176 theme_change->change_type() == syncer::SyncChange::ACTION_UPDATE)) { | 177 theme_change->change_type() == syncer::SyncChange::ACTION_UPDATE)) { |
| 177 MaybeSetTheme(current_specifics, theme_change->sync_data()); | 178 MaybeSetTheme(current_specifics, theme_change->sync_data()); |
| 178 return syncer::SyncError(); | 179 return syncer::SyncError(); |
| 179 } | 180 } |
| 180 } | 181 } |
| 181 | 182 |
| 182 return syncer::SyncError(FROM_HERE, | 183 return syncer::SyncError(FROM_HERE, |
| 183 base::StringPrintf( | 184 syncer::SyncError::DATATYPE_ERROR, |
| 184 "Didn't find valid theme specifics."), | 185 "Didn't find valid theme specifics", |
| 185 syncer::THEMES); | 186 syncer::THEMES); |
| 186 } | 187 } |
| 187 | 188 |
| 188 void ThemeSyncableService::MaybeSetTheme( | 189 void ThemeSyncableService::MaybeSetTheme( |
| 189 const sync_pb::ThemeSpecifics& current_specs, | 190 const sync_pb::ThemeSpecifics& current_specs, |
| 190 const syncer::SyncData& sync_data) { | 191 const syncer::SyncData& sync_data) { |
| 191 const sync_pb::ThemeSpecifics& sync_theme = sync_data.GetSpecifics().theme(); | 192 const sync_pb::ThemeSpecifics& sync_theme = sync_data.GetSpecifics().theme(); |
| 192 use_system_theme_by_default_ = sync_theme.use_system_theme_by_default(); | 193 use_system_theme_by_default_ = sync_theme.use_system_theme_by_default(); |
| 193 DVLOG(1) << "Set current theme from specifics: " << sync_data.ToString(); | 194 DVLOG(1) << "Set current theme from specifics: " << sync_data.ToString(); |
| 194 if (!AreThemeSpecificsEqual(current_specs, sync_theme, | 195 if (!AreThemeSpecificsEqual(current_specs, sync_theme, |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 syncer::SyncChange(FROM_HERE, change_type, | 330 syncer::SyncChange(FROM_HERE, change_type, |
| 330 syncer::SyncData::CreateLocalData( | 331 syncer::SyncData::CreateLocalData( |
| 331 kCurrentThemeClientTag, kCurrentThemeNodeTitle, | 332 kCurrentThemeClientTag, kCurrentThemeNodeTitle, |
| 332 entity_specifics))); | 333 entity_specifics))); |
| 333 | 334 |
| 334 DVLOG(1) << "Update theme specifics from current theme: " | 335 DVLOG(1) << "Update theme specifics from current theme: " |
| 335 << changes.back().ToString(); | 336 << changes.back().ToString(); |
| 336 | 337 |
| 337 return sync_processor_->ProcessSyncChanges(FROM_HERE, changes); | 338 return sync_processor_->ProcessSyncChanges(FROM_HERE, changes); |
| 338 } | 339 } |
| OLD | NEW |