blob: 69a77f997a507ce1924cae25b8159af323c8c866 [file] [log] [blame]
[email protected]330d57222012-03-06 20:56:471// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]f9dfa842010-10-07 15:47:042// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/prefs/session_startup_pref.h"
6#include "chrome/common/pref_names.h"
[email protected]f0c8c4992014-05-15 17:37:267#include "components/pref_registry/pref_registry_syncable.h"
maxbogueea16ff412016-10-28 16:35:298#include "components/sync_preferences/testing_pref_service_syncable.h"
[email protected]f9dfa842010-10-07 15:47:049#include "testing/gmock/include/gmock/gmock.h"
10#include "testing/gtest/include/gtest/gtest.h"
11
[email protected]f9dfa842010-10-07 15:47:0412// Unit tests for SessionStartupPref.
13class SessionStartupPrefTest : public testing::Test {
14 public:
dchenge1bc7982014-10-30 00:32:4015 void SetUp() override {
maxbogueea16ff412016-10-28 16:35:2916 pref_service_.reset(new sync_preferences::TestingPrefServiceSyncable);
[email protected]37ca3fe02013-07-05 15:32:4417 SessionStartupPref::RegisterProfilePrefs(registry());
raymesaa608722015-04-27 03:00:2518 registry()->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, true);
[email protected]f9dfa842010-10-07 15:47:0419 }
20
[email protected]443e9312013-05-06 06:17:3421 user_prefs::PrefRegistrySyncable* registry() {
[email protected]c753f142013-02-10 13:14:0422 return pref_service_->registry();
23 }
24
maxbogueea16ff412016-10-28 16:35:2925 std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> pref_service_;
[email protected]f9dfa842010-10-07 15:47:0426};
27
28TEST_F(SessionStartupPrefTest, URLListIsFixedUp) {
Jeremy Romanec48d7a2018-03-01 17:35:0929 auto url_pref_list = std::make_unique<base::ListValue>();
30 url_pref_list->Set(0, std::make_unique<base::Value>("google.com"));
31 url_pref_list->Set(1, std::make_unique<base::Value>("chromium.org"));
vabr8684c9a2017-03-29 13:14:5732 pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup,
33 std::move(url_pref_list));
[email protected]f9dfa842010-10-07 15:47:0434
35 SessionStartupPref result =
36 SessionStartupPref::GetStartupPref(pref_service_.get());
37 EXPECT_EQ(2u, result.urls.size());
38 EXPECT_EQ("http://google.com/", result.urls[0].spec());
39 EXPECT_EQ("http://chromium.org/", result.urls[1].spec());
40}
41
42TEST_F(SessionStartupPrefTest, URLListManagedOverridesUser) {
Jeremy Romanec48d7a2018-03-01 17:35:0943 auto url_pref_list1 = std::make_unique<base::ListValue>();
44 url_pref_list1->Set(0, std::make_unique<base::Value>("chromium.org"));
vabr8684c9a2017-03-29 13:14:5745 pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup,
46 std::move(url_pref_list1));
[email protected]f9dfa842010-10-07 15:47:0447
Jeremy Romanec48d7a2018-03-01 17:35:0948 auto url_pref_list2 = std::make_unique<base::ListValue>();
49 url_pref_list2->Set(0, std::make_unique<base::Value>("chromium.org"));
50 url_pref_list2->Set(1, std::make_unique<base::Value>("chromium.org"));
51 url_pref_list2->Set(2, std::make_unique<base::Value>("chromium.org"));
[email protected]f9dfa842010-10-07 15:47:0452 pref_service_->SetManagedPref(prefs::kURLsToRestoreOnStartup,
vabr8684c9a2017-03-29 13:14:5753 std::move(url_pref_list2));
[email protected]f9dfa842010-10-07 15:47:0454
55 SessionStartupPref result =
56 SessionStartupPref::GetStartupPref(pref_service_.get());
57 EXPECT_EQ(3u, result.urls.size());
58
59 SessionStartupPref override_test =
[email protected]1c51cf72011-02-25 13:39:4160 SessionStartupPref(SessionStartupPref::URLS);
[email protected]f9dfa842010-10-07 15:47:0461 override_test.urls.push_back(GURL("dev.chromium.org"));
62 SessionStartupPref::SetStartupPref(pref_service_.get(), override_test);
63
64 result = SessionStartupPref::GetStartupPref(pref_service_.get());
65 EXPECT_EQ(3u, result.urls.size());
66}