1 // Copyright (c) 2012 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/profiles/chrome_version_service.h" 6 7 #include "base/prefs/pref_service.h" 8 #include "base/version.h" 9 #include "chrome/common/chrome_version_info.h" 10 #include "chrome/common/pref_names.h" 11 #include "components/pref_registry/pref_registry_syncable.h" 12 13 // static 14 void ChromeVersionService::RegisterProfilePrefs( 15 user_prefs::PrefRegistrySyncable* registry) { 16 registry->RegisterStringPref( 17 prefs::kProfileCreatedByVersion, 18 "1.0.0.0", 19 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 20 } 21 22 // static 23 void ChromeVersionService::SetVersion(PrefService* prefs, 24 const std::string& version) { 25 prefs->SetString(prefs::kProfileCreatedByVersion, version); 26 } 27 28 // static 29 std::string ChromeVersionService::GetVersion(PrefService* prefs) { 30 return prefs->GetString(prefs::kProfileCreatedByVersion); 31 } 32 33 // static 34 void ChromeVersionService::OnProfileLoaded(PrefService* prefs, 35 bool is_new_profile) { 36 // Obtain the Chrome version info. 37 chrome::VersionInfo version_info; 38 39 // If this is a new profile set version to current version, otherwise 40 // (pre-existing profile), leave pref at default value (1.0.0.0) to 41 // avoid any first-run behavior. 42 std::string version = version_info.Version(); 43 if (prefs->FindPreference(prefs::kProfileCreatedByVersion)-> 44 IsDefaultValue() && is_new_profile) { 45 SetVersion(prefs, version); 46 } 47 } 48