Index: content/child/dwrite_font_proxy/dwrite_localized_strings_win.cc |
diff --git a/content/child/dwrite_font_proxy/dwrite_localized_strings_win.cc b/content/child/dwrite_font_proxy/dwrite_localized_strings_win.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f36725046c92f636b100a83bf8abdaebe5d084b2 |
--- /dev/null |
+++ b/content/child/dwrite_font_proxy/dwrite_localized_strings_win.cc |
@@ -0,0 +1,74 @@ |
+// Copyright 2015 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. |
+ |
+#include "content/child/dwrite_font_proxy/dwrite_localized_strings_win.h" |
+ |
+#include "base/logging.h" |
+ |
+namespace content { |
+ |
+HRESULT DWriteLocalizedStrings::FindLocaleName(const WCHAR* locale_name, |
+ UINT32* index, |
+ BOOL* exists) { |
+ for (unsigned int n = 0; n < strings_.size(); n++) { |
+ if (_wcsicmp(strings_[n].first.data(), locale_name) == 0) { |
+ *index = n; |
+ *exists = TRUE; |
+ return S_OK; |
+ } |
+ } |
+ |
+ *index = UINT_MAX; |
+ *exists = FALSE; |
+ return S_OK; |
+} |
+ |
+UINT32 DWriteLocalizedStrings::GetCount() { |
+ return strings_.size(); |
+} |
+ |
+HRESULT DWriteLocalizedStrings::GetLocaleName(UINT32 index, |
+ WCHAR* locale_name, |
+ UINT32 size) { |
+ if (index >= strings_.size()) |
+ return E_INVALIDARG; |
+ if (size <= strings_[index].first.size()) |
+ return E_INVALIDARG; |
+ wcsncpy(locale_name, strings_[index].first.data(), size); |
+ return S_OK; |
+} |
+ |
+HRESULT DWriteLocalizedStrings::GetLocaleNameLength(UINT32 index, |
+ UINT32* length) { |
+ if (index >= strings_.size()) |
+ return E_INVALIDARG; |
+ *length = strings_[index].first.size(); |
+ return S_OK; |
+} |
+ |
+HRESULT DWriteLocalizedStrings::GetString(UINT32 index, |
+ WCHAR* string_buffer, |
+ UINT32 size) { |
+ if (index >= strings_.size()) |
+ return E_INVALIDARG; |
+ if (size <= strings_[index].second.size()) |
+ return E_INVALIDARG; |
+ wcsncpy(string_buffer, strings_[index].second.data(), size); |
+ return S_OK; |
+} |
+ |
+HRESULT DWriteLocalizedStrings::GetStringLength(UINT32 index, UINT32* length) { |
+ if (index >= strings_.size()) |
+ return E_INVALIDARG; |
+ *length = strings_[index].second.size(); |
+ return S_OK; |
+} |
+ |
+HRESULT DWriteLocalizedStrings::RuntimeClassInitialize( |
+ std::vector<std::pair<base::string16, base::string16>>* strings) { |
+ strings_.swap(*strings); |
+ return S_OK; |
+} |
+ |
+} // namespace content |