diff --git a/android/java/org/chromium/chrome/browser/externalnav/BraveExternalNavigationHandler.java b/android/java/org/chromium/chrome/browser/externalnav/BraveExternalNavigationHandler.java index 7222ca10f3b..8604ac6f6a1 100644 --- a/android/java/org/chromium/chrome/browser/externalnav/BraveExternalNavigationHandler.java +++ b/android/java/org/chromium/chrome/browser/externalnav/BraveExternalNavigationHandler.java @@ -37,13 +37,18 @@ public class BraveExternalNavigationHandler extends ExternalNavigationHandler { mBraveUphold.CompleteUpholdVerification(params, this); } - /** - * This function will be removed by ASM byte-code patching tool - * and redirected to ExternalNavigationHandler. - */ public @OverrideUrlLoadingResult int clobberCurrentTabWithFallbackUrl( String browserFallbackUrl, ExternalNavigationParams params) { - assert false; - return OverrideUrlLoadingResult.OVERRIDE_WITH_CLOBBERING_TAB; + // Below is an actual code that was used prior to deletion of + // clobberCurrentTabWithFallbackUrl introduced here + // https://chromium.googlesource.com/chromium/src/+/37b5b744bc83f630d3121b46868818bb4e848c2a + if (!params.isMainFrame()) { + return OverrideUrlLoadingResult.NO_OVERRIDE; + } + + if (params.getRedirectHandler() != null) { + params.getRedirectHandler().setShouldNotOverrideUrlLoadingOnCurrentRedirectChain(); + } + return clobberCurrentTab(browserFallbackUrl, params.getReferrerUrl()); } } \ No newline at end of file diff --git a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java index 861c248c121..2331ae22006 100644 --- a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java +++ b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java @@ -29,7 +29,6 @@ public class BytecodeTest { Assert.assertTrue(classExists("org/chromium/chrome/browser/settings/MainSettings")); Assert.assertTrue(classExists("org/chromium/chrome/browser/sync/AndroidSyncSettings")); Assert.assertTrue(classExists("org/chromium/chrome/browser/bookmarks/BookmarkBridge")); - Assert.assertTrue(classExists("org/chromium/components/external_intents/ExternalNavigationHandler")); Assert.assertTrue(classExists("org/chromium/chrome/browser/LaunchIntentDispatcher")); Assert.assertTrue(classExists("org/chromium/chrome/browser/ntp/NewTabPageLayout")); Assert.assertTrue(classExists("org/chromium/chrome/browser/feed/FeedSurfaceCoordinator")); @@ -53,8 +52,6 @@ public class BytecodeTest { Assert.assertTrue( methodExists("org/chromium/chrome/browser/bookmarks/BookmarkBridge", "extensiveBookmarkChangesEnded")); Assert.assertTrue(methodExists("org/chromium/chrome/browser/bookmarks/BookmarkBridge", "createBookmarkItem")); - Assert.assertTrue(methodExists("org/chromium/components/external_intents/ExternalNavigationHandler", - "clobberCurrentTabWithFallbackUrl")); Assert.assertTrue(methodExists("org/chromium/chrome/browser/LaunchIntentDispatcher", "isCustomTabIntent")); Assert.assertTrue(methodExists("org/chromium/chrome/browser/homepage/HomepageManager", "shouldCloseAppWithZeroTabs")); Assert.assertTrue(methodExists("org/chromium/chrome/browser/ntp/NewTabPageLayout", "insertSiteSectionView")); diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java index 1c228962e8d..212a0652654 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java @@ -12,7 +12,6 @@ public class BraveClassAdapter { chain = new BraveMainPreferenceBaseClassAdapter(chain); chain = new BraveAndroidSyncSettingsClassAdapter(chain); chain = new BraveLaunchIntentDispatcherClassAdapter(chain); - chain = new BraveExternalNavigationHandlerClassAdapter(chain); chain = new BraveHomepageManagerClassAdapter(chain); chain = new BraveManageSyncSettingsClassAdapter(chain); chain = new BraveNewTabPageLayoutClassAdapter(chain); diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveExternalNavigationHandlerClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveExternalNavigationHandlerClassAdapter.java deleted file mode 100644 index 0fe3bef09ba..00000000000 --- a/build/android/bytecode/java/org/brave/bytecode/BraveExternalNavigationHandlerClassAdapter.java +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (c) 2020 The Brave Authors. All rights reserved. - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.brave.bytecode; - -import org.objectweb.asm.ClassVisitor; - -public class BraveExternalNavigationHandlerClassAdapter extends BraveClassVisitor { - - static String sBraveExternalNavigationHandlerClassName = - "org/chromium/chrome/browser/externalnav/BraveExternalNavigationHandler"; - - static String sExternalNavigationHandlerClassName = - "org/chromium/components/external_intents/ExternalNavigationHandler"; - - static String sMethodClobberCurrentTabWithFallbackUrl = - "clobberCurrentTabWithFallbackUrl"; - - public BraveExternalNavigationHandlerClassAdapter(ClassVisitor visitor) { - super(visitor); - - deleteMethod(sBraveExternalNavigationHandlerClassName, - sMethodClobberCurrentTabWithFallbackUrl); - makePublicMethod(sExternalNavigationHandlerClassName, - sMethodClobberCurrentTabWithFallbackUrl); - } -} diff --git a/build/android/bytecode/java_sources.gni b/build/android/bytecode/java_sources.gni index 9f06eed03c2..3c1a680a4c8 100644 --- a/build/android/bytecode/java_sources.gni +++ b/build/android/bytecode/java_sources.gni @@ -5,7 +5,6 @@ brave_java_bytecode_files = [ "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveLaunchIntentDispatcherClassAdapter.java", "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveAndroidSyncSettingsClassAdapter.java", "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveEditUrlSuggestionProcessorClassAdapter.java", - "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveExternalNavigationHandlerClassAdapter.java", "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveFeedSurfaceCoordinatorClassAdapter.java", "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveMainPreferenceBaseClassAdapter.java", "../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveManageSyncSettingsClassAdapter.java",