Index: content/child/dwrite_font_proxy/dwrite_localized_strings_win.h |
diff --git a/content/child/dwrite_font_proxy/dwrite_localized_strings_win.h b/content/child/dwrite_font_proxy/dwrite_localized_strings_win.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c751d4e89e88c190b7cee8a6b2857184edb0fd9b |
--- /dev/null |
+++ b/content/child/dwrite_font_proxy/dwrite_localized_strings_win.h |
@@ -0,0 +1,54 @@ |
+// 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. |
+ |
+#ifndef CONTENT_CHILD_DWRITE_FONT_PROXY_DWRITE_LOCALIZED_STRINGS_WIN_H_ |
+#define CONTENT_CHILD_DWRITE_FONT_PROXY_DWRITE_LOCALIZED_STRINGS_WIN_H_ |
+ |
+#include <dwrite.h> |
+#include <wrl.h> |
+#include <utility> |
+#include <vector> |
+ |
+#include "base/macros.h" |
+#include "base/strings/string16.h" |
+ |
+namespace mswr = Microsoft::WRL; |
+ |
+namespace content { |
+ |
+// Impements IDWriteLocalizedStrings, backed by a vector of string pairs. |
+class DWriteLocalizedStrings |
+ : public mswr::RuntimeClass<mswr::RuntimeClassFlags<mswr::ClassicCom>, |
+ IDWriteLocalizedStrings> { |
+ public: |
+ // IDWriteLocalizedStrings: |
+ HRESULT STDMETHODCALLTYPE FindLocaleName(const WCHAR* locale_name, |
+ UINT32* index, |
+ BOOL* exists) override; |
+ UINT32 STDMETHODCALLTYPE GetCount() override; |
+ HRESULT STDMETHODCALLTYPE GetLocaleName(UINT32 index, |
+ WCHAR* locale_name, |
+ UINT32 size) override; |
+ HRESULT STDMETHODCALLTYPE GetLocaleNameLength(UINT32 index, |
+ UINT32* length) override; |
+ HRESULT STDMETHODCALLTYPE GetString(UINT32 index, |
+ WCHAR* string_buffer, |
+ UINT32 size) override; |
+ HRESULT STDMETHODCALLTYPE GetStringLength(UINT32 index, |
+ UINT32* length) override; |
+ |
+ HRESULT STDMETHODCALLTYPE RuntimeClassInitialize( |
+ std::vector<std::pair<base::string16, base::string16>>* strings); |
+ |
+ private: |
+ // List of strings. First element of each pair is the locale, and the second |
+ // element is the associated value. Use a vector because the expected number |
+ // of pairs is small (typically 1-2, rarely up to a few dozen?) and we need |
+ // index-based access. |
+ std::vector<std::pair<base::string16, base::string16>> strings_; |
+ DISALLOW_ASSIGN(DWriteLocalizedStrings); |
+}; |
+ |
+} // namespace content |
+#endif // CONTENT_CHILD_DWRITE_FONT_PROXY_DWRITE_LOCALIZED_STRINGS_WIN_H_ |