15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Unit tests for master preferences related methods. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_paths.h" 130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/common/pref_names.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/master_preferences.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/master_preferences_constants.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/util_constants.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MasterPreferencesTest : public testing::Test { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() { 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_TRUE(base::CreateTemporaryFile(&prefs_file_)); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown() { 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(base::DeleteFile(prefs_file_, false)); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& prefs_file() const { return prefs_file_; } 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath prefs_file_; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Used to specify an expected value for a set boolean preference variable. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ExpectedBooleans { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* name; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool expected_value; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, NoFileToParse) { 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(base::DeleteFile(prefs_file(), false)); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(prefs_file()); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs.read_from_file()); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, ParseDistroParams) { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char text[] = 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{ \n" 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": { \n" 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"show_welcome_page\": true,\n" 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_search_engine\": true,\n" 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_history\": true,\n" 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_bookmarks\": true,\n" 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_bookmarks_from_file\": \"c:\\\\foo\",\n" 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_home_page\": true,\n" 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " \"do_not_create_any_shortcuts\": true,\n" 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_create_desktop_shortcut\": true,\n" 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_create_quick_launch_shortcut\": true,\n" 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) " \"do_not_create_taskbar_shortcut\": true,\n" 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_launch_chrome\": true,\n" 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"make_chrome_default\": true,\n" 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"make_chrome_default_for_user\": true,\n" 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"system_level\": true,\n" 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"verbose_logging\": true,\n" 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"require_eula\": true,\n" 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"alternate_shortcut_text\": true,\n" 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"chrome_shortcut_icon_index\": 1,\n" 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"ping_delay\": 40\n" 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " },\n" 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"blah\": {\n" 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_history\": false\n" 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }\n" 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "} \n"; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(base::WriteFile(prefs_file(), text, strlen(text))); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(prefs_file()); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.read_from_file()); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* expected_true[] = { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportSearchPref, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportHistoryPref, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportBookmarksPref, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportHomePagePref, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) installer::master_preferences::kDoNotCreateAnyShortcuts, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateDesktopShortcut, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateQuickLaunchShortcut, 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) installer::master_preferences::kDoNotCreateTaskbarShortcut, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotLaunchChrome, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kMakeChromeDefault, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kMakeChromeDefaultForUser, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kSystemLevel, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kVerboseLogging, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kRequireEula, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kAltShortcutText, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < arraysize(expected_true); ++i) { 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool value = false; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetBool(expected_true[i], &value)); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(value) << expected_true[i]; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string str_value; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetString( 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportBookmarksFromFilePref, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &str_value)); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_STREQ("c:\\foo", str_value.c_str()); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int icon_index = 0; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetInt( 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kChromeShortcutIconIndex, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &icon_index)); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(icon_index, 1); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ping_delay = 90; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetInt(installer::master_preferences::kDistroPingDelay, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &ping_delay)); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ping_delay, 40); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, ParseMissingDistroParams) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char text[] = 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{ \n" 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": { \n" 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_search_engine\": true,\n" 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_bookmarks\": false,\n" 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"import_bookmarks_from_file\": \"\",\n" 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_create_desktop_shortcut\": true,\n" 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_create_quick_launch_shortcut\": true,\n" 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_launch_chrome\": true,\n" 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"chrome_shortcut_icon_index\": \"bac\"\n" 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }\n" 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "} \n"; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(base::WriteFile(prefs_file(), text, strlen(text))); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(prefs_file()); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.read_from_file()); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectedBooleans expected_bool[] = { 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDistroImportSearchPref, true }, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDistroImportBookmarksPref, false }, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDoNotCreateDesktopShortcut, true }, 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDoNotCreateQuickLaunchShortcut, true }, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDoNotLaunchChrome, true }, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool value = false; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < arraysize(expected_bool); ++i) { 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetBool(expected_bool[i].name, &value)); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(value, expected_bool[i].expected_value) << expected_bool[i].name; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* missing_bools[] = { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportHomePagePref, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotRegisterForUpdateLaunch, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kMakeChromeDefault, 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kMakeChromeDefaultForUser, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < arraysize(missing_bools); ++i) { 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs.GetBool(missing_bools[i], &value)) << missing_bools[i]; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string str_value; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs.GetString( 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroImportBookmarksFromFilePref, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &str_value)); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int icon_index = 0; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs.GetInt( 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kChromeShortcutIconIndex, 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &icon_index)); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(icon_index, 0); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ping_delay = 90; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs.GetInt( 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDistroPingDelay, &ping_delay)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ping_delay, 90); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, FirstRunTabs) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char text[] = 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{ \n" 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": { \n" 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"something here\": true\n" 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " },\n" 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"first_run_tabs\": [\n" 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"http://google.com/f1\",\n" 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"https://google.com/f2\",\n" 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"new_tab_page\"\n" 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ]\n" 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "} \n"; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(base::WriteFile(prefs_file(), text, strlen(text))); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(prefs_file()); 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef std::vector<std::string> TabsVector; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabsVector tabs = prefs.GetFirstRunTabs(); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(3, tabs.size()); 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("http://google.com/f1", tabs[0]); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("https://google.com/f2", tabs[1]); 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("new_tab_page", tabs[2]); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// In this test instead of using our synthetic json file, we use an 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// actual test case from the extensions unittest. The hope here is that if 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// they change something in the manifest this test will break, but in 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// general it is expected the extension format to be backwards compatible. 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(MasterPrefsExtension, ValidateExtensionJSON) { 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath prefs_path; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &prefs_path)); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_path = prefs_path.AppendASCII("extensions") 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("good").AppendASCII("Preferences"); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(prefs_path); 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* extensions = NULL; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetExtensionsBlock(&extensions)); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int location = 0; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extensions->GetInteger( 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "behllobkkfkfnphdnhnkndlbkcpglgmj.location", &location)); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int state = 0; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extensions->GetInteger( 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "behllobkkfkfnphdnhnkndlbkcpglgmj.state", &state)); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string path; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extensions->GetString( 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "behllobkkfkfnphdnhnkndlbkcpglgmj.path", &path)); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string key; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extensions->GetString( 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "behllobkkfkfnphdnhnkndlbkcpglgmj.manifest.key", &key)); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string name; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extensions->GetString( 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "behllobkkfkfnphdnhnkndlbkcpglgmj.manifest.name", &name)); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string version; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(extensions->GetString( 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "behllobkkfkfnphdnhnkndlbkcpglgmj.manifest.version", &version)); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we are parsing master preferences correctly. 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, GetInstallPreferencesTest) { 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create a temporary prefs file. 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath prefs_file; 244a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_TRUE(base::CreateTemporaryFile(&prefs_file)); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char text[] = 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{ \n" 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": { \n" 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_create_desktop_shortcut\": false,\n" 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_create_quick_launch_shortcut\": false,\n" 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"do_not_launch_chrome\": true,\n" 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"system_level\": true,\n" 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"verbose_logging\": false\n" 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }\n" 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "} \n"; 255a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_TRUE(base::WriteFile(prefs_file, text, strlen(text))); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure command line values override the values in master preferences. 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::wstring cmd_str( 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) L"setup.exe --installerdata=\"" + prefs_file.value() + L"\""); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd_str.append(L" --do-not-launch-chrome"); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine cmd_line = CommandLine::FromString(cmd_str); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(cmd_line); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check prefs that do not have any equivalent command line option. 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectedBooleans expected_bool[] = { 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDoNotLaunchChrome, true }, 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kSystemLevel, true }, 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kVerboseLogging, false }, 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Now check that prefs got merged correctly. 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool value = false; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < arraysize(expected_bool); ++i) { 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs.GetBool(expected_bool[i].name, &value)); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(value, expected_bool[i].expected_value) << expected_bool[i].name; 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delete temporary prefs file. 2797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(base::DeleteFile(prefs_file, false)); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that if master prefs doesn't exist, we can still parse the common 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // prefs. 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd_str = L"setup.exe --do-not-launch-chrome"; 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd_line.ParseFromString(cmd_str); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs2(cmd_line); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectedBooleans expected_bool2[] = { 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { installer::master_preferences::kDoNotLaunchChrome, true }, 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < arraysize(expected_bool2); ++i) { 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(prefs2.GetBool(expected_bool2[i].name, &value)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(value, expected_bool2[i].expected_value) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << expected_bool2[i].name; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs2.GetBool( 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kSystemLevel, &value)); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(prefs2.GetBool( 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kVerboseLogging, &value)); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, TestDefaultInstallConfig) { 3035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::wstringstream chrome_cmd; 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_cmd << "setup.exe"; 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine chrome_install(CommandLine::FromString(chrome_cmd.str())); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences pref_chrome(chrome_install); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(pref_chrome.is_multi_install()); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(pref_chrome.install_chrome()); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, TestMultiInstallConfig) { 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) using installer::switches::kMultiInstall; 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) using installer::switches::kChrome; 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::wstringstream chrome_cmd, cf_cmd, chrome_cf_cmd; 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_cmd << "setup.exe --" << kMultiInstall << " --" << kChrome; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandLine chrome_install(CommandLine::FromString(chrome_cmd.str())); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences pref_chrome(chrome_install); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(pref_chrome.is_multi_install()); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(pref_chrome.install_chrome()); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, EnforceLegacyCreateAllShortcutsFalse) { 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kCreateAllShortcutsFalsePrefs[] = 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{" 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": {" 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"create_all_shortcuts\": false" 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "}"; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(kCreateAllShortcutsFalsePrefs); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool do_not_create_desktop_shortcut = false; 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool do_not_create_quick_launch_shortcut = false; 3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool do_not_create_taskbar_shortcut = false; 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs.GetBool( 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateDesktopShortcut, 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &do_not_create_desktop_shortcut); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs.GetBool( 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateQuickLaunchShortcut, 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &do_not_create_quick_launch_shortcut); 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs.GetBool( 3492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) installer::master_preferences::kDoNotCreateTaskbarShortcut, 3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &do_not_create_taskbar_shortcut); 3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // create_all_shortcuts is a legacy preference that should only enforce 3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // do_not_create_desktop_shortcut and do_not_create_quick_launch_shortcut 3532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // when set to false. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(do_not_create_desktop_shortcut); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(do_not_create_quick_launch_shortcut); 3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(do_not_create_taskbar_shortcut); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, DontEnforceLegacyCreateAllShortcutsTrue) { 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kCreateAllShortcutsFalsePrefs[] = 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{" 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": {" 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"create_all_shortcuts\": true" 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "}"; 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(kCreateAllShortcutsFalsePrefs); 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool do_not_create_desktop_shortcut = false; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool do_not_create_quick_launch_shortcut = false; 3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool do_not_create_taskbar_shortcut = false; 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs.GetBool( 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateDesktopShortcut, 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &do_not_create_desktop_shortcut); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs.GetBool( 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateQuickLaunchShortcut, 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &do_not_create_quick_launch_shortcut); 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs.GetBool( 3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) installer::master_preferences::kDoNotCreateTaskbarShortcut, 3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &do_not_create_taskbar_shortcut); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(do_not_create_desktop_shortcut); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(do_not_create_quick_launch_shortcut); 3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(do_not_create_taskbar_shortcut); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MasterPreferencesTest, DontEnforceLegacyCreateAllShortcutsNotSpecified) { 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kCreateAllShortcutsFalsePrefs[] = 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{" 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"distribution\": {" 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " \"some_other_pref\": true" 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " }" 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "}"; 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::MasterPreferences prefs(kCreateAllShortcutsFalsePrefs); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool do_not_create_desktop_shortcut = false; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool do_not_create_quick_launch_shortcut = false; 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool do_not_create_taskbar_shortcut = false; 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs.GetBool( 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateDesktopShortcut, 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &do_not_create_desktop_shortcut); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs.GetBool( 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installer::master_preferences::kDoNotCreateQuickLaunchShortcut, 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &do_not_create_quick_launch_shortcut); 4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs.GetBool( 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) installer::master_preferences::kDoNotCreateTaskbarShortcut, 4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &do_not_create_taskbar_shortcut); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(do_not_create_desktop_shortcut); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(do_not_create_quick_launch_shortcut); 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(do_not_create_taskbar_shortcut); 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(MasterPreferencesTest, MigrateOldStartupUrlsPref) { 4140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) static const char kOldMasterPrefs[] = 4150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) "{ \n" 4160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"distribution\": { \n" 4170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"show_welcome_page\": true,\n" 4180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"import_search_engine\": true,\n" 4190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"import_history\": true,\n" 4200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"import_bookmarks\": true\n" 4210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " },\n" 4220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"session\": {\n" 4230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"urls_to_restore_on_startup\": [\"http://www.google.com\"]\n" 4240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " }\n" 4250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) "} \n"; 4260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const installer::MasterPreferences prefs(kOldMasterPrefs); 4280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::DictionaryValue& master_dictionary = 4290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) prefs.master_dictionary(); 4300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::ListValue* old_startup_urls_list = NULL; 4320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(master_dictionary.GetList(prefs::kURLsToRestoreOnStartupOld, 4330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) &old_startup_urls_list)); 4340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(old_startup_urls_list != NULL); 4350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // The MasterPreferences dictionary should also conjure up the new setting 4370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // as per EnforceLegacyPreferences. 4380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::ListValue* new_startup_urls_list = NULL; 4390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(master_dictionary.GetList(prefs::kURLsToRestoreOnStartup, 4400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) &new_startup_urls_list)); 4410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(new_startup_urls_list != NULL); 4420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 4430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(MasterPreferencesTest, DontMigrateOldStartupUrlsPrefWhenNewExists) { 4450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) static const char kOldAndNewMasterPrefs[] = 4460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) "{ \n" 4470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"distribution\": { \n" 4480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"show_welcome_page\": true,\n" 4490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"import_search_engine\": true,\n" 4500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"import_history\": true,\n" 4510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"import_bookmarks\": true\n" 4520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " },\n" 4530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"session\": {\n" 4540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"urls_to_restore_on_startup\": [\"http://www.google.com\"],\n" 4550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " \"startup_urls\": [\"http://www.example.com\"]\n" 4560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) " }\n" 4570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) "} \n"; 4580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const installer::MasterPreferences prefs(kOldAndNewMasterPrefs); 4600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::DictionaryValue& master_dictionary = 4610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) prefs.master_dictionary(); 4620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::ListValue* old_startup_urls_list = NULL; 4640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(master_dictionary.GetList(prefs::kURLsToRestoreOnStartupOld, 4650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) &old_startup_urls_list)); 4660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(old_startup_urls_list != NULL); 4670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) std::string url_value; 4680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(old_startup_urls_list->GetString(0, &url_value)); 4690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ("http://www.google.com", url_value); 4700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 4710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // The MasterPreferences dictionary should also conjure up the new setting 4720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // as per EnforceLegacyPreferences. 4730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::ListValue* new_startup_urls_list = NULL; 4740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(master_dictionary.GetList(prefs::kURLsToRestoreOnStartup, 4750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) &new_startup_urls_list)); 4760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(new_startup_urls_list != NULL); 4770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) std::string new_url_value; 4780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(new_startup_urls_list->GetString(0, &new_url_value)); 4790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ("http://www.example.com", new_url_value); 4800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 481