tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 97f5d96228490045d297a2dcc580f79cba76603f
parent 5bb2705578cd0477b8310cce793b53b1199382e8
Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Date:   Wed, 22 Oct 2025 11:39:35 +0000

Bug 1994474 - Part 2. Use MOZ_LOG for GeckoEditable on Nightly. r=geckoview-reviewers,tcampbell

To debug and report bugs, I would like to add a logging support for
input things on GeckoView. `"IMEHnadler"` is common name for logging
IME code on all platforms.

This is Nightly only. So no effect on release and beta.

Differential Revision: https://phabricator.services.mozilla.com/D269354

Diffstat:
Mmobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoEditable.java | 69++++++++++++++++++++++++++++++++++++++++++++-------------------------
Mwidget/android/GeckoEditableSupport.cpp | 2+-
2 files changed, 45 insertions(+), 26 deletions(-)

diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoEditable.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoEditable.java @@ -48,6 +48,7 @@ import org.mozilla.gecko.GeckoEditableChild; import org.mozilla.gecko.IGeckoEditableChild; import org.mozilla.gecko.IGeckoEditableParent; import org.mozilla.gecko.InputMethods; +import org.mozilla.gecko.MozLog; import org.mozilla.gecko.util.GeckoBundle; import org.mozilla.gecko.util.ThreadUtils; import org.mozilla.gecko.util.ThreadUtils.AssertBehavior; @@ -63,7 +64,10 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; implements InvocationHandler, Editable, SessionTextInput.EditableClient { private static final boolean DEBUG = false; + private static final boolean LOGGING = BuildConfig.NIGHTLY_BUILD; private static final String LOGTAG = "GeckoEditable"; + private static final String MOZLOGTAG = "IMEHandler"; + private static final long DISMISS_VKB_DELAY_MS = 100; // Filters to implement Editable's filtering functionality @@ -577,7 +581,11 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; private void icOfferAction(final Action action) { if (DEBUG) { assertOnIcThread(); - Log.d(LOGTAG, "offer: Action(" + getConstantName(Action.class, "TYPE_", action.mType) + ")"); + } + if (LOGGING) { + final StringBuilder sb = new StringBuilder("offer: Action("); + sb.append(getConstantName(Action.class, "TYPE_", action.mType)).append(")"); + MozLog.d(MOZLOGTAG, sb.toString()); } switch (action.mType) { @@ -952,10 +960,10 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; throws RemoteException { if (DEBUG) { assertOnIcThread(); + } + if (LOGGING) { final StringBuilder sb = new StringBuilder("icSendComposition("); - sb.append("\"") - .append(text) - .append("\"") + debugAppend(sb, text) .append(", range = ") .append(composingStart) .append("-") @@ -965,7 +973,7 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; .append("-") .append(selEnd) .append(")"); - Log.d(LOGTAG, sb.toString()); + MozLog.d(MOZLOGTAG, sb.toString()); } if (selEnd >= composingStart && selEnd <= composingEnd) { @@ -1002,8 +1010,14 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; } final CharacterStyle[] styleSpans = text.getSpans(rangeStart, rangeEnd, CharacterStyle.class); - if (DEBUG) { - Log.d(LOGTAG, " found " + styleSpans.length + " spans @ " + rangeStart + "-" + rangeEnd); + if (LOGGING) { + final StringBuilder sb = new StringBuilder(" found "); + sb.append(styleSpans.length) + .append(" spans @ ") + .append(rangeStart) + .append("-") + .append(rangeEnd); + MozLog.d(MOZLOGTAG, sb.toString()); } if (styleSpans.length == 0) { @@ -1063,17 +1077,16 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; rangeLineColor); rangeStart = rangeEnd; - if (DEBUG) { - Log.d( - LOGTAG, - " added " - + rangeType - + " : " - + Integer.toHexString(rangeStyles) - + " : " - + Integer.toHexString(rangeForeColor) - + " : " - + Integer.toHexString(rangeBackColor)); + if (LOGGING) { + final StringBuilder sb = new StringBuilder(" added "); + sb.append(rangeType) + .append(" : ") + .append(Integer.toHexString(rangeStyles)) + .append(" : ") + .append(Integer.toHexString(rangeForeColor)) + .append(" : ") + .append(Integer.toHexString(rangeBackColor)); + MozLog.d(MOZLOGTAG, sb.toString()); } } while (rangeStart < composingEnd); } @@ -1119,7 +1132,11 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; private void sendKeyEvent(final @NonNull KeyEvent event, final int action, final int metaState) { if (DEBUG) { assertOnIcThread(); - Log.d(LOGTAG, "sendKeyEvent(" + event + ", " + action + ", " + metaState + ")"); + } + if (LOGGING) { + final StringBuilder sb = new StringBuilder("sendKeyEvent("); + sb.append(event).append(", ").append(action).append(", ").append(metaState).append(")"); + MozLog.d(MOZLOGTAG, sb.toString()); } /* We are actually sending two events to Gecko here, @@ -1442,8 +1459,10 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; Log.w(LOGTAG, "Mismatched reply"); return; } - if (DEBUG) { - Log.d(LOGTAG, "reply: Action(" + getConstantName(Action.class, "TYPE_", action.mType) + ")"); + if (LOGGING) { + final StringBuilder sb = new StringBuilder("reply: Action("); + sb.append(getConstantName(Action.class, "TYPE_", action.mType)).append(")"); + MozLog.d(MOZLOGTAG, sb.toString()); } switch (action.mType) { case Action.TYPE_REPLACE_TEXT: @@ -2078,7 +2097,7 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; public void onSelectionChange( final IBinder token, final int start, final int end, final boolean causedOnlyByComposition) { // On Gecko or binder thread. - if (DEBUG) { + if (LOGGING) { final StringBuilder sb = new StringBuilder("onSelectionChange("); sb.append(start) .append(", ") @@ -2086,7 +2105,7 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; .append(", ") .append(causedOnlyByComposition) .append(")"); - Log.d(LOGTAG, sb.toString()); + MozLog.d(MOZLOGTAG, sb.toString()); } if (!binderCheckToken(token, /* allowNull */ false)) { @@ -2142,7 +2161,7 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; final int unboundedOldEnd, final boolean causedOnlyByComposition) { // On Gecko or binder thread. - if (DEBUG) { + if (LOGGING) { final StringBuilder sb = new StringBuilder("onTextChange("); debugAppend(sb, text) .append(", ") @@ -2150,7 +2169,7 @@ import org.mozilla.geckoview.SessionTextInput.EditableListener.IMEState; .append(", ") .append(unboundedOldEnd) .append(")"); - Log.d(LOGTAG, sb.toString()); + MozLog.d(MOZLOGTAG, sb.toString()); } if (!binderCheckToken(token, /* allowNull */ false)) { diff --git a/widget/android/GeckoEditableSupport.cpp b/widget/android/GeckoEditableSupport.cpp @@ -36,7 +36,7 @@ #include <android/log.h> #ifdef NIGHTLY_BUILD -static mozilla::LazyLogModule sGeckoEditableSupportLog("GeckoEditableSupport"); +static mozilla::LazyLogModule sGeckoEditableSupportLog("IMEHandler"); # define ALOGIME(...) \ MOZ_LOG(sGeckoEditableSupportLog, LogLevel::Debug, (__VA_ARGS__)) #else