| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome_frame/policy_settings.h" | 5 #include "chrome_frame/policy_settings.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 if ((config_key.Open(kRootKeys[i], policy::kRegistryChromePolicyKey, | 77 if ((config_key.Open(kRootKeys[i], policy::kRegistryChromePolicyKey, |
| 78 KEY_READ) == ERROR_SUCCESS) && | 78 KEY_READ) == ERROR_SUCCESS) && |
| 79 (config_key.ReadValueDW(settings_value.c_str(), | 79 (config_key.ReadValueDW(settings_value.c_str(), |
| 80 &value) == ERROR_SUCCESS)) { | 80 &value) == ERROR_SUCCESS)) { |
| 81 break; | 81 break; |
| 82 } | 82 } |
| 83 } | 83 } |
| 84 | 84 |
| 85 DCHECK(value == RENDERER_NOT_SPECIFIED || | 85 DCHECK(value == RENDERER_NOT_SPECIFIED || |
| 86 value == RENDER_IN_HOST || | 86 value == RENDER_IN_HOST || |
| 87 value == RENDER_IN_CHROME_FRAME) << | 87 value == RENDER_IN_CHROME_FRAME) |
| 88 "invalid default renderer setting: " << value; | 88 << "invalid default renderer setting: " << value; |
| 89 | 89 |
| 90 if (value != RENDER_IN_HOST && value != RENDER_IN_CHROME_FRAME) { | 90 if (value != RENDER_IN_HOST && value != RENDER_IN_CHROME_FRAME) { |
| 91 DVLOG(1) << "default renderer not specified via policy"; | 91 DVLOG(1) << "default renderer not specified via policy"; |
| 92 } else { | 92 } else { |
| 93 *default_renderer = static_cast<RendererForUrl>(value); | 93 *default_renderer = static_cast<RendererForUrl>(value); |
| 94 const char* exclusion_list_name = (*default_renderer == RENDER_IN_HOST) ? | 94 const char* exclusion_list_name = (*default_renderer == RENDER_IN_HOST) ? |
| 95 policy::key::kRenderInChromeFrameList : | 95 policy::key::kRenderInChromeFrameList : |
| 96 policy::key::kRenderInHostList; | 96 policy::key::kRenderInHostList; |
| 97 | 97 |
| 98 EnumerateKeyValues(config_key.Handle(), | 98 EnumerateKeyValues(config_key.Handle(), |
| 99 ASCIIToWide(exclusion_list_name).c_str(), renderer_exclusion_list); | 99 ASCIIToWide(exclusion_list_name).c_str(), renderer_exclusion_list); |
| 100 | 100 |
| 101 DVLOG(1) << "Default renderer as specified via policy: " | 101 DVLOG(1) << "Default renderer as specified via policy: " |
| 102 << *default_renderer | 102 << *default_renderer |
| 103 << " exclusion list size: " << renderer_exclusion_list->size(); | 103 << " exclusion list size: " << renderer_exclusion_list->size(); |
| 104 } | 104 } |
| 105 } | 105 } |
| 106 | 106 |
| 107 // static | 107 // static |
| 108 void PolicySettings::ReadMetadataCheckSettings( |
| 109 SkipMetadataCheck* skip_metadata_check) { |
| 110 DCHECK(skip_metadata_check); |
| 111 |
| 112 *skip_metadata_check = SKIP_METADATA_CHECK_NOT_SPECIFIED; |
| 113 |
| 114 base::win::RegKey config_key; |
| 115 DWORD value = SKIP_METADATA_CHECK_NOT_SPECIFIED; |
| 116 std::wstring settings_value( |
| 117 ASCIIToWide(policy::key::kSkipMetadataCheck)); |
| 118 for (int i = 0; i < arraysize(kRootKeys); ++i) { |
| 119 if ((config_key.Open(kRootKeys[i], policy::kRegistryChromePolicyKey, |
| 120 KEY_READ) == ERROR_SUCCESS) && |
| 121 (config_key.ReadValueDW(settings_value.c_str(), |
| 122 &value) == ERROR_SUCCESS)) { |
| 123 break; |
| 124 } |
| 125 } |
| 126 |
| 127 DCHECK(value == SKIP_METADATA_CHECK_NOT_SPECIFIED || |
| 128 value == SKIP_METADATA_CHECK_NO || |
| 129 value == SKIP_METADATA_CHECK_YES) |
| 130 << "invalid skip metadata check setting: " << value; |
| 131 |
| 132 if (value != SKIP_METADATA_CHECK_NO && value != SKIP_METADATA_CHECK_YES) { |
| 133 DVLOG(1) << "metadata check not specified via policy"; |
| 134 } else { |
| 135 *skip_metadata_check = static_cast<SkipMetadataCheck>(value); |
| 136 DVLOG(1) << "SkipMetadata check as specified via policy: " |
| 137 << *skip_metadata_check; |
| 138 } |
| 139 } |
| 140 |
| 141 // static |
| 108 void PolicySettings::ReadContentTypeSetting( | 142 void PolicySettings::ReadContentTypeSetting( |
| 109 std::vector<std::wstring>* content_type_list) { | 143 std::vector<std::wstring>* content_type_list) { |
| 110 DCHECK(content_type_list); | 144 DCHECK(content_type_list); |
| 111 | 145 |
| 112 std::wstring sub_key(policy::kRegistryChromePolicyKey); | 146 std::wstring sub_key(policy::kRegistryChromePolicyKey); |
| 113 sub_key += L"\\"; | 147 sub_key += L"\\"; |
| 114 sub_key += ASCIIToWide(policy::key::kChromeFrameContentTypes); | 148 sub_key += ASCIIToWide(policy::key::kChromeFrameContentTypes); |
| 115 | 149 |
| 116 content_type_list->clear(); | 150 content_type_list->clear(); |
| 117 for (int i = 0; i < arraysize(kRootKeys) && content_type_list->empty(); | 151 for (int i = 0; i < arraysize(kRootKeys) && content_type_list->empty(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 (config_key.ReadValueDW(value_name_str.c_str(), | 183 (config_key.ReadValueDW(value_name_str.c_str(), |
| 150 &dword_value) == ERROR_SUCCESS)) { | 184 &dword_value) == ERROR_SUCCESS)) { |
| 151 *value = (dword_value != 0); | 185 *value = (dword_value != 0); |
| 152 break; | 186 break; |
| 153 } | 187 } |
| 154 } | 188 } |
| 155 } | 189 } |
| 156 | 190 |
| 157 void PolicySettings::RefreshFromRegistry() { | 191 void PolicySettings::RefreshFromRegistry() { |
| 158 RendererForUrl default_renderer; | 192 RendererForUrl default_renderer; |
| 193 SkipMetadataCheck skip_metadata_check; |
| 159 std::vector<std::wstring> renderer_exclusion_list; | 194 std::vector<std::wstring> renderer_exclusion_list; |
| 160 std::vector<std::wstring> content_type_list; | 195 std::vector<std::wstring> content_type_list; |
| 161 std::wstring application_locale; | 196 std::wstring application_locale; |
| 162 CommandLine additional_launch_parameters(CommandLine::NO_PROGRAM); | 197 CommandLine additional_launch_parameters(CommandLine::NO_PROGRAM); |
| 163 std::wstring additional_parameters_str; | 198 std::wstring additional_parameters_str; |
| 164 bool suppress_turndown_prompt = false; | 199 bool suppress_turndown_prompt = false; |
| 165 | 200 |
| 166 // Read the latest settings from the registry | 201 // Read the latest settings from the registry |
| 167 ReadUrlSettings(&default_renderer, &renderer_exclusion_list); | 202 ReadUrlSettings(&default_renderer, &renderer_exclusion_list); |
| 203 ReadMetadataCheckSettings(&skip_metadata_check); |
| 168 ReadContentTypeSetting(&content_type_list); | 204 ReadContentTypeSetting(&content_type_list); |
| 169 ReadStringSetting(policy::key::kApplicationLocaleValue, &application_locale); | 205 ReadStringSetting(policy::key::kApplicationLocaleValue, &application_locale); |
| 170 ReadStringSetting(policy::key::kAdditionalLaunchParameters, | 206 ReadStringSetting(policy::key::kAdditionalLaunchParameters, |
| 171 &additional_parameters_str); | 207 &additional_parameters_str); |
| 172 if (!additional_parameters_str.empty()) { | 208 if (!additional_parameters_str.empty()) { |
| 173 additional_parameters_str.insert(0, L"fake.exe "); | 209 additional_parameters_str.insert(0, L"fake.exe "); |
| 174 additional_launch_parameters.ParseFromString(additional_parameters_str); | 210 additional_launch_parameters.ParseFromString(additional_parameters_str); |
| 175 } | 211 } |
| 176 ReadBoolSetting(policy::key::kSuppressChromeFrameTurndownPrompt, | 212 ReadBoolSetting(policy::key::kSuppressChromeFrameTurndownPrompt, |
| 177 &suppress_turndown_prompt); | 213 &suppress_turndown_prompt); |
| 178 | 214 |
| 179 // Nofail swap in the new values. (Note: this is all that need be protected | 215 // Nofail swap in the new values. (Note: this is all that need be protected |
| 180 // under a mutex if/when this becomes thread safe.) | 216 // under a mutex if/when this becomes thread safe.) |
| 181 using std::swap; | 217 using std::swap; |
| 182 | 218 |
| 183 swap(default_renderer_, default_renderer); | 219 swap(default_renderer_, default_renderer); |
| 220 swap(skip_metadata_check_, skip_metadata_check); |
| 184 swap(renderer_exclusion_list_, renderer_exclusion_list); | 221 swap(renderer_exclusion_list_, renderer_exclusion_list); |
| 185 swap(content_type_list_, content_type_list); | 222 swap(content_type_list_, content_type_list); |
| 186 swap(application_locale_, application_locale); | 223 swap(application_locale_, application_locale); |
| 187 swap(additional_launch_parameters_, additional_launch_parameters); | 224 swap(additional_launch_parameters_, additional_launch_parameters); |
| 188 swap(suppress_turndown_prompt_, suppress_turndown_prompt); | 225 swap(suppress_turndown_prompt_, suppress_turndown_prompt); |
| 189 } | 226 } |
| 190 | 227 |
| 191 // static | 228 // static |
| 192 PolicySettings* PolicySettings::GetInstance() { | 229 PolicySettings* PolicySettings::GetInstance() { |
| 193 return Singleton<PolicySettings>::get(); | 230 return Singleton<PolicySettings>::get(); |
| 194 } | 231 } |
| OLD | NEW |