From f61a99e5ed6de754e9e99d05634c508f0b4d951a Mon Sep 17 00:00:00 2001 From: Makoto Kato Date: Thu, 9 Jan 2020 09:53:16 +0100 Subject: Issue #1348 - Part 1: Clean up input scope support for IMM32. Use AutoTArray to set input scope. --- widget/windows/WinIMEHandler.cpp | 76 ++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 50 deletions(-) diff --git a/widget/windows/WinIMEHandler.cpp b/widget/windows/WinIMEHandler.cpp index d44f729c4..99f0fb136 100644 --- a/widget/windows/WinIMEHandler.cpp +++ b/widget/windows/WinIMEHandler.cpp @@ -588,77 +588,53 @@ IMEHandler::SetInputScopeForIMM32(nsWindow* aWindow, if (sIsInTSFMode || !sSetInputScopes || aWindow->Destroyed()) { return; } - UINT arraySize = 0; - const InputScope* scopes = nullptr; + AutoTArray scopes; // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html if (aHTMLInputType.IsEmpty() || aHTMLInputType.EqualsLiteral("text")) { if (aHTMLInputInputmode.EqualsLiteral("url")) { - static const InputScope inputScopes[] = { IS_URL }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_URL); } else if (aHTMLInputInputmode.EqualsLiteral("email")) { - static const InputScope inputScopes[] = { IS_EMAIL_SMTPEMAILADDRESS }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_EMAIL_SMTPEMAILADDRESS); } else if (aHTMLInputInputmode.EqualsLiteral("tel")) { - static const InputScope inputScopes[] = - {IS_TELEPHONE_LOCALNUMBER, IS_TELEPHONE_FULLTELEPHONENUMBER}; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_TELEPHONE_LOCALNUMBER); + scopes.AppendElement(IS_TELEPHONE_FULLTELEPHONENUMBER); } else if (aHTMLInputInputmode.EqualsLiteral("numeric")) { - static const InputScope inputScopes[] = { IS_NUMBER }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_NUMBER); } else { - static const InputScope inputScopes[] = { IS_DEFAULT }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_DEFAULT); } } else if (aHTMLInputType.EqualsLiteral("url")) { - static const InputScope inputScopes[] = { IS_URL }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_URL); } else if (aHTMLInputType.EqualsLiteral("search")) { - static const InputScope inputScopes[] = { IS_SEARCH }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_SEARCH); } else if (aHTMLInputType.EqualsLiteral("email")) { - static const InputScope inputScopes[] = { IS_EMAIL_SMTPEMAILADDRESS }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_EMAIL_SMTPEMAILADDRESS); } else if (aHTMLInputType.EqualsLiteral("password")) { - static const InputScope inputScopes[] = { IS_PASSWORD }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_PASSWORD); } else if (aHTMLInputType.EqualsLiteral("datetime") || aHTMLInputType.EqualsLiteral("datetime-local")) { - static const InputScope inputScopes[] = { - IS_DATE_FULLDATE, IS_TIME_FULLTIME }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_DATE_FULLDATE); + scopes.AppendElement(IS_TIME_FULLTIME); } else if (aHTMLInputType.EqualsLiteral("date") || aHTMLInputType.EqualsLiteral("month") || aHTMLInputType.EqualsLiteral("week")) { - static const InputScope inputScopes[] = { IS_DATE_FULLDATE }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_DATE_FULLDATE); } else if (aHTMLInputType.EqualsLiteral("time")) { - static const InputScope inputScopes[] = { IS_TIME_FULLTIME }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_TIME_FULLTIME); } else if (aHTMLInputType.EqualsLiteral("tel")) { - static const InputScope inputScopes[] = { - IS_TELEPHONE_FULLTELEPHONENUMBER, IS_TELEPHONE_LOCALNUMBER }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_TELEPHONE_FULLTELEPHONENUMBER); + scopes.AppendElement(IS_TELEPHONE_LOCALNUMBER); } else if (aHTMLInputType.EqualsLiteral("number")) { - static const InputScope inputScopes[] = { IS_NUMBER }; - scopes = &inputScopes[0]; - arraySize = ArrayLength(inputScopes); + scopes.AppendElement(IS_NUMBER); } - if (scopes && arraySize > 0) { - sSetInputScopes(aWindow->GetWindowHandle(), scopes, arraySize, nullptr, 0, - nullptr, nullptr); + if (!scopes.IsEmpty()) { + sSetInputScopes(aWindow->GetWindowHandle(), + scopes.Elements(), + scopes.Length(), + nullptr, + 0, + nullptr, + nullptr); } } -- cgit v1.2.3