157 lines
7.2 KiB
Diff
157 lines
7.2 KiB
Diff
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|
Date: Sat, 19 Mar 2022 10:53:24 +0100
|
|
Subject: Dictionary suggestions for the Omnibox
|
|
|
|
Revert "Disable Dictionary suggestions for the Omnibox"
|
|
|
|
This reverts commit d3ec2b2d25066ec089f8351a44b919ded4270e83.
|
|
|
|
Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html
|
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|
---
|
|
chrome/android/java/res/layout/url_bar.xml | 1 +
|
|
.../browser/omnibox/LocationBarMediator.java | 21 ++++++++++++---
|
|
.../chrome/browser/omnibox/UrlBar.java | 26 +++++++++++++++++++
|
|
.../browser/omnibox/UrlBarViewBinder.java | 1 +
|
|
4 files changed, 45 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml
|
|
--- a/chrome/android/java/res/layout/url_bar.xml
|
|
+++ b/chrome/android/java/res/layout/url_bar.xml
|
|
@@ -16,6 +16,7 @@ found in the LICENSE file.
|
|
android:singleLine="true"
|
|
android:imeOptions="actionGo|flagNoExtractUi|flagNoFullscreen"
|
|
android:textAppearance="@style/TextAppearance.SearchBoxText"
|
|
+ android:inputType="textUri"
|
|
android:hint="@string/omnibox_empty_hint"
|
|
android:textAlignment="viewStart"
|
|
android:importantForAutofill="no"
|
|
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
|
|
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
|
|
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
|
|
@@ -1007,7 +1007,7 @@ class LocationBarMediator
|
|
// Existing text (e.g. if the user pasted via the fakebox) from the fake box
|
|
// should be restored after toggling the focus.
|
|
if (mCurrentInput != null && !mCurrentInput.getUserText().isEmpty()) {
|
|
- beginOrResumeInput(/* activateNewSession= */ false);
|
|
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
|
|
}
|
|
}
|
|
|
|
@@ -1052,7 +1052,7 @@ class LocationBarMediator
|
|
*/
|
|
@EnsuresNonNullIf("mCurrentInput")
|
|
@VisibleForTesting
|
|
- void beginOrResumeInput(boolean activateNewSession) {
|
|
+ void beginOrResumeInput(boolean activateNewSession, boolean wasFocus) {
|
|
// Do not instantiate a new ephemeral session unless we're activating it as well.
|
|
var session = FuseboxSessionState.from(mLocationBarDataProvider);
|
|
|
|
@@ -1087,6 +1087,19 @@ class LocationBarMediator
|
|
mStatusCoordinator.setSiteSearchDataSupplier(mCurrentInput.getSiteSearchDataSupplier());
|
|
|
|
UrlBarData data = UrlBarData.forNonUrlText(mCurrentInput.getUserText());
|
|
+ if (wasFocus) {
|
|
+ data = mLocationBarDataProvider.getUrlBarData();
|
|
+ GURL url = mLocationBarDataProvider.getUrlBarData().url;
|
|
+ if (url != null && mTemplateUrlServiceSupplier.get() != null) {
|
|
+ String searchParams =
|
|
+ mTemplateUrlServiceSupplier.get().getSearchQueryForUrl(url);
|
|
+ if (searchParams != null && !searchParams.isEmpty()) {
|
|
+ mCurrentInput.setUserText(searchParams);
|
|
+ data = UrlBarData.forUrlAndText(data.url, data.displayText, searchParams);
|
|
+ }
|
|
+ }
|
|
+ mCurrentInput.setSelection(0, Integer.MAX_VALUE);
|
|
+ }
|
|
mUrlCoordinator.setUrlBarData(
|
|
data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection());
|
|
|
|
@@ -1162,7 +1175,7 @@ class LocationBarMediator
|
|
// This call is permitted to happen before anyone else is activated, and
|
|
// must be called before everyone else cleans up.
|
|
if (hasFocus) {
|
|
- beginOrResumeInput(/* activateNewSession= */ true);
|
|
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ true);
|
|
} else {
|
|
endInputInternal();
|
|
}
|
|
@@ -2065,7 +2078,7 @@ class LocationBarMediator
|
|
}
|
|
|
|
// Wait for the Url focus change before refreshing autocomplete.
|
|
- beginOrResumeInput(/* activateNewSession= */ true);
|
|
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ false);
|
|
}
|
|
|
|
/**
|
|
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
|
|
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
|
|
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
|
|
@@ -11,6 +11,7 @@ import android.graphics.Canvas;
|
|
import android.graphics.Paint;
|
|
import android.graphics.Rect;
|
|
import android.os.Build;
|
|
+import android.os.Handler;
|
|
import android.os.SystemClock;
|
|
import android.text.Editable;
|
|
import android.text.InputType;
|
|
@@ -57,6 +58,7 @@ import org.chromium.components.browser_ui.util.FirstDrawDetector;
|
|
import org.chromium.components.omnibox.OmniboxFeatures;
|
|
import org.chromium.ui.KeyboardVisibilityDelegate;
|
|
import org.chromium.ui.base.KeyNavigationUtil;
|
|
+import org.chromium.ui.base.DeviceFormFactor;
|
|
import org.chromium.ui.display.DisplayAndroid;
|
|
import org.chromium.ui.display.DisplayUtil;
|
|
|
|
@@ -112,6 +114,7 @@ public class UrlBar extends AutocompleteEditText {
|
|
private boolean mFocusEventEmitted;
|
|
private boolean mAllowFocus = true;
|
|
private boolean mAllowMultilineInput;
|
|
+ private boolean mPendingSelectAll;
|
|
private boolean mCurrentInputCanBeWrapped;
|
|
|
|
private boolean mPendingScroll;
|
|
@@ -335,6 +338,29 @@ public class UrlBar extends AutocompleteEditText {
|
|
mPendingScroll = false;
|
|
}
|
|
fixupTextDirection();
|
|
+
|
|
+ if (mPendingSelectAll) {
|
|
+ UrlBar sender = this;
|
|
+ new Handler().post(new Runnable() {
|
|
+ @Override
|
|
+ public void run() {
|
|
+ sender.selectAll();
|
|
+ mPendingSelectAll = false;
|
|
+ }
|
|
+ });
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void selectAll() {
|
|
+ if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext()))
|
|
+ mPendingSelectAll = true;
|
|
+ super.selectAll();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public int getAutofillType() {
|
|
+ return AUTOFILL_TYPE_NONE;
|
|
}
|
|
|
|
@Override
|
|
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
|
|
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
|
|
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
|
|
@@ -100,6 +100,7 @@ class UrlBarViewBinder {
|
|
selectionRange = Range.create(textLength, textLength);
|
|
}
|
|
view.setSelection(selectionRange.getLower(), selectionRange.getUpper());
|
|
+ view.selectAll();
|
|
view.requestAccessibilityFocus();
|
|
}
|
|
} else if (UrlBarProperties.TEXT_COLOR.equals(propertyKey)) {
|
|
--
|