1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // 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/profile_resetter/brandcoded_default_settings.h" 6 7 #include "base/json/json_string_value_serializer.h" 8 #include "base/logging.h" 9 #include "chrome/common/pref_names.h" 10 #include "chrome/installer/util/master_preferences_constants.h" 11 #include "components/crx_file/id_util.h" 12 #include "components/search_engines/search_engines_pref_names.h" 13 BrandcodedDefaultSettings()14BrandcodedDefaultSettings::BrandcodedDefaultSettings() { 15 } 16 BrandcodedDefaultSettings(const std::string & prefs)17BrandcodedDefaultSettings::BrandcodedDefaultSettings(const std::string& prefs) { 18 if (!prefs.empty()) { 19 JSONStringValueSerializer json(prefs); 20 std::string error; 21 scoped_ptr<base::Value> root(json.Deserialize(NULL, &error)); 22 if (!root.get()) { 23 VLOG(1) << "Failed to parse brandcode prefs file: " << error; 24 return; 25 } 26 if (!root->IsType(base::Value::TYPE_DICTIONARY)) { 27 VLOG(1) << "Failed to parse brandcode prefs file: " 28 << "Root item must be a dictionary."; 29 return; 30 } 31 master_dictionary_.reset( 32 static_cast<base::DictionaryValue*>(root.release())); 33 } 34 } 35 ~BrandcodedDefaultSettings()36BrandcodedDefaultSettings::~BrandcodedDefaultSettings() { 37 } 38 39 scoped_ptr<base::ListValue> GetSearchProviderOverrides() const40BrandcodedDefaultSettings::GetSearchProviderOverrides() const { 41 return ExtractList(prefs::kSearchProviderOverrides); 42 } 43 GetHomepage(std::string * homepage) const44bool BrandcodedDefaultSettings::GetHomepage(std::string* homepage) const { 45 return master_dictionary_ && 46 master_dictionary_->GetString(prefs::kHomePage, homepage) && 47 !homepage->empty(); 48 } 49 GetHomepageIsNewTab(bool * homepage_is_ntp) const50bool BrandcodedDefaultSettings::GetHomepageIsNewTab( 51 bool* homepage_is_ntp) const { 52 return master_dictionary_ && 53 master_dictionary_->GetBoolean(prefs::kHomePageIsNewTabPage, 54 homepage_is_ntp); 55 } 56 GetShowHomeButton(bool * show_home_button) const57bool BrandcodedDefaultSettings::GetShowHomeButton( 58 bool* show_home_button) const { 59 return master_dictionary_ && 60 master_dictionary_->GetBoolean(prefs::kShowHomeButton, 61 show_home_button); 62 } 63 GetExtensions(std::vector<std::string> * extension_ids) const64bool BrandcodedDefaultSettings::GetExtensions( 65 std::vector<std::string>* extension_ids) const { 66 DCHECK(extension_ids); 67 base::DictionaryValue* extensions = NULL; 68 if (master_dictionary_ && 69 master_dictionary_->GetDictionary( 70 installer::master_preferences::kExtensionsBlock, 71 &extensions)) { 72 for (base::DictionaryValue::Iterator extension_id(*extensions); 73 !extension_id.IsAtEnd(); extension_id.Advance()) { 74 if (crx_file::id_util::IdIsValid(extension_id.key())) 75 extension_ids->push_back(extension_id.key()); 76 } 77 return true; 78 } 79 return false; 80 } 81 GetRestoreOnStartup(int * restore_on_startup) const82bool BrandcodedDefaultSettings::GetRestoreOnStartup( 83 int* restore_on_startup) const { 84 return master_dictionary_ && 85 master_dictionary_->GetInteger(prefs::kRestoreOnStartup, 86 restore_on_startup); 87 } 88 89 scoped_ptr<base::ListValue> GetUrlsToRestoreOnStartup() const90BrandcodedDefaultSettings::GetUrlsToRestoreOnStartup() const { 91 return ExtractList(prefs::kURLsToRestoreOnStartup); 92 } 93 ExtractList(const char * pref_name) const94scoped_ptr<base::ListValue> BrandcodedDefaultSettings::ExtractList( 95 const char* pref_name) const { 96 const base::ListValue* value = NULL; 97 if (master_dictionary_ && 98 master_dictionary_->GetList(pref_name, &value) && 99 !value->empty()) { 100 return scoped_ptr<base::ListValue>(value->DeepCopy()); 101 } 102 return scoped_ptr<base::ListValue>(); 103 } 104