Commit bb987441 authored by Rainhard Findling's avatar Rainhard Findling Committed by Commit Bot

Safety check Chrome cleaner: add observer only if not already added

Bug: 1087263
Change-Id: Ia59d2a208d9fcbf371ad8fd2ed59e5cdb865df64
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2507690Reviewed-by: default avatarJoe Mason <joenotcharles@chromium.org>
Reviewed-by: default avatarEsmael Elmoslimany <aee@chromium.org>
Commit-Queue: Rainhard Findling <rainhard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#822641}
parent b1b10609
......@@ -296,6 +296,11 @@ void ChromeCleanerControllerImpl::RemoveObserver(Observer* observer) {
observer_list_.RemoveObserver(observer);
}
bool ChromeCleanerControllerImpl::HasObserver(Observer* observer) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
return observer_list_.HasObserver(observer);
}
void ChromeCleanerControllerImpl::OnReporterSequenceStarted() {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
......
......@@ -67,6 +67,7 @@ class ChromeCleanerControllerImpl : public ChromeCleanerController {
void ResetIdleState() override;
void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override;
bool HasObserver(Observer* observer) override;
void OnReporterSequenceStarted() override;
void OnReporterSequenceDone(SwReporterInvocationResult result) override;
void RequestUserInitiatedScan(Profile* profile) override;
......
......@@ -134,6 +134,7 @@ class ChromeCleanerController {
// by calling the corresponding |On*()| function.
virtual void AddObserver(Observer* observer) = 0;
virtual void RemoveObserver(Observer* observer) = 0;
virtual bool HasObserver(Observer* observer) = 0;
// Invoked by the reporter runner, notifies the controller that a reporter
// sequence started. If there is no pending cleaner action (currently on the
......
......@@ -28,6 +28,7 @@ class MockChromeCleanerController
MOCK_METHOD0(ResetIdleState, void());
MOCK_METHOD1(AddObserver, void(Observer*));
MOCK_METHOD1(RemoveObserver, void(Observer*));
MOCK_METHOD1(HasObserver, bool(Observer*));
MOCK_METHOD0(OnReporterSequenceStarted, void());
MOCK_METHOD1(OnReporterSequenceDone, void(SwReporterInvocationResult));
MOCK_METHOD1(RequestUserInitiatedScan, void(Profile*));
......
......@@ -464,9 +464,15 @@ void SafetyCheckHandler::CheckExtensions() {
#if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
void SafetyCheckHandler::CheckChromeCleaner() {
// Registering the observer immediately triggers a callback with the
// current state.
safe_browsing::ChromeCleanerController::GetInstance()->AddObserver(this);
if (safe_browsing::ChromeCleanerController::GetInstance()->HasObserver(
this)) {
// Observer already registered. Just fetch the current CCT status.
OnChromeCleanerCheckResult(fetchChromeCleanerStatus(timestamp_delegate_));
} else {
// Registering the observer immediately triggers a callback with the
// current state.
safe_browsing::ChromeCleanerController::GetInstance()->AddObserver(this);
}
}
#endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment