Files
Serg b369d9a8d9 [Android][Origin] Flush pending prefs before restart so settings survive an immediate relaunch (#37046)
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
2026-06-06 00:03:48 +02:00

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",
]
}