blob: 0f0470a777a8427faf4db5121597cff21885534d [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) {
[email protected]cb1078de2013-12-23 20:04:2229 base::ListValue* url_pref_list = new base::ListValue;
[email protected]04be9802014-07-18 21:25:4530 url_pref_list->Set(0, new base::StringValue("google.com"));
31 url_pref_list->Set(1, new base::StringValue("chromium.org"));
[email protected]f9dfa842010-10-07 15:47:0432 pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup, url_pref_list);
33
34 SessionStartupPref result =
35 SessionStartupPref::GetStartupPref(pref_service_.get());
36 EXPECT_EQ(2u, result.urls.size());
37 EXPECT_EQ("http://google.com/", result.urls[0].spec());
38 EXPECT_EQ("http://chromium.org/", result.urls[1].spec());
39}
40
41TEST_F(SessionStartupPrefTest, URLListManagedOverridesUser) {
[email protected]cb1078de2013-12-23 20:04:2242 base::ListValue* url_pref_list1 = new base::ListValue;
[email protected]04be9802014-07-18 21:25:4543 url_pref_list1->Set(0, new base::StringValue("chromium.org"));
[email protected]f9dfa842010-10-07 15:47:0444 pref_service_->SetUserPref(prefs::kURLsToRestoreOnStartup, url_pref_list1);
45
[email protected]cb1078de2013-12-23 20:04:2246 base::ListValue* url_pref_list2 = new base::ListValue;
[email protected]04be9802014-07-18 21:25:4547 url_pref_list2->Set(0, new base::StringValue("chromium.org"));
48 url_pref_list2->Set(1, new base::StringValue("chromium.org"));
49 url_pref_list2->Set(2, new base::StringValue("chromium.org"));
[email protected]f9dfa842010-10-07 15:47:0450 pref_service_->SetManagedPref(prefs::kURLsToRestoreOnStartup,
51 url_pref_list2);
52
53 SessionStartupPref result =
54 SessionStartupPref::GetStartupPref(pref_service_.get());
55 EXPECT_EQ(3u, result.urls.size());
56
57 SessionStartupPref override_test =
[email protected]1c51cf72011-02-25 13:39:4158 SessionStartupPref(SessionStartupPref::URLS);
[email protected]f9dfa842010-10-07 15:47:0459 override_test.urls.push_back(GURL("dev.chromium.org"));
60 SessionStartupPref::SetStartupPref(pref_service_.get(), override_test);
61
62 result = SessionStartupPref::GetStartupPref(pref_service_.get());
63 EXPECT_EQ(3u, result.urls.size());
64}