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

Side by Side Diff: chrome/browser/extensions/settings/settings_frontend.cc

Issue 9414020: [Sync] Switch Extension Settings DTC to use ProfilesyncComponentsFactory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DCHECK Created 8 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/extensions/settings/settings_frontend.h" 5 #include "chrome/browser/extensions/settings/settings_frontend.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "chrome/browser/extensions/extension_event_names.h" 10 #include "chrome/browser/extensions/extension_event_names.h"
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 154 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
155 BrowserThread::PostTask( 155 BrowserThread::PostTask(
156 BrowserThread::FILE, 156 BrowserThread::FILE,
157 FROM_HERE, 157 FROM_HERE,
158 base::Bind( 158 base::Bind(
159 &SettingsFrontend::BackendWrapper::RunWithBackendOnFileThread, 159 &SettingsFrontend::BackendWrapper::RunWithBackendOnFileThread,
160 this, 160 this,
161 callback)); 161 callback));
162 } 162 }
163 163
164 SettingsBackend* GetBackend() const {
165 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
166 return backend_;
167 }
168
164 private: 169 private:
165 friend class base::RefCountedThreadSafe<BackendWrapper>; 170 friend class base::RefCountedThreadSafe<BackendWrapper>;
166 171
167 BackendWrapper( 172 BackendWrapper(
168 const scoped_refptr<SettingsStorageFactory>& storage_factory, 173 const scoped_refptr<SettingsStorageFactory>& storage_factory,
169 const SettingsStorageQuotaEnforcer::Limits& quota, 174 const SettingsStorageQuotaEnforcer::Limits& quota,
170 const scoped_refptr<SettingsObserverList>& observers) 175 const scoped_refptr<SettingsObserverList>& observers)
171 : storage_factory_(storage_factory), 176 : storage_factory_(storage_factory),
172 quota_(quota), 177 quota_(quota),
173 observers_(observers), 178 observers_(observers),
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 observers_, 271 observers_,
267 profile_path.AppendASCII( 272 profile_path.AppendASCII(
268 ExtensionService::kSyncExtensionSettingsDirectoryName)); 273 ExtensionService::kSyncExtensionSettingsDirectoryName));
269 } 274 }
270 275
271 SettingsFrontend::~SettingsFrontend() { 276 SettingsFrontend::~SettingsFrontend() {
272 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 277 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
273 observers_->RemoveObserver(profile_observer_.get()); 278 observers_->RemoveObserver(profile_observer_.get());
274 } 279 }
275 280
276 void SettingsFrontend::RunWithSyncableService( 281 SyncableService* SettingsFrontend::GetBackendForSync(
277 syncable::ModelType model_type, const SyncableServiceCallback& callback) { 282 syncable::ModelType type) const {
278 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 283 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
279 scoped_refptr<BackendWrapper> backend; 284 std::map<settings_namespace::Namespace, BackendWrappers>::const_iterator
280 switch (model_type) { 285 sync_backends = backends_.find(settings_namespace::SYNC);
286 DCHECK(sync_backends != backends_.end());
287 switch (type) {
281 case syncable::APP_SETTINGS: 288 case syncable::APP_SETTINGS:
282 backend = backends_[settings_namespace::SYNC].app; 289 return sync_backends->second.app->GetBackend();
283 break;
284
285 case syncable::EXTENSION_SETTINGS: 290 case syncable::EXTENSION_SETTINGS:
286 backend = backends_[settings_namespace::SYNC].extension; 291 return sync_backends->second.extension->GetBackend();
287 break;
288
289 default: 292 default:
290 NOTREACHED(); 293 NOTREACHED();
294 return NULL;
291 } 295 }
292 backend->RunWithBackend(base::Bind(&CallbackWithSyncableService, callback));
293 } 296 }
294 297
295 void SettingsFrontend::RunWithStorage( 298 void SettingsFrontend::RunWithStorage(
296 const std::string& extension_id, 299 const std::string& extension_id,
297 settings_namespace::Namespace settings_namespace, 300 settings_namespace::Namespace settings_namespace,
298 const StorageCallback& callback) { 301 const StorageCallback& callback) {
299 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 302 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
300 303
301 const Extension* extension = 304 const Extension* extension =
302 profile_->GetExtensionService()->GetExtensionById(extension_id, true); 305 profile_->GetExtensionService()->GetExtensionById(extension_id, true);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 351 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
349 return observers_; 352 return observers_;
350 } 353 }
351 354
352 // BackendWrappers 355 // BackendWrappers
353 356
354 SettingsFrontend::BackendWrappers::BackendWrappers() {} 357 SettingsFrontend::BackendWrappers::BackendWrappers() {}
355 SettingsFrontend::BackendWrappers::~BackendWrappers() {} 358 SettingsFrontend::BackendWrappers::~BackendWrappers() {}
356 359
357 } // namespace extensions 360 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/settings/settings_frontend.h ('k') | chrome/browser/extensions/settings/settings_sync_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698