summaryrefslogtreecommitdiffstats
path: root/widget/uikit/UIKitUtils.mm
diff options
context:
space:
mode:
Diffstat (limited to 'widget/uikit/UIKitUtils.mm')
-rw-r--r--widget/uikit/UIKitUtils.mm89
1 files changed, 89 insertions, 0 deletions
diff --git a/widget/uikit/UIKitUtils.mm b/widget/uikit/UIKitUtils.mm
new file mode 100644
index 0000000000..ddcd2312b0
--- /dev/null
+++ b/widget/uikit/UIKitUtils.mm
@@ -0,0 +1,89 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "UIKitUtils.h"
+
+namespace mozilla::widget {
+
+// static
+UIKeyboardType UIKitUtils::GetUIKeyboardType(const InputContext& aContext) {
+ if (aContext.mHTMLInputMode.EqualsLiteral("email")) {
+ return UIKeyboardTypeEmailAddress;
+ }
+ if (aContext.mHTMLInputMode.EqualsLiteral("deciaml")) {
+ return UIKeyboardTypeDecimalPad;
+ }
+ if (aContext.mHTMLInputMode.EqualsLiteral("numeric")) {
+ return UIKeyboardTypeNumberPad;
+ }
+ if (aContext.mHTMLInputMode.EqualsLiteral("search")) {
+ return UIKeyboardTypeWebSearch;
+ }
+ if (aContext.mHTMLInputMode.EqualsLiteral("tel")) {
+ return UIKeyboardTypePhonePad;
+ }
+ if (aContext.mHTMLInputMode.EqualsLiteral("url")) {
+ return UIKeyboardTypeURL;
+ }
+
+ if (aContext.mHTMLInputType.EqualsLiteral("email")) {
+ return UIKeyboardTypeEmailAddress;
+ }
+ if (aContext.mHTMLInputType.EqualsLiteral("number")) {
+ return UIKeyboardTypeNumberPad;
+ }
+ if (aContext.mHTMLInputType.EqualsLiteral("tel")) {
+ return UIKeyboardTypePhonePad;
+ }
+ if (aContext.mHTMLInputType.EqualsLiteral("url")) {
+ return UIKeyboardTypeURL;
+ }
+
+ return UIKeyboardTypeDefault;
+}
+
+// static
+UIReturnKeyType UIKitUtils::GetUIReturnKeyType(const InputContext& aContext) {
+ if (aContext.mActionHint.EqualsLiteral("done")) {
+ return UIReturnKeyDone;
+ }
+ if (aContext.mActionHint.EqualsLiteral("go")) {
+ return UIReturnKeyGo;
+ }
+ if (aContext.mActionHint.EqualsLiteral("next") ||
+ aContext.mActionHint.EqualsLiteral("maybenext")) {
+ return UIReturnKeyNext;
+ }
+ if (aContext.mActionHint.EqualsLiteral("search")) {
+ return UIReturnKeySearch;
+ }
+ if (aContext.mActionHint.EqualsLiteral("send")) {
+ return UIReturnKeySend;
+ }
+
+ return UIReturnKeyDefault;
+}
+
+// static
+UITextAutocapitalizationType UIKitUtils::GetUITextAutocapitalizationType(
+ const InputContext& aContext) {
+ if (aContext.mAutocapitalize.EqualsLiteral("characters")) {
+ return UITextAutocapitalizationTypeAllCharacters;
+ }
+ if (aContext.mAutocapitalize.EqualsLiteral("none")) {
+ return UITextAutocapitalizationTypeNone;
+ }
+ if (aContext.mAutocapitalize.EqualsLiteral("sentences")) {
+ return UITextAutocapitalizationTypeSentences;
+ }
+ if (aContext.mAutocapitalize.EqualsLiteral("words")) {
+ return UITextAutocapitalizationTypeWords;
+ }
+ // TODO(m_kato):
+ // Infer autocapitalization type by input type like GeckoView.
+ return UITextAutocapitalizationTypeNone;
+}
+
+} // namespace mozilla::widget