Index: chrome_frame/policy_settings.cc |
diff --git a/chrome_frame/policy_settings.cc b/chrome_frame/policy_settings.cc |
index d3a6f33d606467c007ef2609e8a13d2aed8496e8..bc873e8ea9abb0330b0825e1dfa8b6648b020807 100644 |
--- a/chrome_frame/policy_settings.cc |
+++ b/chrome_frame/policy_settings.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -55,6 +55,10 @@ PolicySettings::RendererForUrl PolicySettings::GetRendererForContentType( |
return renderer; |
} |
+const CommandLine& PolicySettings::AdditionalLaunchParameters() const { |
+ return additional_launch_parameters_; |
+} |
+ |
// static |
void PolicySettings::ReadUrlSettings( |
RendererForUrl* default_renderer, |
@@ -117,20 +121,18 @@ void PolicySettings::ReadContentTypeSetting( |
} |
// static |
-void PolicySettings::ReadApplicationLocaleSetting( |
- std::wstring* application_locale) { |
- DCHECK(application_locale); |
- |
- application_locale->clear(); |
+void PolicySettings::ReadStringSetting(const char* value_name, |
+ std::wstring* value) { |
+ DCHECK(value); |
+ value->clear(); |
base::win::RegKey config_key; |
- std::wstring application_locale_value( |
- ASCIIToWide(policy::key::kApplicationLocaleValue)); |
+ std::wstring value_name_str(ASCIIToWide(value_name)); |
for (int i = 0; i < arraysize(kRootKeys); ++i) { |
if ((config_key.Open(kRootKeys[i], policy::kRegistryMandatorySubKey, |
KEY_READ) == ERROR_SUCCESS) && |
- (config_key.ReadValue(application_locale_value.c_str(), |
- application_locale) == ERROR_SUCCESS)) { |
- break; |
+ (config_key.ReadValue(value_name_str.c_str(), |
+ value) == ERROR_SUCCESS)) { |
+ break; |
} |
} |
} |
@@ -140,11 +142,19 @@ void PolicySettings::RefreshFromRegistry() { |
std::vector<std::wstring> renderer_exclusion_list; |
std::vector<std::wstring> content_type_list; |
std::wstring application_locale; |
+ CommandLine additional_launch_parameters(CommandLine::NO_PROGRAM); |
+ std::wstring additional_parameters_str; |
// Read the latest settings from the registry |
ReadUrlSettings(&default_renderer, &renderer_exclusion_list); |
ReadContentTypeSetting(&content_type_list); |
- ReadApplicationLocaleSetting(&application_locale); |
+ ReadStringSetting(policy::key::kApplicationLocaleValue, &application_locale); |
+ ReadStringSetting(policy::key::kAdditionalLaunchParameters, |
+ &additional_parameters_str); |
+ if (!additional_parameters_str.empty()) { |
+ additional_parameters_str.insert(0, L"fake.exe "); |
+ additional_launch_parameters.ParseFromString(additional_parameters_str); |
+ } |
// Nofail swap in the new values. (Note: this is all that need be protected |
// under a mutex if/when this becomes thread safe.) |
@@ -154,6 +164,7 @@ void PolicySettings::RefreshFromRegistry() { |
swap(renderer_exclusion_list_, renderer_exclusion_list); |
swap(content_type_list_, content_type_list); |
swap(application_locale_, application_locale); |
+ swap(additional_launch_parameters_, additional_launch_parameters); |
} |
// static |