From 9c2b8592804728ae375ab5f88435a5d4d418f4a1 Mon Sep 17 00:00:00 2001 From: quh4gko8 <88831734+quh4gko8@users.noreply.github.com> Date: Fri, 17 Nov 2023 09:20:50 +0000 Subject: [PATCH] Enforce INTERNET permission from calling apps --- ...permission-for-calling-app-by-showin.patch | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 patches/0124-Enforce-Network-permission-for-calling-app-by-showin.patch diff --git a/patches/0124-Enforce-Network-permission-for-calling-app-by-showin.patch b/patches/0124-Enforce-Network-permission-for-calling-app-by-showin.patch new file mode 100644 index 00000000..4a58e6aa --- /dev/null +++ b/patches/0124-Enforce-Network-permission-for-calling-app-by-showin.patch @@ -0,0 +1,73 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: fgei +Date: Thu, 16 Nov 2023 19:19:07 +0000 +Subject: [PATCH] Enforce Network permission for calling app by showing prompt + when not granted + +--- + .../org/chromium/base/ext/CustomOSApiHelpers.java | 15 +++++++++++++++ + .../chrome/browser/LaunchIntentDispatcher.java | 13 +++++++++++++ + 2 files changed, 28 insertions(+) + +diff --git a/base/android/java/src/org/chromium/base/ext/CustomOSApiHelpers.java b/base/android/java/src/org/chromium/base/ext/CustomOSApiHelpers.java +index 2885d83017450..ecabbb8000ba3 100644 +--- a/base/android/java/src/org/chromium/base/ext/CustomOSApiHelpers.java ++++ b/base/android/java/src/org/chromium/base/ext/CustomOSApiHelpers.java +@@ -1,4 +1,19 @@ + package org.chromium.base.ext; + ++import android.app.Activity; ++ ++import java.lang.reflect.InvocationTargetException; ++import java.lang.reflect.Method; ++ + public class CustomOSApiHelpers { ++ ++ public static Boolean doesLaunchedFromPackageHavePermission(Activity activity, String permission) { ++ try { ++ Method method = Activity.class.getDeclaredMethod("doesLaunchedFromPackageHavePermission", String.class); ++ return (Boolean) method.invoke(activity, permission); ++ } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) { ++ return null; ++ } ++ } ++ + } +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 c93adbc8cd83c..428b0caf6ca68 100644 +--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +@@ -4,6 +4,7 @@ + + package org.chromium.chrome.browser; + ++import android.Manifest; + import android.annotation.SuppressLint; + import android.app.Activity; + import android.app.ActivityManager.RecentTaskInfo; +@@ -31,6 +32,7 @@ import org.chromium.base.IntentUtils; + import org.chromium.base.Log; + import org.chromium.base.PackageManagerUtils; + import org.chromium.base.StrictModeContext; ++import org.chromium.base.ext.CustomOSApiHelpers; + import org.chromium.chrome.browser.browserservices.SessionDataHolder; + import org.chromium.chrome.browser.browserservices.ui.splashscreen.trustedwebactivity.TwaSplashController; + import org.chromium.chrome.browser.customtabs.CustomTabActivity; +@@ -160,6 +162,17 @@ public class LaunchIntentDispatcher { + url = IntentHandler.getUrlFromIntent(mIntent); + } + ++ if (mActivity instanceof ChromeLauncherActivity && Boolean.FALSE.equals( ++ CustomOSApiHelpers.doesLaunchedFromPackageHavePermission(mActivity, Manifest.permission.INTERNET))) { ++ Intent redirectedIntent = new Intent(Intent.ACTION_MAIN); ++ redirectedIntent.setClass( ++ ContextUtils.getApplicationContext(), SearchActivity.class); ++ redirectedIntent.putExtra(SearchManager.QUERY, url); ++ redirectedIntent.putExtra(IntentHandler.EXTRA_INCOGNITO_MODE, true); ++ mActivity.startActivity(redirectedIntent); ++ return Action.FINISH_ACTIVITY; ++ } ++ + // Check if a web search Intent is being handled. + if (url == null && tabId == Tab.INVALID_TAB_ID && !incognito + && processWebSearchIntent(mIntent)) {