blob: 260d61de86e894a2f089fd884300f04b0f6659e9 [file] [log] [blame]
// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_state_change_observer_win.h"
#include "base/threading/thread_checker.h"
#include "content/public/browser/browser_thread.h"
using content::BrowserThread;
namespace safe_browsing {
ChromeCleanerStateChangeObserver::ChromeCleanerStateChangeObserver(
const OnShowCleanupUIChangeCallback& on_show_cleanup_ui_change)
: on_show_cleanup_ui_change_(on_show_cleanup_ui_change),
controller_(ChromeCleanerController::GetInstance()),
cached_should_show_cleanup_in_settings_ui_(
controller_->ShouldShowCleanupInSettingsUI()) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
controller_->AddObserver(this);
}
ChromeCleanerStateChangeObserver::~ChromeCleanerStateChangeObserver() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
controller_->RemoveObserver(this);
}
void ChromeCleanerStateChangeObserver::OnCleanupStateChange() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
bool show_cleanup = controller_->ShouldShowCleanupInSettingsUI();
// Avoid calling the observer if nothing changed.
if (show_cleanup == cached_should_show_cleanup_in_settings_ui_) {
return;
}
cached_should_show_cleanup_in_settings_ui_ = show_cleanup;
on_show_cleanup_ui_change_.Run(show_cleanup);
}
void ChromeCleanerStateChangeObserver::OnIdle(
ChromeCleanerController::IdleReason idle_reason) {
OnCleanupStateChange();
}
void ChromeCleanerStateChangeObserver::OnScanning() {
OnCleanupStateChange();
}
void ChromeCleanerStateChangeObserver::OnReporterRunning() {
OnCleanupStateChange();
}
void ChromeCleanerStateChangeObserver::OnInfected(
bool is_powered_by_partner,
const ChromeCleanerScannerResults& reported_results) {
OnCleanupStateChange();
}
void ChromeCleanerStateChangeObserver::OnCleaning(
bool is_powered_by_partner,
const ChromeCleanerScannerResults& reported_results) {
OnCleanupStateChange();
}
void ChromeCleanerStateChangeObserver::OnRebootRequired() {
OnCleanupStateChange();
}
void ChromeCleanerStateChangeObserver::OnLogsEnabledChanged(bool logs_enabled) {
OnCleanupStateChange();
}
} // namespace safe_browsing