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

Unified Diff: chrome/browser/extensions/api/storage/settings_frontend.cc

Issue 11778097: Revert revision 176015 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 11 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
Index: chrome/browser/extensions/api/storage/settings_frontend.cc
===================================================================
--- chrome/browser/extensions/api/storage/settings_frontend.cc (revision 176053)
+++ chrome/browser/extensions/api/storage/settings_frontend.cc (working copy)
@@ -1,218 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/extensions/api/storage/settings_frontend.h"
-
-#include <limits>
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/file_path.h"
-#include "base/json/json_reader.h"
-#include "chrome/browser/extensions/api/storage/leveldb_settings_storage_factory.h"
-#include "chrome/browser/extensions/api/storage/settings_backend.h"
-#include "chrome/browser/extensions/api/storage/sync_or_local_value_store_cache.h"
-#include "chrome/browser/extensions/event_names.h"
-#include "chrome/browser/extensions/event_router.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_system.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/extensions/api/storage.h"
-#include "content/public/browser/browser_thread.h"
-
-#if defined(ENABLE_CONFIGURATION_POLICY)
-#include "chrome/browser/extensions/api/storage/managed_value_store_cache.h"
-#endif
-
-using content::BrowserThread;
-
-namespace extensions {
-
-namespace {
-
-// Settings change Observer which forwards changes on to the extension
-// processes for |profile| and its incognito partner if it exists.
-class DefaultObserver : public SettingsObserver {
- public:
- explicit DefaultObserver(Profile* profile) : profile_(profile) {}
-
- // SettingsObserver implementation.
- virtual void OnSettingsChanged(
- const std::string& extension_id,
- settings_namespace::Namespace settings_namespace,
- const std::string& change_json) OVERRIDE {
- // TODO(gdk): This is a temporary hack while the refactoring for
- // string-based event payloads is removed. http://crbug.com/136045
- scoped_ptr<ListValue> args(new ListValue());
- args->Append(base::JSONReader::Read(change_json));
- args->Append(Value::CreateStringValue(settings_namespace::ToString(
- settings_namespace)));
- scoped_ptr<Event> event(new Event(
- event_names::kOnSettingsChanged, args.Pass()));
- ExtensionSystem::Get(profile_)->event_router()->
- DispatchEventToExtension(extension_id, event.Pass());
- }
-
- private:
- Profile* const profile_;
-};
-
-SettingsStorageQuotaEnforcer::Limits GetLocalLimits() {
- SettingsStorageQuotaEnforcer::Limits limits = {
- static_cast<size_t>(api::storage::local::QUOTA_BYTES),
- std::numeric_limits<size_t>::max(),
- std::numeric_limits<size_t>::max()
- };
- return limits;
-}
-
-SettingsStorageQuotaEnforcer::Limits GetSyncLimits() {
- SettingsStorageQuotaEnforcer::Limits limits = {
- static_cast<size_t>(api::storage::sync::QUOTA_BYTES),
- static_cast<size_t>(api::storage::sync::QUOTA_BYTES_PER_ITEM),
- static_cast<size_t>(api::storage::sync::MAX_ITEMS)
- };
- return limits;
-}
-
-} // namespace
-
-// static
-SettingsFrontend* SettingsFrontend::Create(Profile* profile) {
- return new SettingsFrontend(new LeveldbSettingsStorageFactory(), profile);
-}
-
-// static
-SettingsFrontend* SettingsFrontend::Create(
- const scoped_refptr<SettingsStorageFactory>& storage_factory,
- Profile* profile) {
- return new SettingsFrontend(storage_factory, profile);
-}
-
-SettingsFrontend::SettingsFrontend(
- const scoped_refptr<SettingsStorageFactory>& factory, Profile* profile)
- : local_quota_limit_(GetLocalLimits()),
- sync_quota_limit_(GetSyncLimits()),
- profile_(profile),
- observers_(new SettingsObserverList()),
- profile_observer_(new DefaultObserver(profile)) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(!profile->IsOffTheRecord());
-
- observers_->AddObserver(profile_observer_.get());
-
- const FilePath& profile_path = profile->GetPath();
- caches_[settings_namespace::LOCAL] =
- new SyncOrLocalValueStoreCache(
- settings_namespace::LOCAL,
- factory,
- local_quota_limit_,
- observers_,
- profile_path);
- caches_[settings_namespace::SYNC] =
- new SyncOrLocalValueStoreCache(
- settings_namespace::SYNC,
- factory,
- sync_quota_limit_,
- observers_,
- profile_path);
-
-#if defined(ENABLE_CONFIGURATION_POLICY)
- caches_[settings_namespace::MANAGED] =
- new ManagedValueStoreCache(
- profile->GetPolicyService(),
- ExtensionSystem::Get(profile)->event_router(),
- factory,
- observers_,
- profile_path);
-#endif
-}
-
-SettingsFrontend::~SettingsFrontend() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- observers_->RemoveObserver(profile_observer_.get());
- for (CacheMap::iterator it = caches_.begin(); it != caches_.end(); ++it) {
- ValueStoreCache* cache = it->second;
- cache->ShutdownOnUI();
- BrowserThread::DeleteSoon(BrowserThread::FILE, FROM_HERE, cache);
- }
-}
-
-syncer::SyncableService* SettingsFrontend::GetBackendForSync(
- syncer::ModelType type) const {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- CacheMap::const_iterator it = caches_.find(settings_namespace::SYNC);
- DCHECK(it != caches_.end());
- const SyncOrLocalValueStoreCache* sync_cache =
- static_cast<const SyncOrLocalValueStoreCache*>(it->second);
- switch (type) {
- case syncer::APP_SETTINGS:
- return sync_cache->GetAppBackend();
- case syncer::EXTENSION_SETTINGS:
- return sync_cache->GetExtensionBackend();
- default:
- NOTREACHED();
- return NULL;
- }
-}
-
-bool SettingsFrontend::IsStorageEnabled(
- settings_namespace::Namespace settings_namespace) const {
- return caches_.find(settings_namespace) != caches_.end();
-}
-
-void SettingsFrontend::RunWithStorage(
- const std::string& extension_id,
- settings_namespace::Namespace settings_namespace,
- const ValueStoreCache::StorageCallback& callback) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- ValueStoreCache* cache = caches_[settings_namespace];
- CHECK(cache);
-
- // The |extension| has already been referenced earlier in the stack, so it
- // can't be gone here.
- // TODO(kalman): change RunWithStorage() to take a
- // scoped_refptr<const Extension> instead.
- scoped_refptr<const Extension> extension =
- extensions::ExtensionSystem::Get(profile_)->extension_service()->
- GetExtensionById(extension_id, true);
- CHECK(extension);
-
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&ValueStoreCache::RunWithValueStoreForExtension,
- base::Unretained(cache), callback, extension));
-}
-
-void SettingsFrontend::DeleteStorageSoon(
- const std::string& extension_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- for (CacheMap::iterator it = caches_.begin(); it != caches_.end(); ++it) {
- ValueStoreCache* cache = it->second;
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&ValueStoreCache::DeleteStorageSoon,
- base::Unretained(cache),
- extension_id));
- }
-}
-
-scoped_refptr<SettingsObserverList> SettingsFrontend::GetObservers() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return observers_;
-}
-
-void SettingsFrontend::DisableStorageForTesting(
- settings_namespace::Namespace settings_namespace) {
- CacheMap::iterator it = caches_.find(settings_namespace);
- if (it != caches_.end()) {
- ValueStoreCache* cache = it->second;
- cache->ShutdownOnUI();
- BrowserThread::DeleteSoon(BrowserThread::FILE, FROM_HERE, cache);
- caches_.erase(it);
- }
-}
-
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698