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

Unified Diff: chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.cc

Issue 1019283004: Switch to direct use of OwnerSettingsServiceChromeOS::Set() in tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Static enterprise-owner marker. Created 5 years, 8 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/chromeos/settings/scoped_cros_settings_test_helper.cc
diff --git a/chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.cc b/chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.cc
new file mode 100644
index 0000000000000000000000000000000000000000..368dc1ca701897031465cb21e8061bc7b8dfd44e
--- /dev/null
+++ b/chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.cc
@@ -0,0 +1,126 @@
+// Copyright (c) 2015 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/chromeos/settings/scoped_cros_settings_test_helper.h"
+
+#include "base/values.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/ownership/fake_owner_settings_service.h"
+#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
+#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
+#include "chrome/browser/chromeos/settings/device_settings_cache.h"
+#include "chrome/browser/chromeos/settings/device_settings_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chromeos/settings/cros_settings_provider.h"
+#include "components/ownership/mock_owner_key_util.h"
+#include "policy/proto/device_management_backend.pb.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromeos {
+
+ScopedCrosSettingsTestHelper::ScopedCrosSettingsTestHelper() {
+ Initialize(true);
+}
+
+ScopedCrosSettingsTestHelper::ScopedCrosSettingsTestHelper(
+ bool create_settings_service) {
+ Initialize(create_settings_service);
+}
+
+ScopedCrosSettingsTestHelper::~ScopedCrosSettingsTestHelper() {
+ RestoreProvider();
+}
+
+FakeOwnerSettingsService*
+ScopedCrosSettingsTestHelper::CreateOwnerSettingsService(Profile* profile) {
+ return new FakeOwnerSettingsService(
+ profile, new ownership::MockOwnerKeyUtil(), &stub_settings_provider_);
+}
+
+void ScopedCrosSettingsTestHelper::ReplaceProvider(const std::string& path) {
+ // Swap out the DeviceSettingsProvider with our settings provider so we can
+ // set values for the specified path.
+ CrosSettings* const cros_settings = CrosSettings::Get();
+ real_settings_provider_ = cros_settings->GetProvider(path);
+ EXPECT_TRUE(real_settings_provider_);
+ EXPECT_TRUE(cros_settings->RemoveSettingsProvider(real_settings_provider_));
+ cros_settings->AddSettingsProvider(&stub_settings_provider_);
+}
+
+void ScopedCrosSettingsTestHelper::RestoreProvider() {
+ if (real_settings_provider_) {
+ // Restore the real DeviceSettingsProvider.
+ CrosSettings* const cros_settings = CrosSettings::Get();
+ EXPECT_TRUE(
+ cros_settings->RemoveSettingsProvider(&stub_settings_provider_));
+ cros_settings->AddSettingsProvider(real_settings_provider_);
+ real_settings_provider_ = nullptr;
+ }
+}
+
+void ScopedCrosSettingsTestHelper::SetTrustedStatus(
+ CrosSettingsProvider::TrustedStatus status) {
+ stub_settings_provider_.SetTrustedStatus(status);
+}
+
+void ScopedCrosSettingsTestHelper::SetCurrentUserIsOwner(bool owner) {
+ stub_settings_provider_.SetCurrentUserIsOwner(owner);
+}
+
+void ScopedCrosSettingsTestHelper::Set(const std::string& path,
+ const base::Value& in_value) {
+ stub_settings_provider_.Set(path, in_value);
+}
+
+void ScopedCrosSettingsTestHelper::SetBoolean(const std::string& path,
+ bool in_value) {
+ Set(path, base::FundamentalValue(in_value));
+}
+
+void ScopedCrosSettingsTestHelper::SetInteger(const std::string& path,
+ int in_value) {
+ Set(path, base::FundamentalValue(in_value));
+}
+
+void ScopedCrosSettingsTestHelper::SetDouble(const std::string& path,
+ double in_value) {
+ Set(path, base::FundamentalValue(in_value));
+}
+
+void ScopedCrosSettingsTestHelper::SetString(const std::string& path,
+ const std::string& in_value) {
+ Set(path, base::StringValue(in_value));
+}
+
+void ScopedCrosSettingsTestHelper::StoreCachedDeviceSetting(
+ const std::string& path) {
+ const base::Value* value = stub_settings_provider_.Get(path);
+ if (value) {
+ enterprise_management::ChromeDeviceSettingsProto settings;
+ OwnerSettingsServiceChromeOS::UpdateDeviceSettings(path, *value, settings);
+ enterprise_management::PolicyData data;
+ CHECK(settings.SerializeToString(data.mutable_policy_value()));
+ CHECK(device_settings_cache::Store(data, g_browser_process->local_state()));
+ }
+}
+
+void ScopedCrosSettingsTestHelper::CopyStoredValue(const std::string& path) {
+ CrosSettingsProvider* provider = real_settings_provider_
+ ? real_settings_provider_
+ : CrosSettings::Get()->GetProvider(path);
+ const base::Value* value = provider->Get(path);
+ if (value) {
+ stub_settings_provider_.Set(path, *value);
+ }
+}
+
+void ScopedCrosSettingsTestHelper::Initialize(bool create_settings_service) {
+ if (create_settings_service && !DeviceSettingsService::IsInitialized()) {
+ test_device_settings_service_.reset(new ScopedTestDeviceSettingsService());
+ test_cros_settings_.reset(new ScopedTestCrosSettings());
+ }
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698