| 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
|
|
|