Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62eeb8fd authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Browser: Update to 129.0.6668.90

parent 876d4456
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
FROM ubuntu:20.04

ENV CHROMIUM_DIR "/srv/chromium"
ENV CHROMIUM_VER "129.0.6668.71"
ENV CHROMIUM_VER "129.0.6668.90"

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive \
+3 −1
Original line number Diff line number Diff line
#!/bin/bash

branch="v129.0.6668.71-385912cca32ce2d15a3e295f79d5c4dc3a6f7785"
branch="d4e0398fed306a35df814f6217fe53099032af50"
if [ -d cromite ]; then
    cd cromite
    git fetch origin $branch
@@ -10,6 +10,8 @@ else
    git clone https://gitlab.e.foundation/e/os/cromite.git -b $branch cromite --depth=1
fi

rm -rf cromite_patches/*

cromite_patches_list=$(cat "cromite_patches_list.txt")
for file in $cromite_patches_list; do
    cp cromite/build/patches/$file "cromite_patches/$file"
+26 −3
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ Subject: Add custom tab intents privacy option

Add custom tab intents privacy option and force
open external links in incognito flag.
Use the CCT ephemeral mode.

Flags are mutually exclusive.

@@ -14,14 +15,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 .../java/res/xml/privacy_preferences.xml      | 10 ++++++++
 .../browser/LaunchIntentDispatcher.java       | 21 ++++++++++++++++
 .../customtabs/CustomTabsConnection.java      |  1 +
 .../IncognitoCustomTabIntentDataProvider.java |  6 +++++
 .../IncognitoCustomTabIntentDataProvider.java | 14 +++++++++++
 .../privacy/settings/PrivacySettings.java     | 24 +++++++++++++++++++
 .../chrome/browser/tab/TabAssociatedApp.java  |  6 ++++-
 .../strings/android_chrome_strings.grd        | 14 +++++++++++
 .../OriginVerifier.java                       |  5 ++++
 .../core/common/language_experiments.cc       |  1 +
 .../add-custom-tab-intents-privacy-option.inc |  1 +
 10 files changed, 88 insertions(+), 1 deletion(-)
 10 files changed, 96 insertions(+), 1 deletion(-)
 create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc

diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -130,6 +131,28 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco
         return ChromeFeatureList.sCctIncognitoAvailableToThirdParty.isEnabled();
     }
 
@@ -216,6 +222,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
     }
 
     public static boolean isValidIncognitoIntent(Intent intent) {
+        if (ContextUtils.getAppSharedPreferences()
+                .getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false)) {
+            return true;
+        }
         if (!isIncognitoRequested(intent)) return false;
         var session = CustomTabsSessionToken.getSessionTokenFromIntent(intent);
         if (isIntentFromThirdPartyAllowed()
@@ -326,6 +336,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
 
     @Override
     public @CustomTabProfileType int getCustomTabMode() {
+        if (ContextUtils.getAppSharedPreferences()
+                .getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false)) {
+            return CustomTabProfileType.EPHEMERAL;
+        }
         return CustomTabProfileType.INCOGNITO;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -220,7 +243,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
+        Open external links in incognito
+      </message>
+      <message name="IDS_OPEN_EXTERNAL_LINKS_INCOGNITO_SUMMARY" desc="Summary text for 'Open external links in incognito' settings-privacy option.">
+        Force the opening of all external links in incognito mode. Caution: there is only one incognito profile.
+        Force the opening of all external links in incognito mode and uses the CCT ephemeral mode. Caution: there is only one incognito profile.
+      </message>
       <!-- Usage Stats strings -->
       <message name="IDS_USAGE_STATS_CONSENT_TITLE" desc="Title for activity authorizing Digital Wellbeing to access Chrome usage data">
+125 −5
Original line number Diff line number Diff line
@@ -3,20 +3,29 @@ Date: Tue, 25 May 2021 19:46:14 +0200
Subject: Add flag to disable external intent requests

Adds a new flag that allows to control the switch with same name;
when flag is disabled no external intent will ever be allowed, for any URL.
when flag is disabled no external intent will ever be allowed,
for any URL except for the tel: schema.
This also reverts commit b710cefb53b558a8bcd884f6baf0229ba4225721 and
enables IntentBlockExternalFormRedirectsNoGesture.

License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
 .../java/res/xml/privacy_preferences.xml      |  7 +++-
 .../ExternalNavigationDelegateImpl.java       |  3 +-
 .../ExternalNavigationDelegateImpl.java       |  4 ++-
 .../cromite/sAllowExternalIntentRequests.java | 33 +++++++++++++++++++
 ...g-to-disable-external-intent-requests.grdp |  9 +++++
 .../android/external_intents_features.cc      |  7 +++-
 .../android/external_intents_features.h       |  1 +
 .../ExternalIntentsFeatures.java              |  6 ++++
 .../ExternalNavigationHandler.java            | 21 ++++++++++++
 ...ag-to-disable-external-intent-requests.inc | 13 ++++++++
 ...t-Delete-block-external-form-redirects.inc | 15 +++++++++
 ...ag-to-disable-external-intent-requests.inc |  3 ++
 6 files changed, 66 insertions(+), 2 deletions(-)
 11 files changed, 116 insertions(+), 3 deletions(-)
 create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAllowExternalIntentRequests.java
 create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-flag-to-disable-external-intent-requests.grdp
 create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc
 create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc
 create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.inc

diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -47,11 +56,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
 import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.tab.EmptyTabObserver;
 import org.chromium.chrome.browser.tab.Tab;
@@ -103,7 +104,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@@ -103,7 +104,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
 
     @Override
     public boolean shouldDisableExternalIntentRequestsForUrl(GURL url) {
-        return false;
+        if ("tel".equals(url.getScheme())) return false;
+        return !sAllowExternalIntentRequests.getInstance().isEnabled();
     }
 
@@ -105,9 +115,99 @@ new file mode 100644
+        Allow forward URL requests to external intents
+    </message>
+    <message name="IDS_ALLOW_EXTERNAL_INTENT_REQUESTS_SUMMARY" desc="">
+        If disabled, URL requests will never allow redirection to an external intent, such as open application or dialer. Caution: since no verification is possible on the information, allows linkage between browser browsing and activity on the application.
+        If disabled, URL requests will never allow redirection to an external intent, such as open application. Caution: since no verification is possible on the information, allows linkage between browser browsing and activity on the application.
+    </message>
+</grit-part>
diff --git a/components/external_intents/android/external_intents_features.cc b/components/external_intents/android/external_intents_features.cc
--- a/components/external_intents/android/external_intents_features.cc
+++ b/components/external_intents/android/external_intents_features.cc
@@ -27,7 +27,6 @@ namespace {
 const base::Feature* kFeaturesExposedToJava[] = {
     &kExternalNavigationDebugLogs, &kBlockFrameRenavigations,
     &kBlockIntentsToSelf, &kTrustedClientGestureBypass};
-
 }  // namespace
 
 // Alphabetical:
@@ -48,7 +47,13 @@ BASE_FEATURE(kTrustedClientGestureBypass,
              "TrustedClientGestureBypass",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
+CROMITE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture,
+                "IntentBlockExternalFormRedirectsNoGesture",
+                base::FEATURE_ENABLED_BY_DEFAULT);
+
 static jlong JNI_ExternalIntentsFeatures_GetFeature(JNIEnv* env, jint ordinal) {
+  if (ordinal == -1)
+    return reinterpret_cast<jlong>(&kIntentBlockExternalFormRedirectsNoGesture);
   return reinterpret_cast<jlong>(kFeaturesExposedToJava[ordinal]);
 }
 
diff --git a/components/external_intents/android/external_intents_features.h b/components/external_intents/android/external_intents_features.h
--- a/components/external_intents/android/external_intents_features.h
+++ b/components/external_intents/android/external_intents_features.h
@@ -9,6 +9,7 @@
 
 namespace external_intents {
 
+BASE_DECLARE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture);
 BASE_DECLARE_FEATURE(kExternalNavigationDebugLogs);
 BASE_DECLARE_FEATURE(kBlockFrameRenavigations);
 BASE_DECLARE_FEATURE(kBlockIntentsToSelf);
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
@@ -18,6 +18,12 @@ import org.chromium.base.Features;
  */
 @JNINamespace("external_intents")
 public class ExternalIntentsFeatures extends Features {
+    public static final String INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME =
+            "IntentBlockExternalFormRedirectsNoGesture";
+
+    public static final ExternalIntentsFeatures INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE =
+            new ExternalIntentsFeatures(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME);
+
     public static final String EXTERNAL_NAVIGATION_DEBUG_LOGS_NAME = "ExternalNavigationDebugLogs";
     public static final String BLOCK_FRAME_RENAVIGATIONS_NAME = "BlockFrameRenavigations3";
     public static final String BLOCK_INTENTS_TO_SELF_NAME = "BlockIntentsToSelf";
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
@@ -1560,6 +1560,12 @@ public class ExternalNavigationHandler {
                 || ignoreBackForwardNav(params);
     }
 
+    /** Wrapper of check against the feature to support overriding for testing. */
+    @VisibleForTesting
+    boolean blockExternalFormRedirectsWithoutGesture() {
+        return ExternalIntentsFeatures.INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE.isEnabled();
+    }
+
     private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal(
             ExternalNavigationParams params,
             Intent targetIntent,
@@ -1623,6 +1629,21 @@ public class ExternalNavigationHandler {
             return OverrideUrlLoadingResult.forNoOverride();
         }
 
+        // http://crbug.com/839751: Require user gestures for form submits to external
+        //                          protocols.
+        // TODO(tedchoc): Turn this on by default once we verify this change does
+        //                not break the world.
+        int pageTransitionCore = params.getPageTransition() & PageTransition.CORE_MASK;
+        boolean isFormSubmit = pageTransitionCore == PageTransition.FORM_SUBMIT;
+        boolean isRedirectFromFormSubmit = isFormSubmit && params.isRedirect();
+        if (isRedirectFromFormSubmit && !incomingIntentRedirect && !params.hasUserGesture()
+                && blockExternalFormRedirectsWithoutGesture()) {
+            if (debug()) {
+                Log.i(TAG, "Incoming form intent attempting to redirect without user gesture");
+            }
+            return OverrideUrlLoadingResult.forNoOverride();
+        }
+
         if (hasInternalScheme(params.getUrl(), targetIntent)
                 || hasContentScheme(params.getUrl(), targetIntent)
                 || hasFileSchemeInIntentURI(params.getUrl(), targetIntent)) {
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc
new file mode 100644
--- /dev/null
@@ -126,6 +226,26 @@ new file mode 100644
+#endif
+
+#endif
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc b/cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc
@@ -0,0 +1,15 @@
+#if BUILDFLAG(IS_ANDROID)
+
+#ifdef FLAG_SECTION
+
+    {"block-external-form-redirects-no-gesture",
+     "Block intents from form submissions without user gesture",
+     "Require a user gesture that triggered a form submission in order to "
+     "allow for redirecting to an external intent.",
+     kOsAndroid,
+     FEATURE_VALUE_TYPE(
+         external_intents::kIntentBlockExternalFormRedirectsNoGesture)},
+
+#endif
+
+#endif
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.inc
new file mode 100644
--- /dev/null
+12 −5
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 chrome/app/generated_resources.grd            |  10 +
 chrome/browser/after_startup_task_utils.cc    |   4 +
 chrome/browser/browser_process.h              |   6 +
 chrome/browser/browser_process_impl.cc        |  21 ++
 chrome/browser/browser_process_impl.cc        |  28 ++
 chrome/browser/browser_process_impl.h         |   2 +
 chrome/browser/chrome_browser_main.cc         |   3 +
 chrome/browser/flags/BUILD.gn                 |   3 +
@@ -51,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 .../browser/subresource_filter_features.cc    | 116 +-------
 .../core/browser/verified_ruleset_dealer.cc   |   4 +
 .../core/common/indexed_ruleset.cc            |   5 +-
 39 files changed, 1254 insertions(+), 129 deletions(-)
 39 files changed, 1261 insertions(+), 129 deletions(-)
 create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
 create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
 create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
@@ -214,7 +214,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 
+    <string name="adblock_on">Autoupdate enabled</string>
+    <string name="adblock_off">Autoupdate disabled</string>
+    <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
+    <string name="adblock_help_url">https://github.com/uazo/cromite/blob/master/docs/BROMITE_LEGACY_ADBLOCK.md</string>
+
     <string name="proxy_title">Proxy configuration</string>
     <string name="proxy_url">chrome://proxy</string>
@@ -511,7 +511,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -1197,6 +1197,27 @@ BrowserProcessImpl::component_updater() {
@@ -1197,6 +1197,34 @@ BrowserProcessImpl::component_updater() {
   return component_updater_.get();
 }
 
@@ -526,6 +526,13 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
+  std::unique_ptr<component_updater::UpdateScheduler> scheduler =
+      std::make_unique<component_updater::TimerUpdateScheduler>();
+
+  auto adblock_updater_url =
+    local_state()->GetString(prefs::kAdBlockFiltersURL);
+  if (base::StartsWith(adblock_updater_url,
+        "https://www.bromite.org", base::CompareCase::INSENSITIVE_ASCII)) {
+    local_state()->SetString(prefs::kAdBlockFiltersURL, "about:blank");
+  }
+
+  adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
+          g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
+          std::move(scheduler),
@@ -678,7 +685,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
 
+  registry->RegisterBooleanPref(prefs::kAdBlockEnabled, false);
+  registry->RegisterStringPref(prefs::kAdBlockFiltersURL,
+    "https://www.bromite.org/filters/filters.dat");
+    "about:blank");
+
   // Static auth params
   registry->RegisterStringPref(prefs::kAuthSchemes,
Loading