| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/install_static/install_util.h" | 5 #include "chrome/install_static/install_util.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <assert.h> | 8 #include <assert.h> |
| 9 #include <stdlib.h> | 9 #include <stdlib.h> |
| 10 #include <string.h> | 10 #include <string.h> |
| 11 | 11 |
| 12 #include <algorithm> | 12 #include <algorithm> |
| 13 #include <limits> |
| 13 #include <memory> | 14 #include <memory> |
| 14 #include <sstream> | 15 #include <sstream> |
| 15 | 16 |
| 16 #include "chrome/install_static/install_details.h" | 17 #include "chrome/install_static/install_details.h" |
| 17 #include "chrome/install_static/install_modes.h" | 18 #include "chrome/install_static/install_modes.h" |
| 18 #include "chrome/install_static/policy_path_parser.h" | 19 #include "chrome/install_static/policy_path_parser.h" |
| 19 #include "chrome/install_static/user_data_dir.h" | 20 #include "chrome/install_static/user_data_dir.h" |
| 20 #include "chrome_elf/nt_registry/nt_registry.h" | 21 #include "chrome_elf/nt_registry/nt_registry.h" |
| 21 | 22 |
| 22 namespace install_static { | 23 namespace install_static { |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 std::basic_istringstream<typename StringType::value_type> buffer(str); | 253 std::basic_istringstream<typename StringType::value_type> buffer(str); |
| 253 for (StringType token; std::getline(buffer, token, delimiter);) { | 254 for (StringType token; std::getline(buffer, token, delimiter);) { |
| 254 if (trim_spaces) | 255 if (trim_spaces) |
| 255 TrimT<StringType>(&token); | 256 TrimT<StringType>(&token); |
| 256 tokens.push_back(token); | 257 tokens.push_back(token); |
| 257 } | 258 } |
| 258 return tokens; | 259 return tokens; |
| 259 } | 260 } |
| 260 | 261 |
| 261 std::wstring ChannelFromAdditionalParameters(const InstallConstants& mode, | 262 std::wstring ChannelFromAdditionalParameters(const InstallConstants& mode, |
| 262 bool system_level) { | 263 bool system_level, |
| 264 bool from_binaries) { |
| 263 assert(kUseGoogleUpdateIntegration); | 265 assert(kUseGoogleUpdateIntegration); |
| 264 // InitChannelInfo in google_update_settings.cc only reports a failure when | 266 // InitChannelInfo in google_update_settings.cc only reports a failure when |
| 265 // Chrome's ClientState key exists but that the "ap" value therein cannot be | 267 // Chrome's ClientState key exists but that the "ap" value therein cannot be |
| 266 // read due to some reason *other* than it not being present. This should be | 268 // read due to some reason *other* than it not being present. This should be |
| 267 // exceedingly rare. For simplicity's sake, use an empty |value| in case of | 269 // exceedingly rare. For simplicity's sake, use an empty |value| in case of |
| 268 // any error whatsoever here. | 270 // any error whatsoever here. |
| 269 std::wstring value; | 271 std::wstring value; |
| 270 nt::QueryRegValueSZ(system_level ? nt::HKLM : nt::HKCU, nt::WOW6432, | 272 nt::QueryRegValueSZ(system_level ? nt::HKLM : nt::HKCU, nt::WOW6432, |
| 271 GetClientStateKeyPath(mode.app_guid).c_str(), kRegValueAp, | 273 from_binaries |
| 272 &value); | 274 ? GetBinariesClientStateKeyPath().c_str() |
| 275 : GetClientStateKeyPath(mode.app_guid).c_str(), |
| 276 kRegValueAp, &value); |
| 273 | 277 |
| 274 static constexpr wchar_t kChromeChannelBetaPattern[] = L"1?1-*"; | 278 static constexpr wchar_t kChromeChannelBetaPattern[] = L"1?1-*"; |
| 275 static constexpr wchar_t kChromeChannelBetaX64Pattern[] = L"*x64-beta*"; | 279 static constexpr wchar_t kChromeChannelBetaX64Pattern[] = L"*x64-beta*"; |
| 276 static constexpr wchar_t kChromeChannelDevPattern[] = L"2?0-d*"; | 280 static constexpr wchar_t kChromeChannelDevPattern[] = L"2?0-d*"; |
| 277 static constexpr wchar_t kChromeChannelDevX64Pattern[] = L"*x64-dev*"; | 281 static constexpr wchar_t kChromeChannelDevX64Pattern[] = L"*x64-dev*"; |
| 278 | 282 |
| 279 std::transform(value.begin(), value.end(), value.begin(), ::tolower); | 283 std::transform(value.begin(), value.end(), value.begin(), ::tolower); |
| 280 | 284 |
| 281 // Empty channel names or those containing "stable" should be reported as | 285 // Empty channel names or those containing "stable" should be reported as |
| 282 // an empty string. | 286 // an empty string. |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 Trace(L"Failed to create directory %ls, last error is %d\n", | 734 Trace(L"Failed to create directory %ls, last error is %d\n", |
| 731 full_path_str, error_code); | 735 full_path_str, error_code); |
| 732 return false; | 736 return false; |
| 733 } | 737 } |
| 734 } | 738 } |
| 735 return true; | 739 return true; |
| 736 } | 740 } |
| 737 | 741 |
| 738 // This function takes these inputs rather than accessing the module's | 742 // This function takes these inputs rather than accessing the module's |
| 739 // InstallDetails instance since it is used to bootstrap InstallDetails. | 743 // InstallDetails instance since it is used to bootstrap InstallDetails. |
| 740 std::wstring DetermineChannel(const InstallConstants& mode, bool system_level) { | 744 std::wstring DetermineChannel(const InstallConstants& mode, |
| 745 bool system_level, |
| 746 bool from_binaries) { |
| 741 if (!kUseGoogleUpdateIntegration) | 747 if (!kUseGoogleUpdateIntegration) |
| 742 return std::wstring(); | 748 return std::wstring(); |
| 743 | 749 |
| 744 switch (mode.channel_strategy) { | 750 switch (mode.channel_strategy) { |
| 745 case ChannelStrategy::UNSUPPORTED: | 751 case ChannelStrategy::UNSUPPORTED: |
| 746 assert(false); | 752 assert(false); |
| 747 break; | 753 break; |
| 748 case ChannelStrategy::ADDITIONAL_PARAMETERS: | 754 case ChannelStrategy::ADDITIONAL_PARAMETERS: |
| 749 return ChannelFromAdditionalParameters(mode, system_level); | 755 return ChannelFromAdditionalParameters(mode, system_level, from_binaries); |
| 750 case ChannelStrategy::FIXED: | 756 case ChannelStrategy::FIXED: |
| 751 return mode.default_channel_name; | 757 return mode.default_channel_name; |
| 752 } | 758 } |
| 753 | 759 |
| 754 return std::wstring(); | 760 return std::wstring(); |
| 755 } | 761 } |
| 756 | 762 |
| 757 } // namespace install_static | 763 } // namespace install_static |
| OLD | NEW |