Changing a setting and immediately restarting (e.g. "Restart now" on the Brave Origin screen) could discard the change; waiting a few seconds avoided it. Pref writes are batched behind a timer and flushed to disk later. The Android restart path SIGKILLs the browser process from a sibling process (BrowserRestartActivity) with no graceful shutdown, so pending prefs are never flushed. Whether a change survived depended on an unrelated write happening to flush the store first, hence the intermittent, single-device reports. Flush local_state and each loaded profile's prefs via CommitPendingWrite() before AttemptRestart(). It is async-to-disk, a no-op when nothing is pending, and the write is atomic. Resolves: https://github.com/brave/brave-browser/issues/56075
87 lines
2.7 KiB
Plaintext
87 lines
2.7 KiB
Plaintext
# Copyright (c) 2022 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("//brave/build/config.gni")
|
|
import("//brave/components/brave_ads/buildflags/buildflags.gni")
|
|
|
|
assert(is_android)
|
|
|
|
source_set("android_browser_process") {
|
|
sources = [
|
|
"brave_feature_util.cc",
|
|
"brave_local_state_android.cc",
|
|
"brave_relaunch_utils.cc",
|
|
"brave_shields_content_settings.cc",
|
|
"brave_shields_content_settings.h",
|
|
"brave_sync_worker.cc",
|
|
"brave_sync_worker.h",
|
|
]
|
|
|
|
deps = [
|
|
"//base",
|
|
"//brave/brave_domains/android:jni_headers",
|
|
"//brave/browser/android/browsing_data",
|
|
"//brave/browser/android/preferences",
|
|
"//brave/browser/android/safe_browsing",
|
|
"//brave/browser/brave_origin/android:jni_headers",
|
|
"//brave/browser/brave_shields",
|
|
"//brave/browser/skus/android:jni_headers",
|
|
"//brave/build/android:jni_headers",
|
|
"//brave/components/brave_ads/buildflags",
|
|
"//brave/components/brave_shields/content/browser",
|
|
"//brave/components/brave_shields/core/browser",
|
|
"//brave/components/brave_shields/core/common",
|
|
"//brave/components/brave_sync",
|
|
"//brave/components/brave_sync:crypto",
|
|
"//brave/components/brave_sync:prefs",
|
|
"//brave/components/brave_sync:sync_service_impl_helper",
|
|
"//brave/components/brave_sync:time_limited_codes",
|
|
"//chrome/android:jni_headers",
|
|
"//chrome/browser:browser_process",
|
|
"//chrome/browser:browser_public_dependencies",
|
|
"//chrome/browser:flags",
|
|
"//chrome/browser/content_settings:content_settings_factory",
|
|
"//chrome/browser/lifetime",
|
|
"//chrome/browser/profiles:profile",
|
|
"//chrome/browser/sync",
|
|
"//chrome/common",
|
|
"//components/content_settings/core/browser",
|
|
"//components/content_settings/core/browser:cookie_settings",
|
|
"//components/ntp_tiles",
|
|
"//components/prefs",
|
|
"//components/sync",
|
|
"//components/translate/core/browser",
|
|
"//components/unified_consent",
|
|
"//components/webui/flags",
|
|
"//url",
|
|
]
|
|
|
|
if (enable_brave_ads) {
|
|
deps += [
|
|
"//brave/browser/brave_ads/android:jni_headers",
|
|
"//brave/components/brave_ads/browser",
|
|
]
|
|
}
|
|
}
|
|
|
|
source_set("tabs_public") {
|
|
public = [ "brave_tab_features.h" ]
|
|
|
|
public_deps = [ "//chrome/browser/android:tabs_public" ]
|
|
}
|
|
|
|
source_set("tabs_impl") {
|
|
visibility = [ "//chrome/browser" ]
|
|
sources = [ "brave_tab_features.cc" ]
|
|
|
|
deps = [
|
|
":tabs_public",
|
|
"//base",
|
|
"//brave/browser/ai_chat",
|
|
"//chrome/browser/profiles:profile",
|
|
"//content/public/browser",
|
|
]
|
|
}
|