Updated `brave_bytecode_jars`, otherwise bytecode patching wasn't applied
as expected, app crashed with
```
java.lang.IllegalAccessError: Field 'org.chromium.chrome.browser.toolbar.top.TopToolbarCoordinator.mOptionalButtonController' is inaccessible to class 'org.chromium.chrome.browser.toolbar.top.BraveTopToolbarCoordinator'
```
and the test checkSuperName("ToolbarPhone", "BraveToolbarLayoutImpl") were failing
Chromium change:
https://source.chromium.org/chromium/chromium/src/+/ff44f6aed85bd03834121421e2ec8c6add7b7bba
toolbar: Make extensions toolbar UI an independent build target
This work is a follow-up to https://crrev.com/c/7534296.
This CL decouples the Android extensions toolbar UI from the core
toolbar architecture by extracting it into a standalone GN target and
enforcing strict DEPS boundaries.
Historically, extension-specific UI components and their heavyweight
dependencies (e.g., components/thin_webview) were intertwined within the
monolithic //chrome/browser/ui/android/toolbar module. As the extensions
feature set evolves—particularly in the context of Desktop Android—this
coupling risks architectural bloat, blurs domain boundaries, and
increases the potential for circular dependencies.
To establish a scalable, maintainable, and decoupled foundation, this
change implements the following structural improvements:
1. Enforces Strict Dependency Isolation Migrates extension UI sources,
tests, and dependencies into a distinct BUILD.gn under
toolbar/extensions/. Extension-specific includes are purged from the
global toolbar DEPS and localized to the new module's DEPS file,
preventing dependency leakage into the broader UI layer.
2. Optimizes the Build Graph Refactors the primary toolbar target into
core_java. A new facade target, java_group("java"), aggregates core_java
and conditionally includes the extensions module only when
enable_extensions_core is active. This ensures the core toolbar compiles
cleanly on its own, shields non-extension builds from unnecessary
compilation, and preserves existing contracts for upstream targets.
3. Improves Test Encapsulation Segregates the JUnit and instrumentation
tests for extensions into their own respective targets, ensuring test
dependencies and execution are accurately mapped to the isolated module.
By enforcing these strict modular boundaries, we guarantee that
extension dependencies do not pollute the core toolbar's architectural
footprint, significantly clean up the dependency tree, and lay a robust
architectural runway for future Desktop Android extension features.
Bug: None
Test: CQ
Change-Id: I90dc5993c15e0295f08db2b7f1b096de8ce73195
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7532769
101 lines
4.8 KiB
Plaintext
101 lines
4.8 KiB
Plaintext
# 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 = [
|
|
"obj/base/base_cached_flags_java.javac.jar",
|
|
"obj/base/base_shared_preferences_java.javac.jar",
|
|
"obj/brave/android/features/tab_ui/java.javac.jar",
|
|
"obj/brave/android/java/org/chromium/chrome/browser/search_engines/java.javac.jar",
|
|
"obj/brave/browser/download/android/java.javac.jar",
|
|
"obj/brave/browser/notifications/java.javac.jar",
|
|
"obj/brave/browser/ui/android/favicon/java.javac.jar",
|
|
"obj/brave/browser/ui/android/logo/java.javac.jar",
|
|
"obj/brave/browser/ui/android/omnibox/java.javac.jar",
|
|
"obj/brave/browser/ui/android/theme/java.javac.jar",
|
|
"obj/brave/browser/ui/android/toolbar/java.javac.jar",
|
|
"obj/brave/components/browser_ui/notifications/android/java.javac.jar",
|
|
"obj/brave/components/browser_ui/media/android/java.javac.jar",
|
|
"obj/brave/components/browser_ui/site_settings/android/java.javac.jar",
|
|
"obj/brave/components/variations/android/java.javac.jar",
|
|
"obj/chrome/android/base_module_java.javac.jar",
|
|
"obj/chrome/android/chrome_java.javac.jar",
|
|
"obj/chrome/android/features/tab_ui/java.javac.jar",
|
|
"obj/chrome/browser/bookmarks/android/java.javac.jar",
|
|
"obj/chrome/browser/download/android/java.javac.jar",
|
|
"obj/chrome/browser/download/internal/android/java.javac.jar",
|
|
"obj/chrome/browser/flags/java.javac.jar",
|
|
"obj/chrome/browser/hub/internal/java.javac.jar",
|
|
"obj/chrome/browser/hub/factory_java.javac.jar",
|
|
"obj/chrome/browser/incognito/java.javac.jar",
|
|
"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/password_manager/android/java.javac.jar",
|
|
"obj/chrome/browser/preferences/java.javac.jar",
|
|
"obj/chrome/browser/safe_browsing/android/java.javac.jar",
|
|
"obj/chrome/browser/safety_hub/android/java.javac.jar",
|
|
"obj/chrome/browser/search_engines/android/java.javac.jar",
|
|
"obj/chrome/browser/settings/factory_java.javac.jar",
|
|
"obj/chrome/browser/settings/internal_java.javac.jar",
|
|
"obj/chrome/browser/site_settings/android/java.javac.jar",
|
|
"obj/chrome/browser/tabmodel/java.javac.jar",
|
|
"obj/chrome/browser/customtabs/java.javac.jar",
|
|
"obj/chrome/browser/tab_group_sync/java.javac.jar",
|
|
"obj/chrome/browser/tab_ui/android/java.javac.jar",
|
|
"obj/chrome/browser/ui/android/appmenu/internal/java.javac.jar",
|
|
"obj/chrome/browser/ui/android/logo/java.javac.jar",
|
|
"obj/chrome/browser/ui/android/omnibox/java.javac.jar",
|
|
"obj/chrome/browser/ui/android/searchactivityutils/java.javac.jar",
|
|
"obj/chrome/browser/ui/android/theme/java.javac.jar",
|
|
"obj/chrome/browser/ui/android/toolbar/core_java.javac.jar",
|
|
"obj/chrome/browser/ui/android/toolbar/java.javac.jar",
|
|
"obj/chrome/browser/ui/messages/android/java.javac.jar",
|
|
"obj/components/browser_ui/notifications/android/java.javac.jar",
|
|
"obj/components/browser_ui/media/android/java.javac.jar",
|
|
"obj/components/browser_ui/site_settings/android/java.javac.jar",
|
|
"obj/components/embedder_support/android/content_view_java.javac.jar",
|
|
"obj/components/external_intents/android/java.javac.jar",
|
|
"obj/components/minidump_uploader/minidump_uploader_java.javac.jar",
|
|
"obj/components/permissions/android/java.javac.jar",
|
|
"obj/components/signin/public/android/java.javac.jar",
|
|
"obj/components/sync/android/sync_java.javac.jar",
|
|
"obj/components/variations/android/variations_java.javac.jar",
|
|
"obj/chrome/browser/language/android/base_module_java.javac.jar",
|
|
]
|
|
|
|
template("brave_bytecode_rewriter") {
|
|
_rebased_build_config = rebase_path(invoker.build_config, root_build_dir)
|
|
_java_bytecode_rewriter_input_jar = invoker._unprocessed_jar_path
|
|
|
|
action_with_pydeps(target_name) {
|
|
script = "//brave/build/android/gyp/bytecode_processor.py"
|
|
_bytecode_rewriter_script =
|
|
"$root_build_dir/bin/helper/java_bytecode_rewriter"
|
|
deps = invoker._unprocessed_jar_deps + [ "//brave/build/android/bytecode:java_bytecode_rewriter($default_toolchain)" ]
|
|
if (defined(invoker.deps)) {
|
|
deps += invoker.deps
|
|
}
|
|
inputs = [
|
|
_bytecode_rewriter_script,
|
|
_java_bytecode_rewriter_input_jar,
|
|
]
|
|
outputs = [ invoker._bytecode_rewriter_output_jar ]
|
|
args = [
|
|
"--script",
|
|
rebase_path(_bytecode_rewriter_script, root_build_dir),
|
|
"--input-jar",
|
|
rebase_path(_java_bytecode_rewriter_input_jar, root_build_dir),
|
|
"--output-jar",
|
|
rebase_path(invoker._bytecode_rewriter_output_jar, root_build_dir),
|
|
"--sdk-classpath-jars",
|
|
"@FileArg($_rebased_build_config:sdk_jars)",
|
|
"--extra-classpath-jars",
|
|
"@FileArg($_rebased_build_config:javac_full_classpath)",
|
|
]
|
|
}
|
|
}
|