Skip to content

Commit

Permalink
Disable ChromePreferenceKeyChecker to avoid crashes on Nightly
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexeyBarabash committed Mar 2, 2023
1 parent 6f0d206 commit dbe3003
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 11 deletions.
1 change: 1 addition & 0 deletions android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/password_manager/settings/BravePasswordSettingsBase.java",
"../../brave/android/java/org/chromium/chrome/browser/playlist/PlaylistServiceFactoryAndroid.java",
"../../brave/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java",
"../../brave/android/java/org/chromium/chrome/browser/preferences/BravePreferenceKeyChecker.java",
"../../brave/android/java/org/chromium/chrome/browser/preferences/website/BraveShieldsContentSettings.java",
"../../brave/android/java/org/chromium/chrome/browser/preferences/website/BraveShieldsContentSettingsObserver.java",
"../../brave/android/java/org/chromium/chrome/browser/privacy/settings/BravePrivacySettings.java",
Expand Down
4 changes: 4 additions & 0 deletions android/java/apk_for_test.flags
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,10 @@
*** addOrEditBookmark(...);
}

-keep class org.chromium.chrome.browser.preferences.ChromePreferenceKeyChecker {
*** getInstance(...);
}

-keep class org.chromium.chrome.browser.toolbar.BraveToolbarManager {
public <init>(...);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import static org.chromium.chrome.browser.crypto_wallet.activities.NetworkSelectorActivity.NETWORK_SELECTOR_MODE;
import static org.chromium.ui.base.ViewUtils.dpToPx;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.NotificationChannel;
Expand Down Expand Up @@ -265,11 +264,7 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
private NotificationPermissionController mNotificationPermissionController;
private BraveNewsController mBraveNewsController;

@SuppressLint("VisibleForTests")
public BraveActivity() {
// Disable key checker to avoid asserts on Brave keys in debug
SharedPreferencesManager.getInstance().disableKeyCheckerForTesting();
}
public BraveActivity() {}

@Override
public void onResumeWithNative() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

package org.chromium.chrome.browser.document;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;

Expand All @@ -18,13 +17,9 @@
*/
public class BraveLauncherActivity extends Activity {
@Override
@SuppressLint("VisibleForTests")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Disable key checker to avoid asserts on Brave keys in debug
SharedPreferencesManager.getInstance().disableKeyCheckerForTesting();

BottomToolbarConfiguration.isBottomToolbarEnabled();
BraveHelper.DisableFREDRP();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/* Copyright (c) 2023 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 https://mozilla.org/MPL/2.0/. */

package org.chromium.chrome.browser.preferences;

public class BravePreferenceKeyChecker {
public static ChromePreferenceKeyChecker getInstance() {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,8 @@ public void testClassesExist() throws Exception {
classExists("org/chromium/chrome/browser/tracing/settings/DeveloperSettings"));
Assert.assertTrue(
classExists("org/chromium/chrome/browser/settings/BravePreferenceFragment"));
Assert.assertTrue(
classExists("org/chromium/chrome/browser/preferences/ChromePreferenceKeyChecker"));
}

@Test
Expand Down Expand Up @@ -461,6 +463,9 @@ public void testMethodsExist() throws Exception {
"isVisibleToUser", false, null));
Assert.assertTrue(methodExists("org/chromium/chrome/browser/logo/LogoMediator",
"updateVisibility", true, void.class));
Assert.assertTrue(
methodExists("org/chromium/chrome/browser/preferences/ChromePreferenceKeyChecker",
"getInstance", false, null));
}

@Test
Expand Down
1 change: 1 addition & 0 deletions build/android/bytecode/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ java_binary("java_bytecode_rewriter") {
"//brave/build/android/bytecode/java/org/brave/bytecode/BravePermissionDialogDelegateClassAdapter.java",
"//brave/build/android/bytecode/java/org/brave/bytecode/BravePermissionDialogModelClassAdapter.java",
"//brave/build/android/bytecode/java/org/brave/bytecode/BravePreferenceFragmentClassAdapter.java",
"//brave/build/android/bytecode/java/org/brave/bytecode/BravePreferenceKeyCheckerClassAdapter.java",
"//brave/build/android/bytecode/java/org/brave/bytecode/BravePureJavaExceptionReporterClassAdapter.java",
"//brave/build/android/bytecode/java/org/brave/bytecode/BraveQueryTileSectionClassAdapter.java",
"//brave/build/android/bytecode/java/org/brave/bytecode/BraveReaderModeManagerClassAdapter.java",
Expand Down
6 changes: 6 additions & 0 deletions build/android/bytecode/bytecode_rewriter.gni
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 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 https://mozilla.org/MPL/2.0/.

import("//build/config/python.gni")

brave_bytecode_jars = [
Expand All @@ -16,6 +21,7 @@ brave_bytecode_jars = [
"obj/chrome/browser/locale/delegate_java.javac.jar",
"obj/chrome/browser/notifications/java.javac.jar",
"obj/chrome/browser/partnercustomizations/java.javac.jar",
"obj/chrome/browser/preferences/java.javac.jar",
"obj/chrome/browser/safe_browsing/android/java.javac.jar",
"obj/chrome/browser/search_engines/android/java.javac.jar",
"obj/chrome/browser/site_settings/android/java.javac.jar",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public static ClassVisitor createAdapter(ClassVisitor chain) {
chain = new BravePermissionDialogDelegateClassAdapter(chain);
chain = new BravePermissionDialogModelClassAdapter(chain);
chain = new BravePreferenceFragmentClassAdapter(chain);
chain = new BravePreferenceKeyCheckerClassAdapter(chain);
chain = new BravePureJavaExceptionReporterClassAdapter(chain);
chain = new BraveQueryTileSectionClassAdapter(chain);
chain = new BraveReaderModeManagerClassAdapter(chain);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/* Copyright (c) 2023 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 https://mozilla.org/MPL/2.0/. */

package org.brave.bytecode;

import org.objectweb.asm.ClassVisitor;

public class BravePreferenceKeyCheckerClassAdapter extends BraveClassVisitor {
static String sChromePreferenceKeyCheckerClassName =
"org/chromium/chrome/browser/preferences/ChromePreferenceKeyChecker";

static String sBravePreferenceKeyCheckerClassName =
"org/chromium/chrome/browser/preferences/BravePreferenceKeyChecker";

public BravePreferenceKeyCheckerClassAdapter(ClassVisitor visitor) {
super(visitor);
changeMethodOwner(sChromePreferenceKeyCheckerClassName, "getInstance",
sBravePreferenceKeyCheckerClassName);
}
}

0 comments on commit dbe3003

Please sign in to comment.