diff --git a/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.cc b/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.cc index 134306e3f..8b377597a 100644 --- a/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.cc +++ b/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.cc @@ -1,9 +1,9 @@ diff --git a/chrome/browser/browseros/core/browseros_prefs.cc b/chrome/browser/browseros/core/browseros_prefs.cc new file mode 100644 -index 0000000000000..f37f67aa3aca1 +index 0000000000000..f3a2e43cd7af2 --- /dev/null +++ b/chrome/browser/browseros/core/browseros_prefs.cc -@@ -0,0 +1,73 @@ +@@ -0,0 +1,90 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -13,6 +13,8 @@ index 0000000000000..f37f67aa3aca1 +#include "chrome/browser/ui/actions/chrome_action_id.h" +#include "chrome/common/pref_names.h" +#include "components/pref_registry/pref_registry_syncable.h" ++#include "third_party/skia/include/core/SkColor.h" ++#include "ui/base/mojom/themes.mojom.h" + +namespace browseros { + @@ -57,6 +59,21 @@ index 0000000000000..f37f67aa3aca1 + } +} + ++void SyncDefaultTheme(PrefService* pref_service) { ++ const PrefService::Preference* user_color_pref = ++ pref_service->FindPreference(::prefs::kUserColor); ++ if (user_color_pref && user_color_pref->IsDefaultValue()) { ++ // Blue tonal spot: SkColorSetRGB(140, 171, 228) ++ pref_service->SetInteger(::prefs::kUserColor, ++ static_cast(SkColorSetRGB(140, 171, 228))); ++ pref_service->SetString(::prefs::kCurrentThemeID, ++ "user_color_theme_id"); ++ pref_service->SetInteger( ++ ::prefs::kBrowserColorVariant, ++ static_cast(ui::mojom::BrowserColorVariant::kTonalSpot)); ++ } ++} ++ +const char* GetVisibilityPrefForAction(actions::ActionId id) { + switch (id) { + case kActionSidePanelShowThirdPartyLlm: diff --git a/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.h b/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.h index 46d028ea0..ccd95707a 100644 --- a/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.h +++ b/packages/browseros/chromium_patches/chrome/browser/browseros/core/browseros_prefs.h @@ -1,9 +1,9 @@ diff --git a/chrome/browser/browseros/core/browseros_prefs.h b/chrome/browser/browseros/core/browseros_prefs.h new file mode 100644 -index 0000000000000..88cdbb73caf77 +index 0000000000000..2719852d7d8c6 --- /dev/null +++ b/chrome/browser/browseros/core/browseros_prefs.h -@@ -0,0 +1,76 @@ +@@ -0,0 +1,80 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -67,6 +67,10 @@ index 0000000000000..88cdbb73caf77 +// reflects BrowserOS's default. +void SyncVerticalTabsPref(PrefService* pref_service); + ++// Sets the default BrowserOS theme (blue tonal spot) on first run ++// when the user hasn't customized the theme yet. ++void SyncDefaultTheme(PrefService* pref_service); ++ +// Check if a toolbar action should be shown based on its visibility pref. +// Returns true if: +// - Action has no visibility pref (e.g., Assistant - always visible) diff --git a/packages/browseros/chromium_patches/chrome/browser/themes/BUILD.gn b/packages/browseros/chromium_patches/chrome/browser/themes/BUILD.gn new file mode 100644 index 000000000..5844215ed --- /dev/null +++ b/packages/browseros/chromium_patches/chrome/browser/themes/BUILD.gn @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/themes/BUILD.gn b/chrome/browser/themes/BUILD.gn +index 4924b822aa42e..1fcba3a9c4a6c 100644 +--- a/chrome/browser/themes/BUILD.gn ++++ b/chrome/browser/themes/BUILD.gn +@@ -33,6 +33,7 @@ source_set("themes") { + ] + deps = [ + "//chrome/app/theme:theme_resources", ++ "//chrome/browser/browseros/core:prefs", + "//chrome/browser/new_tab_page/chrome_colors", + "//chrome/browser/search/background", + "//chrome/browser/search/background:constants", diff --git a/packages/browseros/chromium_patches/chrome/browser/themes/theme_service.cc b/packages/browseros/chromium_patches/chrome/browser/themes/theme_service.cc new file mode 100644 index 000000000..3a2572605 --- /dev/null +++ b/packages/browseros/chromium_patches/chrome/browser/themes/theme_service.cc @@ -0,0 +1,20 @@ +diff --git a/chrome/browser/themes/theme_service.cc b/chrome/browser/themes/theme_service.cc +index 0589bacba844a..14bc76e5475f0 100644 +--- a/chrome/browser/themes/theme_service.cc ++++ b/chrome/browser/themes/theme_service.cc +@@ -30,6 +30,7 @@ + #include "base/task/thread_pool.h" + #include "base/trace_event/trace_event.h" + #include "build/build_config.h" ++#include "chrome/browser/browseros/core/browseros_prefs.h" + #include "chrome/browser/extensions/extension_service.h" + #include "chrome/browser/extensions/theme_installed_infobar_delegate.h" + #include "chrome/browser/new_tab_page/chrome_colors/chrome_colors_util.h" +@@ -265,6 +266,7 @@ ThemeService::~ThemeService() = default; + void ThemeService::Init() { + theme_helper_->DCheckCalledOnValidSequence(); + ++ browseros::SyncDefaultTheme(profile_->GetPrefs()); + InitFromPrefs(); + + // ThemeObserver should be constructed before calling