[cr149] BrowserListObserver deleted
All classes are being migrated to BrowserCollectionObserver. Chromium changes: https://chromium.googlesource.com/chromium/src/+/2ebf7353bb2535b6121d1a26340d3f4e74046e42 commit 2ebf7353bb2535b6121d1a26340d3f4e74046e42 Author: Thomas Lukaszewicz <tluk@chromium.org> Date: Tue Apr 14 21:51:30 2026 -0700 [bedrock] Remove BrowserListObserver Bug: 431671320 Change-Id: Iff946bf520ab44049c855d91576ef53ca1916e00 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7744448 Reviewed-by: Qikai Zhong <qikaizhong@microsoft.com> Commit-Queue: Thomas Lukaszewicz <tluk@chromium.org> Cr-Commit-Position: refs/heads/main@{#1614935}
This commit is contained in:
+8
-10
@@ -21,7 +21,6 @@
|
||||
#include "base/no_destructor.h"
|
||||
#include "base/task/sequenced_task_runner.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_window.h"
|
||||
#include "chrome/browser/ui/browser_window/public/global_browser_collection.h"
|
||||
#include "ui/aura/window.h"
|
||||
@@ -38,13 +37,12 @@ ApplicationStateMonitor* ApplicationStateMonitor::GetInstance() {
|
||||
}
|
||||
|
||||
ApplicationStateMonitorLinux::ApplicationStateMonitorLinux() {
|
||||
BrowserList::AddObserver(this);
|
||||
OnBrowserSetLastActive(nullptr);
|
||||
browser_collection_observation_.Observe(
|
||||
GlobalBrowserCollection::GetInstance());
|
||||
OnBrowserActivated(nullptr);
|
||||
}
|
||||
|
||||
ApplicationStateMonitorLinux::~ApplicationStateMonitorLinux() {
|
||||
BrowserList::RemoveObserver(this);
|
||||
}
|
||||
ApplicationStateMonitorLinux::~ApplicationStateMonitorLinux() = default;
|
||||
|
||||
bool ApplicationStateMonitorLinux::IsBrowserActive() const {
|
||||
x11::Window x11_window = x11::Window::None;
|
||||
@@ -74,8 +72,8 @@ bool ApplicationStateMonitorLinux::IsBrowserActive() const {
|
||||
return found_foreground;
|
||||
}
|
||||
|
||||
void ApplicationStateMonitorLinux::OnBrowserSetLastActive(
|
||||
Browser* /*browser*/) {
|
||||
void ApplicationStateMonitorLinux::OnBrowserActivated(
|
||||
BrowserWindowInterface* /*browser*/) {
|
||||
base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(
|
||||
@@ -83,8 +81,8 @@ void ApplicationStateMonitorLinux::OnBrowserSetLastActive(
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
}
|
||||
|
||||
void ApplicationStateMonitorLinux::OnBrowserNoLongerActive(
|
||||
Browser* /*browser*/) {
|
||||
void ApplicationStateMonitorLinux::OnBrowserDeactivated(
|
||||
BrowserWindowInterface* /*browser*/) {
|
||||
base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(
|
||||
|
||||
+10
-5
@@ -7,13 +7,16 @@
|
||||
#define BRAVE_BROWSER_BRAVE_ADS_APPLICATION_STATE_APPLICATION_STATE_MONITOR_APPLICATION_STATE_MONITOR_LINUX_H_
|
||||
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "base/scoped_observation.h"
|
||||
#include "brave/components/brave_ads/browser/application_state/application_state_monitor.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_collection_observer.h"
|
||||
|
||||
class BrowserCollection;
|
||||
|
||||
namespace brave_ads {
|
||||
|
||||
class ApplicationStateMonitorLinux final : public ApplicationStateMonitor,
|
||||
public BrowserListObserver {
|
||||
public BrowserCollectionObserver {
|
||||
public:
|
||||
ApplicationStateMonitorLinux();
|
||||
|
||||
@@ -24,13 +27,15 @@ class ApplicationStateMonitorLinux final : public ApplicationStateMonitor,
|
||||
~ApplicationStateMonitorLinux() override;
|
||||
|
||||
private:
|
||||
// BrowserListObserver:
|
||||
void OnBrowserSetLastActive(Browser* browser) override;
|
||||
void OnBrowserNoLongerActive(Browser* browser) override;
|
||||
// BrowserCollectionObserver:
|
||||
void OnBrowserActivated(BrowserWindowInterface* browser) override;
|
||||
void OnBrowserDeactivated(BrowserWindowInterface* browser) override;
|
||||
|
||||
// ApplicationStateMonitor:
|
||||
bool IsBrowserActive() const override;
|
||||
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
browser_collection_observation_{this};
|
||||
base::WeakPtrFactory<ApplicationStateMonitorLinux> weak_ptr_factory_{this};
|
||||
};
|
||||
|
||||
|
||||
@@ -25,8 +25,7 @@
|
||||
#include "ui/base/page_transition_types.h"
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_window/public/global_browser_collection.h"
|
||||
#endif
|
||||
|
||||
namespace brave_ads {
|
||||
@@ -87,7 +86,8 @@ AdsTabHelper::AdsTabHelper(content::WebContents* const web_contents)
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
// See `application_state_monitor_android.h` for Android.
|
||||
BrowserList::AddObserver(this);
|
||||
browser_collection_observation_.Observe(
|
||||
GlobalBrowserCollection::GetInstance());
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
MaybeSetBrowserIsActive();
|
||||
@@ -95,11 +95,7 @@ AdsTabHelper::AdsTabHelper(content::WebContents* const web_contents)
|
||||
OnVisibilityChanged(web_contents->GetVisibility());
|
||||
}
|
||||
|
||||
AdsTabHelper::~AdsTabHelper() {
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
BrowserList::RemoveObserver(this);
|
||||
#endif
|
||||
}
|
||||
AdsTabHelper::~AdsTabHelper() = default;
|
||||
|
||||
void AdsTabHelper::SetAdsServiceForTesting(AdsService* const ads_service) {
|
||||
CHECK_IS_TEST();
|
||||
@@ -132,7 +128,7 @@ void AdsTabHelper::MaybeSetBrowserIsActive() {
|
||||
MaybeNotifyBrowserDidBecomeActive();
|
||||
|
||||
// Maybe notify of tab change after the browser's active state changes because
|
||||
// `OnVisibilityChanged` can be called before `OnBrowserSetLastActive`.
|
||||
// `OnVisibilityChanged` can be called before `OnBrowserActivated`.
|
||||
MaybeNotifyTabDidChange();
|
||||
}
|
||||
|
||||
@@ -147,7 +143,7 @@ void AdsTabHelper::MaybeSetBrowserIsNoLongerActive() {
|
||||
MaybeNotifyBrowserDidResignActive();
|
||||
|
||||
// Maybe notify of tab change after the browser's active state changes because
|
||||
// `OnVisibilityChanged` can be called before `OnBrowserNoLongerActive`.
|
||||
// `OnVisibilityChanged` can be called before `OnBrowserDeactivated`.
|
||||
MaybeNotifyTabDidChange();
|
||||
}
|
||||
|
||||
@@ -440,13 +436,13 @@ void AdsTabHelper::WebContentsDestroyed() {
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
// TODO(https://github.com/brave/brave-browser/issues/24970): Decouple
|
||||
// BrowserListObserver.
|
||||
// BrowserCollectionObserver.
|
||||
|
||||
void AdsTabHelper::OnBrowserSetLastActive(Browser* /*browser*/) {
|
||||
void AdsTabHelper::OnBrowserActivated(BrowserWindowInterface* /*browser*/) {
|
||||
MaybeSetBrowserIsActive();
|
||||
}
|
||||
|
||||
void AdsTabHelper::OnBrowserNoLongerActive(Browser* /*browser*/) {
|
||||
void AdsTabHelper::OnBrowserDeactivated(BrowserWindowInterface* /*browser*/) {
|
||||
MaybeSetBrowserIsNoLongerActive();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -20,12 +20,13 @@
|
||||
#include "content/public/browser/web_contents_user_data.h"
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "base/scoped_observation.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_collection_observer.h"
|
||||
#endif
|
||||
|
||||
class Browser;
|
||||
class GURL;
|
||||
|
||||
class BrowserWindowInterface;
|
||||
class BrowserCollection;
|
||||
|
||||
namespace brave_ads {
|
||||
|
||||
@@ -33,7 +34,7 @@ class AdsService;
|
||||
|
||||
class AdsTabHelper final : public content::WebContentsObserver,
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
public BrowserListObserver,
|
||||
public BrowserCollectionObserver,
|
||||
#endif
|
||||
public content::WebContentsUserData<AdsTabHelper> {
|
||||
public:
|
||||
@@ -103,9 +104,9 @@ class AdsTabHelper final : public content::WebContentsObserver,
|
||||
void WebContentsDestroyed() override;
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
// BrowserListObserver:
|
||||
void OnBrowserSetLastActive(Browser* browser) override;
|
||||
void OnBrowserNoLongerActive(Browser* browser) override;
|
||||
// BrowserCollectionObserver:
|
||||
void OnBrowserActivated(BrowserWindowInterface* browser) override;
|
||||
void OnBrowserDeactivated(BrowserWindowInterface* browser) override;
|
||||
#endif
|
||||
|
||||
SessionID session_id_;
|
||||
@@ -128,6 +129,11 @@ class AdsTabHelper final : public content::WebContentsObserver,
|
||||
|
||||
std::optional<bool> is_browser_active_;
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
browser_collection_observation_{this};
|
||||
#endif
|
||||
|
||||
base::WeakPtrFactory<AdsTabHelper> weak_factory_{this};
|
||||
|
||||
WEB_CONTENTS_USER_DATA_KEY_DECL();
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#include "chrome/browser/ui/browser_commands.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/common/chrome_paths.h"
|
||||
#include "chrome/test/base/in_process_browser_test.h"
|
||||
#include "chrome/test/base/search_test_utils.h"
|
||||
|
||||
@@ -7,30 +7,29 @@
|
||||
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/functional/callback.h"
|
||||
#include "base/task/sequenced_task_runner.h"
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
|
||||
#include "chrome/browser/ui/browser_window/public/global_browser_collection.h"
|
||||
#endif
|
||||
|
||||
namespace ephemeral_storage {
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
ApplicationStateObserver::ApplicationStateObserver() = default;
|
||||
ApplicationStateObserver::~ApplicationStateObserver() = default;
|
||||
#else
|
||||
ApplicationStateObserver::ApplicationStateObserver(
|
||||
content::BrowserContext* context)
|
||||
: context_(context) {
|
||||
BrowserList::AddObserver(this);
|
||||
}
|
||||
|
||||
ApplicationStateObserver::~ApplicationStateObserver() {
|
||||
BrowserList::RemoveObserver(this);
|
||||
browser_collection_observation_.Observe(
|
||||
GlobalBrowserCollection::GetInstance());
|
||||
}
|
||||
#endif
|
||||
|
||||
ApplicationStateObserver::~ApplicationStateObserver() = default;
|
||||
|
||||
void ApplicationStateObserver::AddObserver(Observer* observer) {
|
||||
observers_.push_back(observer);
|
||||
}
|
||||
@@ -52,8 +51,9 @@ void ApplicationStateObserver::TriggerCurrentAppStateNotification() {
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
void ApplicationStateObserver::OnBrowserAdded(Browser* browser) {
|
||||
if (browser->profile() != Profile::FromBrowserContext(context_)) {
|
||||
void ApplicationStateObserver::OnBrowserCreated(
|
||||
BrowserWindowInterface* browser) {
|
||||
if (browser->GetProfile() != Profile::FromBrowserContext(context_)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ void ApplicationStateObserver::OnBrowserAdded(Browser* browser) {
|
||||
has_notified_active_ = true;
|
||||
|
||||
// No need to observe anymore.
|
||||
BrowserList::RemoveObserver(this);
|
||||
browser_collection_observation_.Reset();
|
||||
|
||||
// Trigger the callback notifications after a cycle of the main loop to
|
||||
// handle all windows
|
||||
|
||||
@@ -15,19 +15,23 @@
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "base/scoped_observation.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_collection_observer.h"
|
||||
|
||||
namespace content {
|
||||
class BrowserContext;
|
||||
}
|
||||
|
||||
class BrowserWindowInterface;
|
||||
class BrowserCollection;
|
||||
|
||||
#endif
|
||||
|
||||
namespace ephemeral_storage {
|
||||
|
||||
class ApplicationStateObserver
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
: public BrowserListObserver
|
||||
: public BrowserCollectionObserver
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
@@ -64,8 +68,8 @@ class ApplicationStateObserver
|
||||
private:
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
// BrowserListObserver:
|
||||
void OnBrowserAdded(Browser* browser) override;
|
||||
// BrowserCollectionObserver:
|
||||
void OnBrowserCreated(BrowserWindowInterface* browser) override;
|
||||
#endif
|
||||
|
||||
void NotifyApplicationBecameActive();
|
||||
@@ -76,6 +80,8 @@ class ApplicationStateObserver
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
bool has_notified_active_ = false;
|
||||
raw_ptr<content::BrowserContext> context_ = nullptr;
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
browser_collection_observation_{this};
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
base::WeakPtrFactory<ApplicationStateObserver> weak_ptr_factory_{this};
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
#include "components/content_settings/core/browser/cookie_settings.h"
|
||||
#include "content/public/browser/web_contents_delegate.h"
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#endif
|
||||
|
||||
namespace content {
|
||||
class BrowserContext;
|
||||
}
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
#include "brave/components/misc_metrics/pref_names.h"
|
||||
#include "brave/components/p3a_utils/bucket.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
|
||||
#include "chrome/browser/ui/browser_window/public/global_browser_collection.h"
|
||||
#include "chrome/browser/ui/tabs/tab_group_model.h"
|
||||
#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
||||
#include "components/prefs/pref_registry_simple.h"
|
||||
@@ -120,7 +120,8 @@ VerticalTabMetrics::VerticalTabMetrics(PrefService* local_state) {
|
||||
local_state, GetStoragePrefNameForCountType(count_type));
|
||||
}
|
||||
|
||||
BrowserList::GetInstance()->AddObserver(this);
|
||||
browser_collection_observation_.Observe(
|
||||
GlobalBrowserCollection::GetInstance());
|
||||
}
|
||||
|
||||
VerticalTabMetrics::~VerticalTabMetrics() = default;
|
||||
@@ -151,26 +152,26 @@ void VerticalTabMetrics::UpdateMetrics() {
|
||||
}
|
||||
}
|
||||
|
||||
void VerticalTabMetrics::OnBrowserAdded(Browser* browser) {
|
||||
if (!browser->is_type_normal()) {
|
||||
void VerticalTabMetrics::OnBrowserCreated(BrowserWindowInterface* browser) {
|
||||
if (browser->GetType() != BrowserWindowInterface::TYPE_NORMAL) {
|
||||
return;
|
||||
}
|
||||
Profile* profile = browser->profile();
|
||||
Profile* profile = browser->GetProfile();
|
||||
if (!profile || profile->IsOffTheRecord() || !profile->IsRegularProfile()) {
|
||||
// Do not monitor incognito windows.
|
||||
return;
|
||||
}
|
||||
PrefService* profile_prefs = profile->GetPrefs();
|
||||
CHECK(profile_prefs);
|
||||
SessionID session_id = browser->session_id();
|
||||
SessionID session_id = browser->GetSessionID();
|
||||
browser_metrics_[session_id] = std::make_unique<VerticalTabBrowserMetrics>(
|
||||
profile_prefs, base::BindRepeating(&VerticalTabMetrics::UpdateMetrics,
|
||||
base::Unretained(this)));
|
||||
browser->tab_strip_model()->AddObserver(browser_metrics_[session_id].get());
|
||||
browser->GetTabStripModel()->AddObserver(browser_metrics_[session_id].get());
|
||||
}
|
||||
|
||||
void VerticalTabMetrics::OnBrowserRemoved(Browser* browser) {
|
||||
browser_metrics_.erase(browser->session_id());
|
||||
void VerticalTabMetrics::OnBrowserClosed(BrowserWindowInterface* browser) {
|
||||
browser_metrics_.erase(browser->GetSessionID());
|
||||
}
|
||||
|
||||
} // namespace misc_metrics
|
||||
|
||||
@@ -10,13 +10,15 @@
|
||||
|
||||
#include "base/containers/flat_map.h"
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "base/scoped_observation.h"
|
||||
#include "brave/components/time_period_storage/weekly_storage.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_collection_observer.h"
|
||||
#include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
|
||||
#include "components/prefs/pref_change_registrar.h"
|
||||
#include "components/sessions/core/session_id.h"
|
||||
|
||||
class Browser;
|
||||
class BrowserWindowInterface;
|
||||
class BrowserCollection;
|
||||
class PrefRegistrySimple;
|
||||
class PrefService;
|
||||
class TabStripModel;
|
||||
@@ -67,7 +69,7 @@ class VerticalTabBrowserMetrics : public TabStripModelObserver {
|
||||
base::RepeatingClosure change_callback_;
|
||||
};
|
||||
|
||||
class VerticalTabMetrics : public BrowserListObserver {
|
||||
class VerticalTabMetrics : public BrowserCollectionObserver {
|
||||
public:
|
||||
explicit VerticalTabMetrics(PrefService* local_state);
|
||||
~VerticalTabMetrics() override;
|
||||
@@ -79,15 +81,17 @@ class VerticalTabMetrics : public BrowserListObserver {
|
||||
|
||||
void UpdateMetrics();
|
||||
|
||||
// BrowserListObserver:
|
||||
void OnBrowserAdded(Browser* browser) override;
|
||||
void OnBrowserRemoved(Browser* browser) override;
|
||||
// BrowserCollectionObserver:
|
||||
void OnBrowserCreated(BrowserWindowInterface* browser) override;
|
||||
void OnBrowserClosed(BrowserWindowInterface* browser) override;
|
||||
|
||||
private:
|
||||
base::flat_map<TabCountType, std::unique_ptr<WeeklyStorage>>
|
||||
global_count_storages_;
|
||||
base::flat_map<SessionID, std::unique_ptr<VerticalTabBrowserMetrics>>
|
||||
browser_metrics_;
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
browser_collection_observation_{this};
|
||||
};
|
||||
|
||||
} // namespace misc_metrics
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
#include "base/metrics/histogram_macros.h"
|
||||
#include "base/time/time.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
|
||||
#include "chrome/browser/ui/browser_window/public/global_browser_collection.h"
|
||||
#include "components/prefs/pref_registry_simple.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
|
||||
@@ -57,16 +57,15 @@ BraveWindowTracker::BraveWindowTracker(PrefService* local_state)
|
||||
// Can happen in tests.
|
||||
return;
|
||||
}
|
||||
BrowserList::AddObserver(this);
|
||||
browser_collection_observation_.Observe(
|
||||
GlobalBrowserCollection::GetInstance());
|
||||
timer_.Start(FROM_HERE, base::Minutes(kWindowUsageP3AIntervalMinutes),
|
||||
base::BindRepeating(&BraveWindowTracker::UpdateP3AValues,
|
||||
base::Unretained(this)));
|
||||
UpdateP3AValues();
|
||||
}
|
||||
|
||||
BraveWindowTracker::~BraveWindowTracker() {
|
||||
BrowserList::RemoveObserver(this);
|
||||
}
|
||||
BraveWindowTracker::~BraveWindowTracker() = default;
|
||||
|
||||
void BraveWindowTracker::CreateInstance(PrefService* local_state) {
|
||||
g_brave_windows_tracker_instance = new BraveWindowTracker(local_state);
|
||||
@@ -77,19 +76,19 @@ void BraveWindowTracker::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(kTorUsed, false);
|
||||
}
|
||||
|
||||
void BraveWindowTracker::OnBrowserAdded(Browser* browser) {
|
||||
if (browser->profile()->IsTor()) {
|
||||
void BraveWindowTracker::OnBrowserCreated(BrowserWindowInterface* browser) {
|
||||
if (browser->GetProfile()->IsTor()) {
|
||||
local_state_->SetBoolean(kTorUsed, true);
|
||||
return;
|
||||
}
|
||||
const char* pref = GetPrefNameForProfile(browser->profile());
|
||||
const char* pref = GetPrefNameForProfile(browser->GetProfile());
|
||||
if (pref) {
|
||||
local_state_->SetTime(pref, base::Time::Now());
|
||||
}
|
||||
}
|
||||
|
||||
void BraveWindowTracker::OnBrowserSetLastActive(Browser* browser) {
|
||||
const char* pref = GetPrefNameForProfile(browser->profile());
|
||||
void BraveWindowTracker::OnBrowserActivated(BrowserWindowInterface* browser) {
|
||||
const char* pref = GetPrefNameForProfile(browser->GetProfile());
|
||||
if (pref) {
|
||||
local_state_->SetTime(pref, base::Time::Now());
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#define BRAVE_BROWSER_P3A_P3A_CORE_METRICS_H_
|
||||
|
||||
// The class below can be used on desktop only
|
||||
// because BrowserListObserver is available on desktop only
|
||||
// because BrowserCollectionObserver is available on desktop only
|
||||
// Brave.Core.LastTimeIncognitoUsed and
|
||||
// Brave.Core.TorEverUsed don't work on Android
|
||||
|
||||
@@ -18,8 +18,12 @@
|
||||
#endif
|
||||
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "base/scoped_observation.h"
|
||||
#include "base/timer/timer.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_collection_observer.h"
|
||||
|
||||
class BrowserWindowInterface;
|
||||
class BrowserCollection;
|
||||
|
||||
class PrefService;
|
||||
class PrefRegistrySimple;
|
||||
@@ -27,14 +31,14 @@ class PrefRegistrySimple;
|
||||
namespace brave {
|
||||
|
||||
// BraveWindowTracker is under !OS_ANDROID guard because
|
||||
// BrowserListObserver should only be only on desktop
|
||||
// BrowserCollectionObserver should only be only on desktop
|
||||
// Brave.Uptime.BrowserOpenMinutes and Brave.Core.LastTimeIncognitoUsed
|
||||
// don't work on Android
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
// Periodically records P3A stats (extracted from Local State) regarding the
|
||||
// time when incognito windows were used.
|
||||
// Used as a leaking singletone.
|
||||
class BraveWindowTracker : public BrowserListObserver {
|
||||
class BraveWindowTracker : public BrowserCollectionObserver {
|
||||
public:
|
||||
explicit BraveWindowTracker(PrefService* local_state);
|
||||
BraveWindowTracker(const BraveWindowTracker&) = delete;
|
||||
@@ -46,14 +50,16 @@ class BraveWindowTracker : public BrowserListObserver {
|
||||
static void RegisterPrefs(PrefRegistrySimple* registry);
|
||||
|
||||
private:
|
||||
// BrowserListObserver:
|
||||
void OnBrowserAdded(Browser* browser) override;
|
||||
void OnBrowserSetLastActive(Browser* browser) override;
|
||||
// BrowserCollectionObserver:
|
||||
void OnBrowserCreated(BrowserWindowInterface* browser) override;
|
||||
void OnBrowserActivated(BrowserWindowInterface* browser) override;
|
||||
|
||||
void UpdateP3AValues() const;
|
||||
|
||||
base::RepeatingTimer timer_;
|
||||
raw_ptr<PrefService, DanglingUntriaged> local_state_ = nullptr;
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
browser_collection_observation_{this};
|
||||
};
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ class TorBrowserCollectionObserver : public BrowserCollectionObserver {
|
||||
}
|
||||
|
||||
private:
|
||||
base::ScopedObservation<GlobalBrowserCollection, BrowserCollectionObserver>
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
observation_{this};
|
||||
};
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#include "chrome/browser/ui/browser_command_controller.h"
|
||||
#include "chrome/browser/ui/browser_commands.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/browser_tabstrip.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
|
||||
#include "chrome/browser/ui/ui_features.h"
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_window.h"
|
||||
#include "chrome/browser/ui/browser_window/public/global_browser_collection.h"
|
||||
#include "chrome/browser/ui/location_bar/location_bar.h"
|
||||
#include "chrome/browser/ui/omnibox/omnibox_view.h"
|
||||
|
||||
@@ -126,17 +126,27 @@ void CommanderService::Shutdown() {
|
||||
items_.clear();
|
||||
}
|
||||
|
||||
void CommanderService::OnBrowserAdded(Browser* browser) {
|
||||
browser_close_subscriptions_[browser] = browser->RegisterBrowserDidClose(
|
||||
base::BindRepeating(&CommanderService::OnBrowserDidClose,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
void CommanderService::EnsureBrowserDidCloseSubscription(
|
||||
BrowserWindowInterface* browser_window_interface) {
|
||||
if (browser_close_subscriptions_.contains(browser_window_interface)) {
|
||||
return;
|
||||
}
|
||||
|
||||
browser_close_subscriptions_[browser_window_interface] =
|
||||
browser_window_interface->RegisterBrowserDidClose(
|
||||
base::BindRepeating(&CommanderService::OnBrowserDidClose,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
}
|
||||
|
||||
void CommanderService::OnBrowserCreated(BrowserWindowInterface* browser) {
|
||||
EnsureBrowserDidCloseSubscription(browser);
|
||||
}
|
||||
|
||||
void CommanderService::OnBrowserDidClose(BrowserWindowInterface* browser) {
|
||||
browser_close_subscriptions_.erase(browser);
|
||||
if (last_browser_ == browser) {
|
||||
last_browser_ = nullptr;
|
||||
browser_list_observation_.Reset();
|
||||
browser_collection_observation_.Reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,8 +230,10 @@ void CommanderService::UpdateText(const std::u16string& text, bool force) {
|
||||
}
|
||||
last_searched_ = trimmed_text;
|
||||
last_browser_ = browser;
|
||||
if (!browser_list_observation_.IsObserving()) {
|
||||
browser_list_observation_.Observe(BrowserList::GetInstance());
|
||||
EnsureBrowserDidCloseSubscription(browser);
|
||||
if (!browser_collection_observation_.IsObserving()) {
|
||||
browser_collection_observation_.Observe(
|
||||
GlobalBrowserCollection::GetInstance());
|
||||
}
|
||||
|
||||
UpdateCommands();
|
||||
|
||||
@@ -17,14 +17,15 @@
|
||||
#include "brave/browser/ui/commander/ranker.h"
|
||||
#include "brave/components/commander/browser/commander_frontend_delegate.h"
|
||||
#include "brave/components/commander/browser/commander_item_model.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_collection_observer.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
|
||||
#include "components/keyed_service/core/keyed_service.h"
|
||||
#include "third_party/abseil-cpp/absl/container/flat_hash_map.h"
|
||||
|
||||
class Browser;
|
||||
class OmniboxView;
|
||||
class Profile;
|
||||
class BrowserList;
|
||||
class BrowserCollection;
|
||||
|
||||
namespace commander {
|
||||
|
||||
@@ -33,7 +34,7 @@ bool IsEnabled();
|
||||
|
||||
class CommanderService : public CommanderFrontendDelegate,
|
||||
public KeyedService,
|
||||
public BrowserListObserver {
|
||||
public BrowserCollectionObserver {
|
||||
public:
|
||||
using CommandSources = std::vector<std::unique_ptr<CommandSource>>;
|
||||
|
||||
@@ -70,9 +71,11 @@ class CommanderService : public CommanderFrontendDelegate,
|
||||
|
||||
void ShowCommander();
|
||||
void HideCommander();
|
||||
void EnsureBrowserDidCloseSubscription(
|
||||
BrowserWindowInterface* browser_window_interface);
|
||||
|
||||
// overrides BrowserListObserver:
|
||||
void OnBrowserAdded(Browser* browser) override;
|
||||
// BrowserCollectionObserver:
|
||||
void OnBrowserCreated(BrowserWindowInterface* browser) override;
|
||||
|
||||
// Callback for browser closed events.
|
||||
void OnBrowserDidClose(BrowserWindowInterface* browser_window_interface);
|
||||
@@ -95,14 +98,14 @@ class CommanderService : public CommanderFrontendDelegate,
|
||||
Ranker ranker_;
|
||||
|
||||
base::ObserverList<Observer> observers_;
|
||||
base::ScopedObservation<BrowserList, BrowserListObserver>
|
||||
browser_list_observation_{this};
|
||||
|
||||
// Map to track browser close callback subscriptions.
|
||||
absl::flat_hash_map<raw_ptr<BrowserWindowInterface>,
|
||||
base::CallbackListSubscription>
|
||||
browser_close_subscriptions_;
|
||||
|
||||
base::ScopedObservation<BrowserCollection, BrowserCollectionObserver>
|
||||
browser_collection_observation_{this};
|
||||
base::WeakPtrFactory<CommanderService> weak_ptr_factory_{this};
|
||||
};
|
||||
} // namespace commander
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "components/keyed_service/core/keyed_service.h"
|
||||
#include "components/prefs/pref_member.h"
|
||||
|
||||
class Browser;
|
||||
class Profile;
|
||||
class BrowserWindowInterface;
|
||||
class BrowserCollection;
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_window.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/tabs/recent_tabs_sub_menu_model.h"
|
||||
#include "chrome/browser/ui/views/frame/browser_view.h"
|
||||
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_commands.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/browser_list_observer.h"
|
||||
#include "chrome/browser/ui/browser_tabstrip.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
|
||||
#include "chrome/browser/ui/side_panel/side_panel_entry.h"
|
||||
|
||||
Reference in New Issue
Block a user