Index: chrome/browser/policy/policy_path_parser_mac.mm |
diff --git a/chrome/browser/policy/policy_path_parser_mac.mm b/chrome/browser/policy/policy_path_parser_mac.mm |
index c9823d4d959fb5b608673a80e4f94b6e267e524d..f7ad216158d77b465cfdfee7390a50daa06b4116 100644 |
--- a/chrome/browser/policy/policy_path_parser_mac.mm |
+++ b/chrome/browser/policy/policy_path_parser_mac.mm |
@@ -4,8 +4,12 @@ |
#include "chrome/browser/policy/policy_path_parser.h" |
+#include "base/basictypes.h" |
+#include "base/file_path.h" |
#include "base/logging.h" |
#include "base/sys_string_conversions.h" |
+#import "base/mac/scoped_nsautorelease_pool.h" |
+#include "policy/policy_constants.h" |
#import <Cocoa/Cocoa.h> |
#import <SystemConfiguration/SCDynamicStore.h> |
@@ -90,6 +94,23 @@ base::FilePath::StringType ExpandPathVariables( |
return result; |
} |
+void CheckUserDataDirPolicy(base::FilePath* user_data_dir) { |
+ base::mac::ScopedNSAutoreleasePool pool; |
+ |
+ // Since the configuration management infrastructure is not initialized when |
+ // this code runs, read the policy preference directly. |
+ NSString* key = base::SysUTF8ToNSString(policy::key::kUserDataDir); |
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
+ NSString* value = [defaults stringForKey:key]; |
+ if (value && [defaults objectIsForcedForKey:key]) { |
+ std::string string_value = base::SysNSStringToUTF8(value); |
+ // Now replace any vars the user might have used. |
+ string_value = |
+ policy::path_parser::ExpandPathVariables(string_value); |
+ *user_data_dir = base::FilePath(string_value); |
+ } |
+} |
+ |
} // namespace path_parser |
} // namespace policy |