diff options
Diffstat (limited to 'chromium/chrome/browser/prefs/session_startup_pref_unittest.cc')
-rw-r--r-- | chromium/chrome/browser/prefs/session_startup_pref_unittest.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/chromium/chrome/browser/prefs/session_startup_pref_unittest.cc b/chromium/chrome/browser/prefs/session_startup_pref_unittest.cc new file mode 100644 index 00000000000..69a77f997a5 --- /dev/null +++ b/chromium/chrome/browser/prefs/session_startup_pref_unittest.cc @@ -0,0 +1,66 @@ +// 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/prefs/session_startup_pref.h" +#include "chrome/common/pref_names.h" +#include "components/pref_registry/pref_registry_syncable.h" +#include "components/sync_preferences/testing_pref_service_syncable.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +// Unit tests for SessionStartupPref. +class SessionStartupPrefTest : public testing::Test { + public: + void SetUp() override { + pref_service_.reset(new sync_preferences::TestingPrefServiceSyncable); + SessionStartupPref::RegisterProfilePrefs(registry()); + registry()->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, true); + } + + user_prefs::PrefRegistrySyncable* registry() { + return pref_service_->registry(); + } + + std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> pref_service_; +}; + +TEST_F(SessionStartupPrefTest, URLListIsFixedUp) { + auto url_pref_list = std::make_unique<base::ListValue>(); + url_pref_list->Set(0, std::make_unique<base::Value>("google.com")); + url_pref_list->Set(1, std::make_unique<base::Value>("chromium.org")); + pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup, + std::move(url_pref_list)); + + SessionStartupPref result = + SessionStartupPref::GetStartupPref(pref_service_.get()); + EXPECT_EQ(2u, result.urls.size()); + EXPECT_EQ("http://google.com/", result.urls[0].spec()); + EXPECT_EQ("http://chromium.org/", result.urls[1].spec()); +} + +TEST_F(SessionStartupPrefTest, URLListManagedOverridesUser) { + auto url_pref_list1 = std::make_unique<base::ListValue>(); + url_pref_list1->Set(0, std::make_unique<base::Value>("chromium.org")); + pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup, + std::move(url_pref_list1)); + + auto url_pref_list2 = std::make_unique<base::ListValue>(); + url_pref_list2->Set(0, std::make_unique<base::Value>("chromium.org")); + url_pref_list2->Set(1, std::make_unique<base::Value>("chromium.org")); + url_pref_list2->Set(2, std::make_unique<base::Value>("chromium.org")); + pref_service_->SetManagedPref(prefs::kURLsToRestoreOnStartup, + std::move(url_pref_list2)); + + SessionStartupPref result = + SessionStartupPref::GetStartupPref(pref_service_.get()); + EXPECT_EQ(3u, result.urls.size()); + + SessionStartupPref override_test = + SessionStartupPref(SessionStartupPref::URLS); + override_test.urls.push_back(GURL("dev.chromium.org")); + SessionStartupPref::SetStartupPref(pref_service_.get(), override_test); + + result = SessionStartupPref::GetStartupPref(pref_service_.get()); + EXPECT_EQ(3u, result.urls.size()); +} |