1 // Copyright (c) 2011 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.
5 #include "chrome/browser/mac/master_prefs.h"
7 #include "base/file_util.h"
8 #include "base/mac/foundation_util.h"
9 #include "chrome/common/chrome_paths_internal.h"
10 #include "chrome/common/chrome_version_info.h"
14 #if defined(GOOGLE_CHROME_BUILD)
15 // This should be NSApplicationSupportDirectory, but it has already been
16 // released using NSLibraryDirectory.
17 const NSSearchPathDirectory kSearchPath = NSLibraryDirectory;
18 const char kMasterPreferencesDirectory[] = "Google";
19 const char kMasterPreferencesFileName[] = "Google Chrome Master Preferences";
21 const NSSearchPathDirectory kSearchPath = NSApplicationSupportDirectory;
22 const char kMasterPreferencesDirectory[] = "Chromium";
23 const char kMasterPreferencesFileName[] = "Chromium Master Preferences";
24 #endif // GOOGLE_CHROME_BUILD
29 namespace master_prefs {
31 base::FilePath MasterPrefsPath() {
32 #if defined(GOOGLE_CHROME_BUILD)
33 // Don't load master preferences for the canary.
34 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
35 if (channel == chrome::VersionInfo::CHANNEL_CANARY)
36 return base::FilePath();
37 #endif // GOOGLE_CHROME_BUILD
39 // On official builds, try
40 //~/Library/Application Support/Google/Chrome/Google Chrome Master Preferences
41 // On chromium builds, try
42 //~/Library/Application Support/Chromium/Chromium Master Preferences
43 // This intentionally doesn't use eventual --user-data-dir overrides.
44 base::FilePath user_application_support_path;
45 if (chrome::GetDefaultUserDataDirectory(&user_application_support_path)) {
46 user_application_support_path =
47 user_application_support_path.Append(kMasterPreferencesFileName);
48 if (base::PathExists(user_application_support_path))
49 return user_application_support_path;
52 // On official builds, try /Library/Google/Google Chrome Master Preferences
53 // On chromium builds, try
54 // /Library/Application Support/Chromium/Chromium Master Preferences
55 base::FilePath search_path;
56 if (!base::mac::GetLocalDirectory(kSearchPath, &search_path))
57 return base::FilePath();
59 return search_path.Append(kMasterPreferencesDirectory)
60 .Append(kMasterPreferencesFileName);
63 } // namespace master_prefs