Bug 1266683 - Part 4 - Forward private browsing state to GeckoInputConnection and use it there. r=jchen

MozReview-Commit-ID: 4BxZ9HyzDh2

--HG--
extra : rebase_source : 53312aa13caa79dd20e9d04b556e19a9750cfd44
This commit is contained in:
Jan Henning 2017-08-01 20:18:05 +02:00
parent 641e43da0b
commit 9983e4f87d
5 changed files with 17 additions and 7 deletions

View File

@ -15,7 +15,8 @@ interface IGeckoEditableParent {
void notifyIME(IGeckoEditableChild child, int type);
// Notify a change in editor state or type.
void notifyIMEContext(int state, String typeHint, String modeHint, String actionHint);
void notifyIMEContext(int state, String typeHint, String modeHint, String actionHint,
boolean inPrivateBrowsing);
// Notify a change in editor selection.
void onSelectionChange(IBinder token, int start, int end);

View File

@ -1127,12 +1127,14 @@ final class GeckoEditable extends IGeckoEditableParent.Stub
@Override // IGeckoEditableParent
public void notifyIMEContext(final int state, final String typeHint,
final String modeHint, final String actionHint) {
final String modeHint, final String actionHint,
final boolean inPrivateBrowsing) {
// On Gecko or binder thread.
if (DEBUG) {
Log.d(LOGTAG, "notifyIMEContext(" +
getConstantName(GeckoEditableListener.class, "IME_STATE_", state) +
", \"" + typeHint + "\", \"" + modeHint + "\", \"" + actionHint + "\")");
", \"" + typeHint + "\", \"" + modeHint + "\", \"" + actionHint + "\", " +
"inPrivateBrowsing=" + inPrivateBrowsing + ")");
}
// Don't check token for notifyIMEContext, because the calls all come
@ -1145,7 +1147,7 @@ final class GeckoEditable extends IGeckoEditableParent.Stub
if (mListener == null) {
return;
}
mListener.notifyIMEContext(state, typeHint, modeHint, actionHint);
mListener.notifyIMEContext(state, typeHint, modeHint, actionHint, inPrivateBrowsing);
}
});
}

View File

@ -169,7 +169,7 @@ final class GeckoEditableChild extends JNIObject implements IGeckoEditableChild
}
try {
mEditableParent.notifyIMEContext(state, typeHint, modeHint, actionHint);
mEditableParent.notifyIMEContext(state, typeHint, modeHint, actionHint, inPrivateBrowsing);
} catch (final RemoteException e) {
Log.e(LOGTAG, "Remote call failed", e);
}

View File

@ -37,7 +37,7 @@ interface GeckoEditableListener {
int IME_STATE_PLUGIN = 3;
void notifyIME(int type);
void notifyIMEContext(int state, String typeHint, String modeHint, String actionHint);
void notifyIMEContext(int state, String typeHint, String modeHint, String actionHint, boolean inPrivateBrowsing);
void onSelectionChange();
void onTextChange();
void onDefaultKeyEvent(KeyEvent event);

View File

@ -65,6 +65,7 @@ class GeckoInputConnection
private String mIMETypeHint = "";
private String mIMEModeHint = "";
private String mIMEActionHint = "";
private boolean mInPrivateBrowsing;
private boolean mFocused;
private String mCurrentInputMethod = "";
@ -609,6 +610,10 @@ class GeckoInputConnection
outAttrs.actionLabel = mIMEActionHint;
}
if (mInPrivateBrowsing) {
outAttrs.imeOptions |= InputMethods.IME_FLAG_NO_PERSONALIZED_LEARNING;
}
Context context = getView().getContext();
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
if (Math.min(metrics.widthPixels, metrics.heightPixels) > INLINE_IME_MIN_DISPLAY_SIZE) {
@ -938,7 +943,8 @@ class GeckoInputConnection
}
@Override
public void notifyIMEContext(int state, String typeHint, String modeHint, String actionHint) {
public void notifyIMEContext(int state, String typeHint, String modeHint, String actionHint,
boolean inPrivateBrowsing) {
// For some input type we will use a widget to display the ui, for those we must not
// display the ime. We can display a widget for date and time types and, if the sdk version
// is 11 or greater, for datetime/month/week as well.
@ -965,6 +971,7 @@ class GeckoInputConnection
mIMETypeHint = (typeHint == null) ? "" : typeHint;
mIMEModeHint = (modeHint == null) ? "" : modeHint;
mIMEActionHint = (actionHint == null) ? "" : actionHint;
mInPrivateBrowsing = inPrivateBrowsing;
// These fields are reset here and will be updated when restartInput is called below
mUpdateRequest = null;