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

Unified Diff: chrome/browser/chromeos/device_settings_provider.h

Issue 8727037: Signed settings refactoring: Proper caching and more tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Next round of comments. All bots meanwhile good and manual testing seems fine as well. Created 9 years, 1 month 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/chromeos/device_settings_provider.h
diff --git a/chrome/browser/chromeos/device_settings_provider.h b/chrome/browser/chromeos/device_settings_provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..5515100ce3ba1d7bc4686b3b84dddcbb8a5a9bbc
--- /dev/null
+++ b/chrome/browser/chromeos/device_settings_provider.h
@@ -0,0 +1,125 @@
+// Copyright (c) 2011 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.
+
+#ifndef CHROME_BROWSER_CHROMEOS_DEVICE_SETTINGS_PROVIDER_H_
+#define CHROME_BROWSER_CHROMEOS_DEVICE_SETTINGS_PROVIDER_H_
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/callback.h"
+#include "base/hash_tables.h"
+#include "chrome/browser/chromeos/cros_settings_provider.h"
+#include "chrome/browser/chromeos/login/signed_settings_helper.h"
+#include "chrome/browser/chromeos/signed_settings_migration_helper.h"
+#include "chrome/browser/policy/proto/device_management_backend.pb.h"
+#include "content/public/browser/notification_registrar.h"
+
+namespace em = enterprise_management;
+
+class PrefService;
+
+namespace base {
+class ListValue;
+}
+
+namespace chromeos {
+
+class OwnershipService;
+
+// CrosSettingsProvider implementation that works with SignedSettings.
+class DeviceSettingsProvider : public CrosSettingsProvider,
+ public content::NotificationObserver {
+ public:
+ DeviceSettingsProvider();
+ virtual ~DeviceSettingsProvider();
+
+ // CrosSettingsProvider implementation.
+ virtual const base::Value* Get(const std::string& path) const OVERRIDE;
+ virtual bool GetTrusted(const std::string& path,
+ const base::Closure& callback) OVERRIDE;
+ virtual bool HandlesSetting(const std::string& path) const OVERRIDE;
+ virtual void Reload() OVERRIDE;
+
+ private:
+ // CrosSettingsProvider implementation:
+ virtual void DoSet(const std::string& path,
+ const base::Value& value) OVERRIDE;
+
+ // content::NotificationObserver implementation:
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
+ const em::PolicyData get_policy() const;
Mattias Nissler (ping if slow) 2011/12/02 12:13:37 if this is a true accessor, it should be called po
pastarmovj 2011/12/02 14:43:38 It is - renamed.
+
+ void RetrieveCachedData();
Mattias Nissler (ping if slow) 2011/12/02 12:13:37 missing a comment on what it does.
pastarmovj 2011/12/02 14:43:38 Done.
+
+ void SetInPolicy(const std::string& prop, const base::Value& value);
Mattias Nissler (ping if slow) 2011/12/02 12:13:37 same here: where does the data actually end up?
pastarmovj 2011/12/02 14:43:38 Done.
+
+ // Finalizes stores to the policy file if the cache is dirt
Mattias Nissler (ping if slow) 2011/12/02 12:13:37 y.
pastarmovj 2011/12/02 14:43:38 e.
+ void FinishSetInPolicy(const std::string& prop,
+ const base::Value* value,
+ SignedSettings::ReturnCode code,
+ const em::PolicyFetchResponse& policy);
+
+ // Parses the policy cache and fills the cache of base::Value objects.
+ void UpdateValuesCache();
+
+ // Applies the metrics policy and if not set migrates the legacy file.
+ void ApplyMetricsSetting(bool use_file, bool new_value) const;
+
+ // Applies the data roaming policy.
+ void ApplyRoamingSetting(bool new_value) const;
+
+ // Applies any changes of the policies that are not handled by the respective
+ // subsystms.
+ void ApplySideEffects() const;
+
+ // Called right before boolean property is changed.
+ void OnBooleanPropertyChange(const std::string& path, bool new_value);
+
+ // Checks if the current cache value can be trusted for being representative
+ // for the disk cache.
+ bool RequestTrustedEntity();
+
+ // Called right after signed value was checked.
+ void OnPropertyRetrieve(const std::string& path,
+ const base::Value* value,
+ bool use_default_value);
+
+ // Callback of StorePolicyOp for ordinary policy stores.
+ void OnStorePolicyCompleted(SignedSettings::ReturnCode code);
+
+ // Callback of RetrievePolicyOp for ordinary policy [re]loads.
+ void OnRetrievePolicyCompleted(SignedSettings::ReturnCode code,
+ const em::PolicyFetchResponse& policy);
+
+ // Pending callbacks that need to be invoked after settings verification.
+ std::vector<base::Closure> callbacks_;
+
+ OwnershipService::Status ownership_status_;
+ mutable scoped_ptr<SignedSettingsMigrationHelper> migration_helper_;
+
+ content::NotificationRegistrar registrar_;
+
+ // In order to guard against occasional failure to fetch a property
+ // we allow for some number of retries.
+ int retries_left_;
+
+ em::PolicyData policy_;
+ bool trusted_;
+
+ PrefValueMap values_cache_;
+
+ friend class SignedSettingsHelper;
+
+ DISALLOW_COPY_AND_ASSIGN(DeviceSettingsProvider);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_DEVICE_SETTINGS_PROVIDER_H_

Powered by Google App Engine
This is Rietveld 408576698