• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/user_prefs/pref_registry_syncable.h"
12 
13 // static
RegisterProfilePrefs(user_prefs::PrefRegistrySyncable * registry)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
SetVersion(PrefService * prefs,const std::string & version)23 void ChromeVersionService::SetVersion(PrefService* prefs,
24                                       const std::string& version) {
25   prefs->SetString(prefs::kProfileCreatedByVersion, version);
26 }
27 
28 // static
GetVersion(PrefService * prefs)29 std::string ChromeVersionService::GetVersion(PrefService* prefs) {
30   return prefs->GetString(prefs::kProfileCreatedByVersion);
31 }
32 
33 // static
OnProfileLoaded(PrefService * prefs,bool is_new_profile)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