LeOSium_webview/mulch/patches/0001-Vanadium/0090-Handle-web-search-acti...

69 lines
3.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: fgei <fgei@gmail.com>
Date: Wed, 28 Sep 2022 05:37:00 +0200
Subject: [PATCH] Handle web search action in browser
---
.../src/org/chromium/base/PackageManagerUtils.java | 10 ++++++++++
chrome/android/java/AndroidManifest.xml | 4 ++++
.../chrome/browser/LaunchIntentDispatcher.java | 3 ++-
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/base/android/java/src/org/chromium/base/PackageManagerUtils.java b/base/android/java/src/org/chromium/base/PackageManagerUtils.java
index 2d1661ee534f6..2c983646ab42b 100644
--- a/base/android/java/src/org/chromium/base/PackageManagerUtils.java
+++ b/base/android/java/src/org/chromium/base/PackageManagerUtils.java
@@ -85,6 +85,16 @@ public class PackageManagerUtils {
return canResolveActivity(intent, 0);
}
+ public static boolean canOnlyOthersResolveActivity(Intent intent, int flags) {
+ for (ResolveInfo ri: queryIntentActivities(intent, flags)) {
+ if (ContextUtils.getApplicationContext()
+ .getPackageName().equals(ri.activityInfo.packageName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
/**
* @return Intent to query a list of installed home launchers.
*/
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
index fba6543bde641..31feb44011a56 100644
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -345,6 +345,10 @@ by a child template that "extends" this file.
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
+ <intent-filter> <!-- DOWNSTREAM -->
+ <action android:name="android.intent.action.WEB_SEARCH" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter> <!-- DOWNSTREAM -->
<intent-filter>
<action android:name="com.sec.android.airview.HOVER" />
</intent-filter>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
index f06f00dcfbe3d..dc43814b49142 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -202,6 +202,7 @@ public class LaunchIntentDispatcher {
String query = null;
final String action = intent.getAction();
if (Intent.ACTION_SEARCH.equals(action)
+ || Intent.ACTION_WEB_SEARCH.equals(action)
|| MediaStore.INTENT_ACTION_MEDIA_SEARCH.equals(action)) {
query = IntentUtils.safeGetStringExtra(intent, SearchManager.QUERY);
}
@@ -215,7 +216,7 @@ public class LaunchIntentDispatcher {
searchIntent.putExtra(SearchManager.QUERY, query);
try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
- if (PackageManagerUtils.canResolveActivity(
+ if (PackageManagerUtils.canOnlyOthersResolveActivity(
searchIntent, PackageManager.GET_RESOLVED_FILTER)) {
mActivity.startActivity(searchIntent);
} else {