Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Side by Side Diff: chromeos/ime/extension_ime_util.cc

Issue 727143002: Moves code from chromeos/ime to ui/base/ime/chromeos. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chromeos/ime/extension_ime_util.h ('k') | chromeos/ime/extension_ime_util_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chromeos/ime/extension_ime_util.h"
6
7 #include "base/strings/string_util.h"
8
9 namespace chromeos {
10
11 namespace {
12
13 const char kExtensionIMEPrefix[] = "_ext_ime_";
14 const int kExtensionIMEPrefixLength =
15 sizeof(kExtensionIMEPrefix) / sizeof(kExtensionIMEPrefix[0]) - 1;
16 const char kComponentExtensionIMEPrefix[] = "_comp_ime_";
17 const int kComponentExtensionIMEPrefixLength =
18 sizeof(kComponentExtensionIMEPrefix) /
19 sizeof(kComponentExtensionIMEPrefix[0]) - 1;
20 const int kExtensionIdLength = 32;
21
22 } // namespace
23
24 namespace extension_ime_util {
25
26 std::string GetInputMethodID(const std::string& extension_id,
27 const std::string& engine_id) {
28 DCHECK(!extension_id.empty());
29 DCHECK(!engine_id.empty());
30 return kExtensionIMEPrefix + extension_id + engine_id;
31 }
32
33 std::string GetComponentInputMethodID(const std::string& extension_id,
34 const std::string& engine_id) {
35 DCHECK(!extension_id.empty());
36 DCHECK(!engine_id.empty());
37 return kComponentExtensionIMEPrefix + extension_id + engine_id;
38 }
39
40 std::string GetExtensionIDFromInputMethodID(
41 const std::string& input_method_id) {
42 if (IsExtensionIME(input_method_id)) {
43 return input_method_id.substr(kExtensionIMEPrefixLength,
44 kExtensionIdLength);
45 }
46 if (IsComponentExtensionIME(input_method_id)) {
47 return input_method_id.substr(kComponentExtensionIMEPrefixLength,
48 kExtensionIdLength);
49 }
50 return "";
51 }
52
53 std::string GetComponentIDByInputMethodID(const std::string& input_method_id) {
54 if (IsComponentExtensionIME(input_method_id))
55 return input_method_id.substr(kComponentExtensionIMEPrefixLength +
56 kExtensionIdLength);
57 if (IsExtensionIME(input_method_id))
58 return input_method_id.substr(kExtensionIMEPrefixLength +
59 kExtensionIdLength);
60 return input_method_id;
61 }
62
63 std::string GetInputMethodIDByEngineID(const std::string& engine_id) {
64 if (StartsWithASCII(engine_id, kComponentExtensionIMEPrefix, true) ||
65 StartsWithASCII(engine_id, kExtensionIMEPrefix, true)) {
66 return engine_id;
67 }
68 if (StartsWithASCII(engine_id, "xkb:", true))
69 return GetComponentInputMethodID(kXkbExtensionId, engine_id);
70 if (StartsWithASCII(engine_id, "vkd_", true))
71 return GetComponentInputMethodID(kM17nExtensionId, engine_id);
72 if (StartsWithASCII(engine_id, "nacl_mozc_", true))
73 return GetComponentInputMethodID(kMozcExtensionId, engine_id);
74 if (StartsWithASCII(engine_id, "hangul_", true))
75 return GetComponentInputMethodID(kHangulExtensionId, engine_id);
76
77 if (StartsWithASCII(engine_id, "zh-", true) &&
78 engine_id.find("pinyin") != std::string::npos) {
79 return GetComponentInputMethodID(kChinesePinyinExtensionId, engine_id);
80 }
81 if (StartsWithASCII(engine_id, "zh-", true) &&
82 engine_id.find("zhuyin") != std::string::npos) {
83 return GetComponentInputMethodID(kChineseZhuyinExtensionId, engine_id);
84 }
85 if (StartsWithASCII(engine_id, "zh-", true) &&
86 engine_id.find("cangjie") != std::string::npos) {
87 return GetComponentInputMethodID(kChineseCangjieExtensionId, engine_id);
88 }
89 if (engine_id.find("-t-i0-") != std::string::npos)
90 return GetComponentInputMethodID(kT13nExtensionId, engine_id);
91
92 return engine_id;
93 }
94
95 bool IsExtensionIME(const std::string& input_method_id) {
96 return StartsWithASCII(input_method_id,
97 kExtensionIMEPrefix,
98 true /* Case sensitive */) &&
99 input_method_id.size() > kExtensionIMEPrefixLength +
100 kExtensionIdLength;
101 }
102
103 bool IsComponentExtensionIME(const std::string& input_method_id) {
104 return StartsWithASCII(input_method_id,
105 kComponentExtensionIMEPrefix,
106 true /* Case sensitive */) &&
107 input_method_id.size() > kComponentExtensionIMEPrefixLength +
108 kExtensionIdLength;
109 }
110
111 bool IsMemberOfExtension(const std::string& input_method_id,
112 const std::string& extension_id) {
113 return StartsWithASCII(input_method_id,
114 kExtensionIMEPrefix + extension_id,
115 true /* Case sensitive */);
116 }
117
118 bool IsKeyboardLayoutExtension(const std::string& input_method_id) {
119 if (IsComponentExtensionIME(input_method_id))
120 return StartsWithASCII(GetComponentIDByInputMethodID(input_method_id),
121 "xkb:", true);
122 return false;
123 }
124
125 std::string MaybeGetLegacyXkbId(const std::string& input_method_id) {
126 if (IsKeyboardLayoutExtension(input_method_id))
127 return GetComponentIDByInputMethodID(input_method_id);
128 return input_method_id;
129 }
130
131 } // namespace extension_ime_util
132 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/ime/extension_ime_util.h ('k') | chromeos/ime/extension_ime_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698