Skip to content

Commit

Permalink
Enforce INTERNET permission from calling apps
Browse files Browse the repository at this point in the history
  • Loading branch information
quh4gko8 committed Nov 17, 2023
1 parent 7346ec3 commit 9c2b859
Showing 1 changed file with 73 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: fgei <fgei@gmail.com>
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)) {

0 comments on commit 9c2b859

Please sign in to comment.