diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-01-09 13:19:56 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-01-11 13:45:02 +0100 |
commit | e338d996999867b5d4f66d47837c56dba73a7f6b (patch) | |
tree | 84b4304ce865be29f62fa952fb4d1c8c1fb19fe9 | |
parent | f61a99e5ed6de754e9e99d05634c508f0b4d951a (diff) | |
download | UXP-e338d996999867b5d4f66d47837c56dba73a7f6b.tar UXP-e338d996999867b5d4f66d47837c56dba73a7f6b.tar.gz UXP-e338d996999867b5d4f66d47837c56dba73a7f6b.tar.lz UXP-e338d996999867b5d4f66d47837c56dba73a7f6b.tar.xz UXP-e338d996999867b5d4f66d47837c56dba73a7f6b.zip |
Issue #1348 - Part 2: Teach IMEState about Private Browsing mode.
-rw-r--r-- | dom/events/IMEStateManager.cpp | 24 | ||||
-rw-r--r-- | dom/events/IMEStateManager.h | 1 | ||||
-rw-r--r-- | widget/IMEData.h | 4 |
3 files changed, 21 insertions, 8 deletions
diff --git a/dom/events/IMEStateManager.cpp b/dom/events/IMEStateManager.cpp index 1c8ed63f0..80abad3cc 100644 --- a/dom/events/IMEStateManager.cpp +++ b/dom/events/IMEStateManager.cpp @@ -297,7 +297,7 @@ IMEStateManager::OnDestroyPresContext(nsPresContext* aPresContext) IMEState newState = GetNewIMEState(sPresContext, nullptr); InputContextAction action(InputContextAction::CAUSE_UNKNOWN, InputContextAction::LOST_FOCUS); - SetIMEState(newState, nullptr, sWidget, action); + SetIMEState(newState, nullptr, nullptr, sWidget, action); } sWidget = nullptr; sContent = nullptr; @@ -352,7 +352,7 @@ IMEStateManager::OnRemoveContent(nsPresContext* aPresContext, IMEState newState = GetNewIMEState(sPresContext, nullptr); InputContextAction action(InputContextAction::CAUSE_UNKNOWN, InputContextAction::LOST_FOCUS); - SetIMEState(newState, nullptr, sWidget, action); + SetIMEState(newState, aPresContext, nullptr, sWidget, action); } sWidget = nullptr; @@ -542,7 +542,7 @@ IMEStateManager::OnChangeFocusInternal(nsPresContext* aPresContext, } // Update IME state for new focus widget - SetIMEState(newState, aContent, newWidget, aAction); + SetIMEState(newState, aPresContext, aContent, newWidget, aAction); } sActiveTabParent = newTabParent; @@ -704,7 +704,7 @@ IMEStateManager::OnClickInEditor(nsPresContext* aPresContext, InputContextAction action(cause, InputContextAction::FOCUS_NOT_CHANGED); IMEState newState = GetNewIMEState(aPresContext, aContent); - SetIMEState(newState, aContent, widget, action); + SetIMEState(newState, aPresContext, aContent, widget, action); } // static @@ -912,7 +912,7 @@ IMEStateManager::UpdateIMEState(const IMEState& aNewIMEState, if (updateIMEState) { InputContextAction action(InputContextAction::CAUSE_UNKNOWN, InputContextAction::FOCUS_NOT_CHANGED); - SetIMEState(aNewIMEState, aContent, widget, action); + SetIMEState(aNewIMEState, sPresContext, aContent, widget, action); if (NS_WARN_IF(widget->Destroyed())) { MOZ_LOG(sISMLog, LogLevel::Error, (" UpdateIMEState(), widget has gone during setting input context")); @@ -1022,8 +1022,8 @@ IMEStateManager::SetInputContextForChildProcess( MOZ_LOG(sISMLog, LogLevel::Info, ("SetInputContextForChildProcess(aTabParent=0x%p, " "aInputContext={ mIMEState={ mEnabled=%s, mOpen=%s }, " - "mHTMLInputType=\"%s\", mHTMLInputInputmode=\"%s\", mActionHint=\"%s\" }, " - "aAction={ mCause=%s, mAction=%s }), " + "mHTMLInputType=\"%s\", mHTMLInputInputmode=\"%s\", mActionHint=\"%s\", " + "mInPrivateBrowsing=%s }, aAction={ mCause=%s, mAction=%s }), " "sPresContext=0x%p (available: %s), sWidget=0x%p (available: %s), " "sActiveTabParent=0x%p", aTabParent, GetIMEStateEnabledName(aInputContext.mIMEState.mEnabled), @@ -1031,6 +1031,7 @@ IMEStateManager::SetInputContextForChildProcess( NS_ConvertUTF16toUTF8(aInputContext.mHTMLInputType).get(), NS_ConvertUTF16toUTF8(aInputContext.mHTMLInputInputmode).get(), NS_ConvertUTF16toUTF8(aInputContext.mActionHint).get(), + GetBoolName(aInputContext.mInPrivateBrowsing), GetActionCauseName(aAction.mCause), GetActionFocusChangeName(aAction.mFocusChange), sPresContext.get(), GetBoolName(CanHandleWith(sPresContext)), @@ -1070,6 +1071,7 @@ IMEStateManager::SetInputContextForChildProcess( // static void IMEStateManager::SetIMEState(const IMEState& aState, + nsPresContext* aPresContext, nsIContent* aContent, nsIWidget* aWidget, InputContextAction aAction) @@ -1090,6 +1092,10 @@ IMEStateManager::SetIMEState(const IMEState& aState, context.mIMEState = aState; context.mMayBeIMEUnaware = context.mIMEState.IsEditable() && sCheckForIMEUnawareWebApps && MayBeIMEUnawareWebApp(aContent); + + context.mInPrivateBrowsing = + aPresContext && + nsContentUtils::IsInPrivateBrowsing(aPresContext->Document()); if (aContent && aContent->IsAnyOfHTMLElements(nsGkAtoms::input, nsGkAtoms::textarea)) { @@ -1175,7 +1181,8 @@ IMEStateManager::SetInputContext(nsIWidget* aWidget, MOZ_LOG(sISMLog, LogLevel::Info, ("SetInputContext(aWidget=0x%p, aInputContext={ " "mIMEState={ mEnabled=%s, mOpen=%s }, mHTMLInputType=\"%s\", " - "mHTMLInputInputmode=\"%s\", mActionHint=\"%s\" }, " + "mHTMLInputInputmode=\"%s\", mActionHint=\"%s\", " + "mInPrivateBrowsing=%s }, " "aAction={ mCause=%s, mAction=%s }), sActiveTabParent=0x%p", aWidget, GetIMEStateEnabledName(aInputContext.mIMEState.mEnabled), @@ -1183,6 +1190,7 @@ IMEStateManager::SetInputContext(nsIWidget* aWidget, NS_ConvertUTF16toUTF8(aInputContext.mHTMLInputType).get(), NS_ConvertUTF16toUTF8(aInputContext.mHTMLInputInputmode).get(), NS_ConvertUTF16toUTF8(aInputContext.mActionHint).get(), + GetBoolName(aInputContext.mInPrivateBrowsing), GetActionCauseName(aAction.mCause), GetActionFocusChangeName(aAction.mFocusChange), sActiveTabParent.get())); diff --git a/dom/events/IMEStateManager.h b/dom/events/IMEStateManager.h index 7dfc48aa5..34509847f 100644 --- a/dom/events/IMEStateManager.h +++ b/dom/events/IMEStateManager.h @@ -247,6 +247,7 @@ protected: nsIContent* aContent, InputContextAction aAction); static void SetIMEState(const IMEState &aState, + nsPresContext* aPresContext, nsIContent* aContent, nsIWidget* aWidget, InputContextAction aAction); diff --git a/widget/IMEData.h b/widget/IMEData.h index b12497be3..04245df26 100644 --- a/widget/IMEData.h +++ b/widget/IMEData.h @@ -300,6 +300,10 @@ struct InputContext final * compatibility with webapps relying on key listeners. */ bool mMayBeIMEUnaware; + /* Whether the owning document of the input element has been loaded + * in private browsing mode. */ + bool mInPrivateBrowsing; + bool IsOriginMainProcess() const { return mOrigin == ORIGIN_MAIN; |