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

Unified Diff: chrome/browser/ui/webui/options/preferences_browsertest.cc

Issue 2919343005: Remove tests for deprecated Options UI (Closed)
Patch Set: and more Created 3 years, 6 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/ui/webui/options/preferences_browsertest.cc
diff --git a/chrome/browser/ui/webui/options/preferences_browsertest.cc b/chrome/browser/ui/webui/options/preferences_browsertest.cc
deleted file mode 100644
index 3cc4c0bd3a3eae192dec96717a6bb00424cbef22..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/options/preferences_browsertest.cc
+++ /dev/null
@@ -1,1106 +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/ui/webui/options/preferences_browsertest.h"
-
-#include <stddef.h>
-
-#include <iostream>
-#include <memory>
-#include <sstream>
-#include <utility>
-
-#include "base/callback.h"
-#include "base/json/json_reader.h"
-#include "base/json/json_writer.h"
-#include "base/memory/ptr_util.h"
-#include "base/values.h"
-#include "build/build_config.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "components/policy/core/browser/browser_policy_connector.h"
-#include "components/policy/core/common/external_data_fetcher.h"
-#include "components/policy/core/common/policy_map.h"
-#include "components/policy/core/common/policy_types.h"
-#include "components/policy/policy_constants.h"
-#include "components/prefs/pref_service.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_test_utils.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "url/gurl.h"
-
-#if defined(OS_CHROMEOS)
-#include "base/strings/stringprintf.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/proxy_cros_settings_parser.h"
-#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/chromeos/settings/stub_install_attributes.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/shill_profile_client.h"
-#include "chromeos/dbus/shill_service_client.h"
-#include "chromeos/network/network_state.h"
-#include "chromeos/network/network_state_handler.h"
-#include "chromeos/network/proxy/proxy_config_handler.h"
-#include "chromeos/settings/cros_settings_names.h"
-#include "components/onc/onc_pref_names.h"
-#include "components/proxy_config/proxy_config_dictionary.h"
-#include "components/proxy_config/proxy_config_pref_names.h"
-#include "content/public/test/test_utils.h"
-#include "third_party/cros_system_api/dbus/service_constants.h"
-#endif
-
-using testing::AllOf;
-using testing::Mock;
-using testing::Property;
-using testing::Return;
-using testing::_;
-
-namespace base {
-
-// Helper for pretty-printing the contents of base::Value in case of failures.
-void PrintTo(const base::Value& value, std::ostream* stream) {
- std::string json;
- JSONWriter::Write(value, &json);
- *stream << json;
-}
-
-} // namespace base
-
-// Googlemock matcher for base::Value.
-MATCHER_P(EqualsValue, expected, "") {
- return arg && arg->Equals(expected);
-}
-
-PreferencesBrowserTest::PreferencesBrowserTest() {
-}
-
-PreferencesBrowserTest::~PreferencesBrowserTest() {
-}
-
-PrefService* PreferencesBrowserTest::pref_service() {
- DCHECK(pref_change_registrar_);
- return pref_change_registrar_->prefs();
-}
-
-// Navigates to the settings page, causing the JavaScript pref handling code to
-// load and injects JavaScript testing code.
-void PreferencesBrowserTest::SetUpOnMainThread() {
- ui_test_utils::NavigateToURL(browser(),
- GURL(chrome::kChromeUISettingsFrameURL));
- SetUpPrefs();
-}
-
-void PreferencesBrowserTest::TearDownOnMainThread() {
- pref_change_registrar_.reset();
-}
-
-void PreferencesBrowserTest::SetUpPrefs() {
- content::WebContents* web_contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- ASSERT_TRUE(web_contents);
- render_view_host_ = web_contents->GetRenderViewHost();
- ASSERT_TRUE(render_view_host_);
-
- DCHECK(!pref_change_registrar_);
- pref_change_registrar_.reset(new PrefChangeRegistrar);
- pref_change_registrar_->Init(browser()->profile()->GetPrefs());
-
- ASSERT_TRUE(content::ExecuteScript(render_view_host_,
- "function TestEnv() {"
- " this.sentinelName_ = 'download.prompt_for_download';"
- " this.prefs_ = [];"
- " TestEnv.instance_ = this;"
- "}"
- ""
- "TestEnv.handleEvent = function(event) {"
- " var env = TestEnv.instance_;"
- " var name = event.type;"
- " env.removePrefListener_(name);"
- " if (name == TestEnv.sentinelName_)"
- " env.sentinelValue_ = event.value.value;"
- " else"
- " env.reply_[name] = event.value;"
- " if (env.fetching_ && !--env.fetching_ ||"
- " !env.fetching_ && name == env.sentinelName_) {"
- " env.removePrefListeners_();"
- " window.domAutomationController.send(JSON.stringify(env.reply_));"
- " delete env.reply_;"
- " }"
- "};"
- ""
- "TestEnv.prototype = {"
- " addPrefListener_: function(name) {"
- " Preferences.getInstance().addEventListener(name,"
- " TestEnv.handleEvent);"
- " },"
- ""
- " addPrefListeners_: function() {"
- " for (var i in this.prefs_)"
- " this.addPrefListener_(this.prefs_[i]);"
- " },"
- ""
- " removePrefListener_: function(name) {"
- " Preferences.getInstance().removeEventListener(name,"
- " TestEnv.handleEvent);"
- " },"
- ""
- " removePrefListeners_: function() {"
- " for (var i in this.prefs_)"
- " this.removePrefListener_(this.prefs_[i]);"
- " },"
- ""
- ""
- " addPref: function(name) {"
- " this.prefs_.push(name);"
- " },"
- ""
- " setupAndReply: function() {"
- " this.reply_ = {};"
- " Preferences.instance_ = new Preferences();"
- " this.addPref(this.sentinelName_);"
- " this.fetching_ = this.prefs_.length;"
- " this.addPrefListeners_();"
- " Preferences.getInstance().initialize();"
- " },"
- ""
- " runAndReply: function(test) {"
- " this.reply_ = {};"
- " this.addPrefListeners_();"
- " test();"
- " this.sentinelValue_ = !this.sentinelValue_;"
- " Preferences.setBooleanPref(this.sentinelName_, this.sentinelValue_,"
- " true);"
- " },"
- ""
- " startObserving: function() {"
- " this.reply_ = {};"
- " this.addPrefListeners_();"
- " },"
- ""
- " finishObservingAndReply: function() {"
- " this.sentinelValue_ = !this.sentinelValue_;"
- " Preferences.setBooleanPref(this.sentinelName_, this.sentinelValue_,"
- " true);"
- " }"
- "};"));
-}
-
-// Forwards notifications received when pref values change in the backend.
-void PreferencesBrowserTest::OnPreferenceChanged(const std::string& pref_name) {
- OnCommit(pref_service()->FindPreference(pref_name.c_str()));
-}
-
-void PreferencesBrowserTest::SetUpInProcessBrowserTestFixture() {
- // Sets up a mock policy provider for user and device policies.
- EXPECT_CALL(policy_provider_, IsInitializationComplete(_))
- .WillRepeatedly(Return(true));
- policy::BrowserPolicyConnector::SetPolicyProviderForTesting(
- &policy_provider_);
-}
-
-void PreferencesBrowserTest::SetUserPolicies(
- const std::vector<std::string>& names,
- const std::vector<std::unique_ptr<base::Value>>& values,
- policy::PolicyLevel level) {
- policy::PolicyMap map;
- for (size_t i = 0; i < names.size(); ++i) {
- map.Set(names[i], level, policy::POLICY_SCOPE_USER,
- policy::POLICY_SOURCE_CLOUD, values[i]->CreateDeepCopy(), nullptr);
- }
- policy_provider_.UpdateChromePolicy(map);
-}
-
-void PreferencesBrowserTest::ClearUserPolicies() {
- policy::PolicyMap empty_policy_map;
- policy_provider_.UpdateChromePolicy(empty_policy_map);
-}
-
-void PreferencesBrowserTest::SetUserValues(
- const std::vector<std::string>& names,
- const std::vector<std::unique_ptr<base::Value>>& values) {
- for (size_t i = 0; i < names.size(); ++i) {
- pref_service()->Set(names[i].c_str(), *values[i]);
- }
-}
-
-void PreferencesBrowserTest::VerifyKeyValue(const base::DictionaryValue& dict,
- const std::string& key,
- const base::Value& expected) {
- const base::Value* actual = NULL;
- EXPECT_TRUE(dict.Get(key, &actual)) << "Was checking key: " << key;
- if (actual)
- EXPECT_EQ(expected, *actual) << "Was checking key: " << key;
-}
-
-void PreferencesBrowserTest::VerifyPref(
- const base::DictionaryValue* prefs,
- const std::string& name,
- const std::unique_ptr<base::Value>& value,
- const std::string& controlledBy,
- bool disabled,
- bool uncommitted) {
- const base::Value* pref = NULL;
- const base::DictionaryValue* dict = NULL;
- ASSERT_TRUE(prefs->GetWithoutPathExpansion(name, &pref));
- ASSERT_TRUE(pref->GetAsDictionary(&dict));
- VerifyKeyValue(*dict, "value", *value);
- if (!controlledBy.empty())
- VerifyKeyValue(*dict, "controlledBy", base::Value(controlledBy));
- else
- EXPECT_FALSE(dict->HasKey("controlledBy"));
-
- if (disabled)
- VerifyKeyValue(*dict, "disabled", base::Value(true));
- else if (dict->HasKey("disabled"))
- VerifyKeyValue(*dict, "disabled", base::Value(false));
-
- if (uncommitted)
- VerifyKeyValue(*dict, "uncommitted", base::Value(true));
- else if (dict->HasKey("uncommitted"))
- VerifyKeyValue(*dict, "uncommitted", base::Value(false));
-}
-
-void PreferencesBrowserTest::VerifyObservedPref(
- const std::string& json,
- const std::string& name,
- const std::unique_ptr<base::Value>& value,
- const std::string& controlledBy,
- bool disabled,
- bool uncommitted) {
- std::unique_ptr<base::Value> observed_value_ptr =
- base::JSONReader::Read(json);
- const base::DictionaryValue* observed_dict;
- ASSERT_TRUE(observed_value_ptr.get());
- ASSERT_TRUE(observed_value_ptr->GetAsDictionary(&observed_dict));
- VerifyPref(observed_dict, name, value, controlledBy, disabled, uncommitted);
-}
-
-void PreferencesBrowserTest::VerifyObservedPrefs(
- const std::string& json,
- const std::vector<std::string>& names,
- const std::vector<std::unique_ptr<base::Value>>& values,
- const std::string& controlledBy,
- bool disabled,
- bool uncommitted) {
- std::unique_ptr<base::Value> observed_value_ptr =
- base::JSONReader::Read(json);
- const base::DictionaryValue* observed_dict;
- ASSERT_TRUE(observed_value_ptr.get());
- ASSERT_TRUE(observed_value_ptr->GetAsDictionary(&observed_dict));
- for (size_t i = 0; i < names.size(); ++i) {
- VerifyPref(observed_dict, names[i], values[i], controlledBy, disabled,
- uncommitted);
- }
-}
-
-void PreferencesBrowserTest::ExpectNoCommit(const std::string& name) {
- pref_change_registrar_->Add(
- name.c_str(),
- base::Bind(&PreferencesBrowserTest::OnPreferenceChanged,
- base::Unretained(this)));
- EXPECT_CALL(*this, OnCommit(Property(&PrefService::Preference::name, name)))
- .Times(0);
-}
-
-void PreferencesBrowserTest::ExpectSetCommit(
- const std::string& name,
- const std::unique_ptr<base::Value>& value) {
- pref_change_registrar_->Add(
- name.c_str(),
- base::Bind(&PreferencesBrowserTest::OnPreferenceChanged,
- base::Unretained(this)));
- EXPECT_CALL(
- *this,
- OnCommit(AllOf(Property(&PrefService::Preference::name, name),
- Property(&PrefService::Preference::IsUserControlled, true),
- Property(&PrefService::Preference::GetValue,
- EqualsValue(value.get())))));
-}
-
-void PreferencesBrowserTest::ExpectClearCommit(const std::string& name) {
- pref_change_registrar_->Add(
- name.c_str(),
- base::Bind(&PreferencesBrowserTest::OnPreferenceChanged,
- base::Unretained(this)));
- EXPECT_CALL(*this, OnCommit(AllOf(
- Property(&PrefService::Preference::name, name),
- Property(&PrefService::Preference::IsUserControlled, false))));
-}
-
-void PreferencesBrowserTest::VerifyAndClearExpectations() {
- Mock::VerifyAndClearExpectations(this);
- pref_change_registrar_->RemoveAll();
-}
-
-void PreferencesBrowserTest::SetupJavaScriptTestEnvironment(
- const std::vector<std::string>& pref_names,
- std::string* observed_json) const {
- std::stringstream javascript;
- javascript << "var testEnv = new TestEnv();";
- for (const auto& name : pref_names) {
- javascript << "testEnv.addPref('" << name.c_str() << "');";
- }
- javascript << "testEnv.setupAndReply();";
- std::string temp_observed_json;
- if (!observed_json)
- observed_json = &temp_observed_json;
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- render_view_host_, javascript.str(), observed_json));
-}
-
-void PreferencesBrowserTest::SetPref(const std::string& name,
- const std::string& type,
- const std::unique_ptr<base::Value>& value,
- bool commit,
- std::string* observed_json) {
- std::unique_ptr<base::Value> commit_ptr(new base::Value(commit));
- std::stringstream javascript;
- javascript << "testEnv.runAndReply(function() {"
- << " Preferences.set" << type << "Pref("
- << " '" << name << "',"
- << " " << *value << ","
- << " " << *commit_ptr << ");"
- << "});";
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- render_view_host_, javascript.str(), observed_json));
-}
-
-void PreferencesBrowserTest::VerifySetPref(
- const std::string& name,
- const std::string& type,
- const std::unique_ptr<base::Value>& value,
- bool commit) {
- if (commit)
- ExpectSetCommit(name, value);
- else
- ExpectNoCommit(name);
- std::string observed_json;
- SetPref(name, type, value, commit, &observed_json);
- VerifyObservedPref(observed_json, name, value, std::string(), false, !commit);
- VerifyAndClearExpectations();
-}
-
-void PreferencesBrowserTest::VerifyClearPref(
- const std::string& name,
- const std::unique_ptr<base::Value>& value,
- bool commit) {
- if (commit)
- ExpectClearCommit(name);
- else
- ExpectNoCommit(name);
- std::string commit_json;
- base::JSONWriter::Write(base::Value(commit), &commit_json);
- std::stringstream javascript;
- javascript << "testEnv.runAndReply(function() {"
- << " Preferences.clearPref("
- << " '" << name.c_str() << "',"
- << " " << commit_json.c_str() << ");});";
- std::string observed_json;
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- render_view_host_, javascript.str(), &observed_json));
- VerifyObservedPref(observed_json, name, value, "recommended", false, !commit);
- VerifyAndClearExpectations();
-}
-
-void PreferencesBrowserTest::VerifyCommit(
- const std::string& name,
- const std::unique_ptr<base::Value>& value,
- const std::string& controlledBy) {
- std::stringstream javascript;
- javascript << "testEnv.runAndReply(function() {"
- << " Preferences.getInstance().commitPref("
- << " '" << name.c_str() << "');});";
- std::string observed_json;
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- render_view_host_, javascript.str(), &observed_json));
- VerifyObservedPref(observed_json, name, value, controlledBy, false, false);
-}
-
-void PreferencesBrowserTest::VerifySetCommit(
- const std::string& name,
- const std::unique_ptr<base::Value>& value) {
- ExpectSetCommit(name, value);
- VerifyCommit(name, value, std::string());
- VerifyAndClearExpectations();
-}
-
-void PreferencesBrowserTest::VerifyClearCommit(
- const std::string& name,
- const std::unique_ptr<base::Value>& value) {
- ExpectClearCommit(name);
- VerifyCommit(name, value, "recommended");
- VerifyAndClearExpectations();
-}
-
-void PreferencesBrowserTest::VerifyRollback(
- const std::string& name,
- const std::unique_ptr<base::Value>& value,
- const std::string& controlledBy) {
- ExpectNoCommit(name);
- std::stringstream javascript;
- javascript << "testEnv.runAndReply(function() {"
- << " Preferences.getInstance().rollbackPref("
- << " '" << name.c_str() << "');});";
- std::string observed_json;
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- render_view_host_, javascript.str(), &observed_json));
- VerifyObservedPref(observed_json, name, value, controlledBy, false, true);
- VerifyAndClearExpectations();
-}
-
-void PreferencesBrowserTest::StartObserving() {
- ASSERT_TRUE(content::ExecuteScript(
- render_view_host_, "testEnv.startObserving();"));
-}
-
-void PreferencesBrowserTest::FinishObserving(std::string* observed_json) {
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- render_view_host_,
- "testEnv.finishObservingAndReply();",
- observed_json));
-}
-
-void PreferencesBrowserTest::UseDefaultTestPrefs(bool includeListPref) {
- // Boolean pref.
- types_.push_back("Boolean");
- pref_names_.push_back(prefs::kAlternateErrorPagesEnabled);
- policy_names_.push_back(policy::key::kAlternateErrorPagesEnabled);
- non_default_values_.push_back(base::MakeUnique<base::Value>(false));
-
- // Integer pref.
- types_.push_back("Integer");
- pref_names_.push_back(prefs::kRestoreOnStartup);
- policy_names_.push_back(policy::key::kRestoreOnStartup);
- non_default_values_.push_back(base::MakeUnique<base::Value>(4));
-
- // List pref.
- if (includeListPref) {
- types_.push_back("List");
- pref_names_.push_back(prefs::kURLsToRestoreOnStartup);
- policy_names_.push_back(policy::key::kRestoreOnStartupURLs);
- auto list = base::MakeUnique<base::ListValue>();
- list->AppendString("http://www.example.com");
- list->AppendString("http://example.com");
- non_default_values_.push_back(std::move(list));
- }
-
- // Retrieve default values.
- for (const auto& name : pref_names_) {
- default_values_.push_back(
- pref_service()->GetDefaultPrefValue(name.c_str())->CreateDeepCopy());
- }
-}
-
-// Verifies that initializing the JavaScript Preferences class fires the correct
-// notifications in JavaScript.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, FetchPrefs) {
- UseDefaultTestPrefs(true);
- std::string observed_json;
-
- // Verify notifications when default values are in effect.
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, default_values_,
- std::string(), false, false);
-
- // Verify notifications when recommended values are in effect.
- SetUserPolicies(policy_names_, non_default_values_,
- policy::POLICY_LEVEL_RECOMMENDED);
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_,
- "recommended", false, false);
-
- // Verify notifications when mandatory values are in effect.
- SetUserPolicies(policy_names_, non_default_values_,
- policy::POLICY_LEVEL_MANDATORY);
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "policy",
- true, false);
-
- // Verify notifications when user-modified values are in effect.
- ClearUserPolicies();
- SetUserValues(pref_names_, non_default_values_);
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_,
- std::string(), false, false);
-}
-
-// Verifies that setting a user-modified pref value through the JavaScript
-// Preferences class fires the correct notification in JavaScript and causes the
-// change to be committed to the C++ backend.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, SetPrefs) {
- UseDefaultTestPrefs(false);
-
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifySetPref(pref_names_[i], types_[i], non_default_values_[i], true);
- }
-}
-
-// Verifies that clearing a user-modified pref value through the JavaScript
-// Preferences class fires the correct notification in JavaScript and causes the
-// change to be committed to the C++ backend.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, ClearPrefs) {
- UseDefaultTestPrefs(false);
-
- SetUserPolicies(policy_names_, default_values_,
- policy::POLICY_LEVEL_RECOMMENDED);
- SetUserValues(pref_names_, non_default_values_);
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifyClearPref(pref_names_[i], default_values_[i], true);
- }
-}
-
-// Verifies that when the user-modified value of a dialog pref is set and the
-// change then committed through the JavaScript Preferences class, the correct
-// notifications fire and a commit to the C++ backend occurs in the latter step
-// only.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, DialogPrefsSetCommit) {
- UseDefaultTestPrefs(false);
-
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifySetPref(pref_names_[i], types_[i], non_default_values_[i], false);
- VerifySetCommit(pref_names_[i], non_default_values_[i]);
- }
-}
-
-// Verifies that when the user-modified value of a dialog pref is set and the
-// change then rolled back through the JavaScript Preferences class, the correct
-// notifications fire and no commit to the C++ backend occurs.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, DialogPrefsSetRollback) {
- UseDefaultTestPrefs(false);
-
- // Verify behavior when default values are in effect.
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifySetPref(pref_names_[i], types_[i], non_default_values_[i], false);
- VerifyRollback(pref_names_[i], default_values_[i], std::string());
- }
-
- // Verify behavior when recommended values are in effect.
- SetUserPolicies(policy_names_, default_values_,
- policy::POLICY_LEVEL_RECOMMENDED);
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifySetPref(pref_names_[i], types_[i], non_default_values_[i], false);
- VerifyRollback(pref_names_[i], default_values_[i], "recommended");
- }
-}
-
-// Verifies that when the user-modified value of a dialog pref is cleared and
-// the change then committed through the JavaScript Preferences class, the
-// correct notifications fire and a commit to the C++ backend occurs in the
-// latter step only.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, DialogPrefsClearCommit) {
- UseDefaultTestPrefs(false);
-
- SetUserPolicies(policy_names_, default_values_,
- policy::POLICY_LEVEL_RECOMMENDED);
- SetUserValues(pref_names_, non_default_values_);
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifyClearPref(pref_names_[i], default_values_[i], false);
- VerifyClearCommit(pref_names_[i], default_values_[i]);
- }
-}
-
-// Verifies that when the user-modified value of a dialog pref is cleared and
-// the change then rolled back through the JavaScript Preferences class, the
-// correct notifications fire and no commit to the C++ backend occurs.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, DialogPrefsClearRollback) {
- UseDefaultTestPrefs(false);
-
- SetUserPolicies(policy_names_, default_values_,
- policy::POLICY_LEVEL_RECOMMENDED);
- SetUserValues(pref_names_, non_default_values_);
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- VerifyClearPref(pref_names_[i], default_values_[i], false);
- VerifyRollback(pref_names_[i], non_default_values_[i], std::string());
- }
-}
-
-// Verifies that when preference values change in the C++ backend, the correct
-// notifications fire in JavaScript.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, NotificationsOnBackendChanges) {
- UseDefaultTestPrefs(false);
- std::string observed_json;
-
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
-
- // Verify notifications when recommended values come into effect.
- StartObserving();
- SetUserPolicies(policy_names_, non_default_values_,
- policy::POLICY_LEVEL_RECOMMENDED);
- FinishObserving(&observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_,
- "recommended", false, false);
-
- // Verify notifications when mandatory values come into effect.
- StartObserving();
- SetUserPolicies(policy_names_, non_default_values_,
- policy::POLICY_LEVEL_MANDATORY);
- FinishObserving(&observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "policy",
- true, false);
-
- // Verify notifications when default values come into effect.
- StartObserving();
- ClearUserPolicies();
- FinishObserving(&observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, default_values_,
- std::string(), false, false);
-
- // Verify notifications when user-modified values come into effect.
- StartObserving();
- SetUserValues(pref_names_, non_default_values_);
- FinishObserving(&observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_,
- std::string(), false, false);
-}
-
-#if defined(OS_CHROMEOS)
-
-// Verifies that initializing the JavaScript Preferences class fires the correct
-// notifications in JavaScript for pref values handled by the
-// CoreChromeOSOptionsHandler class.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest, ChromeOSDeviceFetchPrefs) {
- std::string observed_json;
-
- // Boolean pref.
- pref_names_.push_back(chromeos::kAccountsPrefAllowGuest);
- default_values_.push_back(base::MakeUnique<base::Value>(true));
-
- // String pref.
- pref_names_.push_back(chromeos::kReleaseChannel);
- default_values_.push_back(base::MakeUnique<base::Value>(""));
-
- // List pref.
- pref_names_.push_back(chromeos::kAccountsPrefUsers);
- default_values_.push_back(base::MakeUnique<base::ListValue>());
-
- // Verify notifications when default values are in effect.
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, default_values_, "owner",
- true, false);
-}
-
-// Verifies that initializing the JavaScript Preferences class fires the correct
-// notifications in JavaScript for non-privileged pref values handled by the
-// CoreChromeOSOptionsHandler class.
-IN_PROC_BROWSER_TEST_F(PreferencesBrowserTest,
- ChromeOSDeviceFetchNonPrivilegedPrefs) {
- std::vector<std::unique_ptr<base::Value>> decorated_non_default_values;
- std::string observed_json;
-
- // Non-privileged string pref.
- pref_names_.push_back(chromeos::kSystemTimezone);
- default_values_.push_back(
- base::MakeUnique<base::Value>("America/Los_Angeles"));
- non_default_values_.push_back(
- base::MakeUnique<base::Value>("America/New_York"));
- decorated_non_default_values.push_back(
- non_default_values_.back()->CreateDeepCopy());
-
- // Verify notifications when default values are in effect.
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, default_values_,
- std::string(), false, false);
-
- chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
- cros_settings->Set(pref_names_[0], *non_default_values_[0]);
-
- // Verify notifications when non-default values are in effect.
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, decorated_non_default_values,
- std::string(), false, false);
-}
-
-class ManagedPreferencesBrowserTest : public PreferencesBrowserTest {
- protected:
- // PreferencesBrowserTest implementation:
- void SetUpInProcessBrowserTestFixture() override {
- // Set up fake install attributes.
- std::unique_ptr<chromeos::StubInstallAttributes> attributes =
- base::MakeUnique<chromeos::StubInstallAttributes>();
- attributes->SetCloudManaged("example.com", "fake-id");
- policy::BrowserPolicyConnectorChromeOS::SetInstallAttributesForTesting(
- attributes.release());
-
- PreferencesBrowserTest::SetUpInProcessBrowserTestFixture();
- }
-};
-
-// Verifies that initializing the JavaScript Preferences class fires the correct
-// notifications in JavaScript for pref values handled by the
-// CoreChromeOSOptionsHandler class for a managed device.
-IN_PROC_BROWSER_TEST_F(ManagedPreferencesBrowserTest,
- ChromeOSDeviceFetchPrefs) {
- std::vector<std::unique_ptr<base::Value>> decorated_non_default_values;
- std::string observed_json;
-
- // Boolean pref.
- pref_names_.push_back(chromeos::kAccountsPrefAllowGuest);
- non_default_values_.push_back(base::MakeUnique<base::Value>(false));
- decorated_non_default_values.push_back(
- non_default_values_.back()->CreateDeepCopy());
-
- // String pref.
- pref_names_.push_back(chromeos::kReleaseChannel);
- non_default_values_.push_back(
- base::MakeUnique<base::Value>("stable-channel"));
- decorated_non_default_values.push_back(
- non_default_values_.back()->CreateDeepCopy());
-
- // List pref.
- pref_names_.push_back(chromeos::kAccountsPrefUsers);
- auto list = base::MakeUnique<base::ListValue>();
- list->AppendString("me@google.com");
- list->AppendString("you@google.com");
- non_default_values_.push_back(std::move(list));
- list = base::MakeUnique<base::ListValue>();
- auto dict = base::MakeUnique<base::DictionaryValue>();
- dict->SetString("username", "me@google.com");
- dict->SetString("name", "me@google.com");
- dict->SetString("email", "");
- dict->SetBoolean("owner", false);
- list->Append(std::move(dict));
- dict = base::MakeUnique<base::DictionaryValue>();
- dict->SetString("username", "you@google.com");
- dict->SetString("name", "you@google.com");
- dict->SetString("email", "");
- dict->SetBoolean("owner", false);
- list->Append(std::move(dict));
- decorated_non_default_values.push_back(std::move(list));
-
- chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
- for (size_t i = 0; i < pref_names_.size(); ++i) {
- cros_settings->Set(pref_names_[i], *non_default_values_[i]);
- }
-
- // Verify notifications when mandatory values are in effect.
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, decorated_non_default_values,
- "policy", true, false);
-}
-
-// Verifies that initializing the JavaScript Preferences class fires the correct
-// notifications in JavaScript for non-privileged pref values handled by the
-// CoreChromeOSOptionsHandler class for a managed device.
-IN_PROC_BROWSER_TEST_F(ManagedPreferencesBrowserTest,
- ChromeOSDeviceFetchNonPrivilegedPrefs) {
- std::vector<std::unique_ptr<base::Value>> decorated_non_default_values;
- std::string observed_json;
-
- // Non-privileged string pref.
- pref_names_.push_back(chromeos::kSystemTimezone);
- non_default_values_.push_back(
- base::MakeUnique<base::Value>("America/New_York"));
- decorated_non_default_values.push_back(
- non_default_values_.back()->CreateDeepCopy());
-
- // Verify notifications when mandatory values are in effect.
- chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
- cros_settings->Set(pref_names_[0], *non_default_values_[0]);
-
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, decorated_non_default_values,
- std::string(), false, false);
-}
-
-namespace {
-
-const char* kUserProfilePath = "user_profile";
-
-} // namespace
-
-class ProxyPreferencesBrowserTest : public PreferencesBrowserTest {
- public:
- void SetUpOnMainThread() override {
- SetupNetworkEnvironment();
- content::RunAllPendingInMessageLoop();
-
- std::unique_ptr<base::DictionaryValue> proxy_config_dict(
- ProxyConfigDictionary::CreateFixedServers("127.0.0.1:8080",
- "*.google.com, 1.2.3.4:22"));
-
- ProxyConfigDictionary proxy_config(std::move(proxy_config_dict));
-
- const chromeos::NetworkState* network = GetDefaultNetwork();
- ASSERT_TRUE(network);
- chromeos::proxy_config::SetProxyConfigForNetwork(proxy_config, *network);
-
- std::string url = base::StringPrintf("%s?network=%s",
- chrome::kChromeUIProxySettingsURL,
- network->guid().c_str());
-
- ui_test_utils::NavigateToURL(browser(), GURL(url));
- SetUpPrefs();
- }
-
- protected:
- void SetupNetworkEnvironment() {
- chromeos::ShillProfileClient::TestInterface* profile_test =
- chromeos::DBusThreadManager::Get()->GetShillProfileClient()
- ->GetTestInterface();
- chromeos::ShillServiceClient::TestInterface* service_test =
- chromeos::DBusThreadManager::Get()->GetShillServiceClient()
- ->GetTestInterface();
-
- profile_test->AddProfile(kUserProfilePath, "user");
-
- service_test->ClearServices();
- service_test->AddService("stub_ethernet",
- "stub_ethernet_guid",
- "eth0",
- shill::kTypeEthernet,
- shill::kStateOnline,
- true /* add_to_visible */ );
- service_test->SetServiceProperty("stub_ethernet", shill::kProfileProperty,
- base::Value(kUserProfilePath));
- profile_test->AddService(kUserProfilePath, "stub_wifi2");
- }
-
- void SetONCPolicy(const char* policy_name, policy::PolicyScope scope) {
- std::string onc_policy =
- "{ \"NetworkConfigurations\": ["
- " { \"GUID\": \"stub_ethernet_guid\","
- " \"Type\": \"Ethernet\","
- " \"Name\": \"My Ethernet\","
- " \"Ethernet\": {"
- " \"Authentication\": \"None\" },"
- " \"ProxySettings\": {"
- " \"PAC\": \"http://domain.com/x\","
- " \"Type\": \"PAC\" }"
- " }"
- " ],"
- " \"Type\": \"UnencryptedConfiguration\""
- "}";
-
- policy::PolicyMap map;
- map.Set(policy_name, policy::POLICY_LEVEL_MANDATORY, scope,
- policy::POLICY_SOURCE_CLOUD,
- base::MakeUnique<base::Value>(onc_policy), nullptr);
- policy_provider_.UpdateChromePolicy(map);
-
- content::RunAllPendingInMessageLoop();
- }
-
- const chromeos::NetworkState* GetDefaultNetwork() {
- chromeos::NetworkStateHandler* handler =
- chromeos::NetworkHandler::Get()->network_state_handler();
- return handler->DefaultNetwork();
- }
-
- void SetProxyPref(const std::string& name, const base::Value& value) {
- std::string type;
- switch (value.GetType()) {
- case base::Value::Type::BOOLEAN:
- type = "Boolean";
- break;
- case base::Value::Type::INTEGER:
- type = "Integer";
- break;
- case base::Value::Type::STRING:
- type = "String";
- break;
- default:
- ASSERT_TRUE(false);
- }
-
- std::string observed_json;
- SetPref(name, type, value.CreateDeepCopy(), true, &observed_json);
- }
-
- void VerifyCurrentProxyServer(const std::string& expected_server,
- onc::ONCSource expected_source) {
- const chromeos::NetworkState* network = GetDefaultNetwork();
- ASSERT_TRUE(network);
- onc::ONCSource actual_source;
- std::unique_ptr<ProxyConfigDictionary> proxy_dict =
- chromeos::proxy_config::GetProxyConfigForNetwork(
- g_browser_process->local_state(), pref_service(), *network,
- &actual_source);
- ASSERT_TRUE(proxy_dict);
- std::string actual_proxy_server;
- EXPECT_TRUE(proxy_dict->GetProxyServer(&actual_proxy_server));
- EXPECT_EQ(expected_server, actual_proxy_server);
- EXPECT_EQ(expected_source, actual_source);
- }
-};
-
-// Verifies that proxy settings are correctly pushed to JavaScript during
-// initialization of the proxy settings page.
-IN_PROC_BROWSER_TEST_F(ProxyPreferencesBrowserTest, ChromeOSInitializeProxy) {
- // Boolean pref.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxySingle);
- non_default_values_.push_back(base::MakeUnique<base::Value>(true));
-
- // Integer prefs.
- pref_names_.push_back(
- chromeos::proxy_cros_settings_parser::kProxySingleHttpPort);
- non_default_values_.push_back(base::MakeUnique<base::Value>(8080));
-
- // String pref.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxySingleHttp);
- non_default_values_.push_back(base::MakeUnique<base::Value>("127.0.0.1"));
-
- // List pref.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxyIgnoreList);
- auto list = base::MakeUnique<base::ListValue>();
- list->AppendString("*.google.com");
- list->AppendString("1.2.3.4:22");
- non_default_values_.push_back(std::move(list));
-
- // Verify that no policy is presented to the UI. This must be verified on the
- // kProxyType and the kUseSharedProxies prefs.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxyType);
- non_default_values_.push_back(base::MakeUnique<base::Value>(2));
-
- pref_names_.push_back(proxy_config::prefs::kUseSharedProxies);
- non_default_values_.push_back(base::MakeUnique<base::Value>(false));
-
- std::string observed_json;
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "",
- false, false);
-}
-
-IN_PROC_BROWSER_TEST_F(ProxyPreferencesBrowserTest, ONCPolicy) {
- SetONCPolicy(policy::key::kOpenNetworkConfiguration,
- policy::POLICY_SCOPE_USER);
-
- // Verify that per-network policy is presented to the UI. This must be
- // verified on the kProxyType.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxyType);
- non_default_values_.push_back(base::MakeUnique<base::Value>(3));
-
- std::string observed_json;
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "policy",
- true, false);
-
- // Verify that 'use-shared-proxies' is not affected by per-network policy.
- pref_names_.clear();
- non_default_values_.clear();
- pref_names_.push_back(proxy_config::prefs::kUseSharedProxies);
- non_default_values_.push_back(base::MakeUnique<base::Value>(false));
-
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "",
- false, false);
-}
-
-IN_PROC_BROWSER_TEST_F(ProxyPreferencesBrowserTest, DeviceONCPolicy) {
- SetONCPolicy(policy::key::kDeviceOpenNetworkConfiguration,
- policy::POLICY_SCOPE_MACHINE);
-
- // Verify that the policy is presented to the UI. This verification must be
- // done on the kProxyType pref.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxyType);
- non_default_values_.push_back(base::MakeUnique<base::Value>(3));
-
- std::string observed_json;
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "policy",
- true, false);
-
- // Verify that 'use-shared-proxies' is not affected by per-network policy.
- pref_names_.clear();
- non_default_values_.clear();
- pref_names_.push_back(proxy_config::prefs::kUseSharedProxies);
- non_default_values_.push_back(base::MakeUnique<base::Value>(false));
-
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "",
- false, false);
-}
-
-IN_PROC_BROWSER_TEST_F(ProxyPreferencesBrowserTest, UserProxyPolicy) {
- policy_names_.push_back(policy::key::kProxyMode);
- default_values_.push_back(
- base::MakeUnique<base::Value>(ProxyPrefs::kAutoDetectProxyModeName));
- SetUserPolicies(policy_names_, default_values_,
- policy::POLICY_LEVEL_MANDATORY);
- content::RunAllPendingInMessageLoop();
-
- // Verify that the policy is presented to the UI. This verification must be
- // done on the kProxyType pref.
- pref_names_.push_back(chromeos::proxy_cros_settings_parser::kProxyType);
- non_default_values_.push_back(base::MakeUnique<base::Value>(3));
-
- // Verify that 'use-shared-proxies' is controlled by the policy.
- pref_names_.push_back(proxy_config::prefs::kUseSharedProxies);
- non_default_values_.push_back(base::MakeUnique<base::Value>(false));
-
- std::string observed_json;
- SetupJavaScriptTestEnvironment(pref_names_, &observed_json);
- VerifyObservedPrefs(observed_json, pref_names_, non_default_values_, "policy",
- true, false);
-}
-
-// Verifies that modifications to the proxy settings are correctly pushed from
-// JavaScript to the ProxyConfig property stored in the network configuration.
-IN_PROC_BROWSER_TEST_F(ProxyPreferencesBrowserTest, ChromeOSSetProxy) {
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
-
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxySingleHttpPort,
- base::Value(123));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxySingleHttp,
- base::Value("www.adomain.xy"));
-
- VerifyCurrentProxyServer("www.adomain.xy:123",
- onc::ONC_SOURCE_NONE);
-}
-
-// Verify that default proxy ports are used and that ports can be updated
-// without affecting the previously set hosts.
-IN_PROC_BROWSER_TEST_F(ProxyPreferencesBrowserTest, ChromeOSProxyDefaultPorts) {
- ASSERT_NO_FATAL_FAILURE(SetupJavaScriptTestEnvironment(pref_names_, NULL));
-
- // Set to manual, per scheme proxy.
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxySingle,
- base::Value(false));
-
- // Set hosts but no ports.
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxyHttpUrl,
- base::Value("a.com"));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxyHttpsUrl,
- base::Value("4.3.2.1"));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxyFtpUrl,
- base::Value("c.com"));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxySocks,
- base::Value("d.com"));
-
- // Verify default ports.
- VerifyCurrentProxyServer(
- "http=a.com:80;https=4.3.2.1:80;ftp=c.com:80;socks=socks4://d.com:1080",
- onc::ONC_SOURCE_NONE);
-
- // Set and verify the ports.
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxyHttpPort,
- base::Value(1));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxyHttpsPort,
- base::Value(2));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxyFtpPort,
- base::Value(3));
- SetProxyPref(chromeos::proxy_cros_settings_parser::kProxySocksPort,
- base::Value(4));
-
- VerifyCurrentProxyServer(
- "http=a.com:1;https=4.3.2.1:2;ftp=c.com:3;socks=socks4://d.com:4",
- onc::ONC_SOURCE_NONE);
-}
-
-#endif

Powered by Google App Engine
This is Rietveld 408576698