| 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 // This file defines utility functions for fetching localized resources. | 5 // This file defines utility functions for fetching localized resources. |
| 6 | 6 |
| 7 #include "chrome/installer/util/l10n_string_util.h" | 7 #include "chrome/installer/util/l10n_string_util.h" |
| 8 | 8 |
| 9 #include <atlbase.h> | 9 #include <atlbase.h> |
| 10 | 10 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 // explained here : http://support.microsoft.com/kb/220830 | 66 // explained here : http://support.microsoft.com/kb/220830 |
| 67 std::wstring GetLocalizedEulaResource() { | 67 std::wstring GetLocalizedEulaResource() { |
| 68 wchar_t full_exe_path[MAX_PATH]; | 68 wchar_t full_exe_path[MAX_PATH]; |
| 69 int len = ::GetModuleFileName(NULL, full_exe_path, MAX_PATH); | 69 int len = ::GetModuleFileName(NULL, full_exe_path, MAX_PATH); |
| 70 if (len == 0 || len == MAX_PATH) | 70 if (len == 0 || len == MAX_PATH) |
| 71 return L""; | 71 return L""; |
| 72 | 72 |
| 73 // The resource names are more or less the upcased language names. | 73 // The resource names are more or less the upcased language names. |
| 74 std::wstring language(GetLanguageSelector().selected_translation()); | 74 std::wstring language(GetLanguageSelector().selected_translation()); |
| 75 std::replace(language.begin(), language.end(), L'-', L'_'); | 75 std::replace(language.begin(), language.end(), L'-', L'_'); |
| 76 base::StringToUpperASCII(&language); | 76 StringToUpperASCII(&language); |
| 77 | 77 |
| 78 std::wstring resource(L"IDR_OEMPG_"); | 78 std::wstring resource(L"IDR_OEMPG_"); |
| 79 resource.append(language).append(L".HTML"); | 79 resource.append(language).append(L".HTML"); |
| 80 | 80 |
| 81 // Fall back on "en" if we don't have a resource for this language. | 81 // Fall back on "en" if we don't have a resource for this language. |
| 82 if (NULL == FindResource(NULL, resource.c_str(), RT_HTML)) | 82 if (NULL == FindResource(NULL, resource.c_str(), RT_HTML)) |
| 83 resource = L"IDR_OEMPG_EN.HTML"; | 83 resource = L"IDR_OEMPG_EN.HTML"; |
| 84 | 84 |
| 85 // Spaces and DOS paths must be url encoded. | 85 // Spaces and DOS paths must be url encoded. |
| 86 std::wstring url_path = | 86 std::wstring url_path = |
| 87 base::StringPrintf(L"res://%ls/#23/%ls", full_exe_path, resource.c_str()); | 87 base::StringPrintf(L"res://%ls/#23/%ls", full_exe_path, resource.c_str()); |
| 88 | 88 |
| 89 // The cast is safe because url_path has limited length | 89 // The cast is safe because url_path has limited length |
| 90 // (see the definition of full_exe_path and resource). | 90 // (see the definition of full_exe_path and resource). |
| 91 DCHECK(kuint32max > (url_path.size() * 3)); | 91 DCHECK(kuint32max > (url_path.size() * 3)); |
| 92 DWORD count = static_cast<DWORD>(url_path.size() * 3); | 92 DWORD count = static_cast<DWORD>(url_path.size() * 3); |
| 93 scoped_ptr<wchar_t[]> url_canon(new wchar_t[count]); | 93 scoped_ptr<wchar_t[]> url_canon(new wchar_t[count]); |
| 94 HRESULT hr = ::UrlCanonicalizeW(url_path.c_str(), url_canon.get(), | 94 HRESULT hr = ::UrlCanonicalizeW(url_path.c_str(), url_canon.get(), |
| 95 &count, URL_ESCAPE_UNSAFE); | 95 &count, URL_ESCAPE_UNSAFE); |
| 96 if (SUCCEEDED(hr)) | 96 if (SUCCEEDED(hr)) |
| 97 return std::wstring(url_canon.get()); | 97 return std::wstring(url_canon.get()); |
| 98 return url_path; | 98 return url_path; |
| 99 } | 99 } |
| 100 | 100 |
| 101 std::wstring GetCurrentTranslation() { | 101 std::wstring GetCurrentTranslation() { |
| 102 return GetLanguageSelector().selected_translation(); | 102 return GetLanguageSelector().selected_translation(); |
| 103 } | 103 } |
| 104 | 104 |
| 105 } // namespace installer | 105 } // namespace installer |
| OLD | NEW |