blob: e20a522f5f18188c2038961fedf47e57dfbc7900 [file] [log] [blame]
// Copyright 2019 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 <memory>
#include <string>
#include <utility>
#include <vector>
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
#include "chrome/chrome_cleaner/chrome_utils/extensions_util.h"
#include "chrome/chrome_cleaner/chrome_utils/force_installed_extension.h"
#include "chrome/chrome_cleaner/engines/broker/sandbox_setup.h"
#include "chrome/chrome_cleaner/engines/common/engine_resources.h"
#include "chrome/chrome_cleaner/engines/controllers/engine_cleaner.h"
#include "chrome/chrome_cleaner/engines/controllers/engine_facade.h"
#include "chrome/chrome_cleaner/engines/controllers/scanner_impl.h"
#include "chrome/chrome_cleaner/engines/controllers/uwe_engine_cleaner_wrapper.h"
#include "chrome/chrome_cleaner/engines/controllers/uwe_scanner_wrapper.h"
#include "chrome/chrome_cleaner/logging/registry_logger.h"
#include "chrome/chrome_cleaner/scanner/force_installed_extension_scanner_impl.h"
#include "sandbox/win/src/sandbox_factory.h"
#include "sandbox/win/src/target_services.h"
namespace chrome_cleaner {
EngineFacade::EngineFacade(scoped_refptr<EngineClient> engine_client,
JsonParserAPI* json_parser,
MainDialogAPI* main_dialog,
std::unique_ptr<ForceInstalledExtensionScanner>
force_installed_extension_scanner,
ChromePromptIPC* chrome_prompt_ipc)
: engine_client_(std::move(engine_client)),
force_installed_extension_scanner_(
std::move(force_installed_extension_scanner)),
uwe_matchers_(
force_installed_extension_scanner_->CreateUwEMatchersFromResource(
GetUwEMatchersResourceID())),
main_dialog_(main_dialog) {
CHECK(sandbox::SandboxFactory::GetTargetServices() == nullptr);
std::vector<ForceInstalledExtension> force_installed_extensions =
force_installed_extension_scanner_->GetForceInstalledExtensions(
json_parser);
scanner_ = std::make_unique<UwEScannerWrapper>(
std::make_unique<ScannerImpl>(engine_client_.get()), uwe_matchers_.get(),
std::move(force_installed_extensions));
cleaner_ = std::make_unique<UwEEngineCleanerWrapper>(
std::make_unique<EngineCleaner>(engine_client_.get()),
base::BindOnce(&MainDialogAPI::DisableExtensions,
base::Unretained(main_dialog_)),
chrome_prompt_ipc);
}
EngineFacade::~EngineFacade() = default;
Scanner* EngineFacade::GetScanner() {
return scanner_.get();
}
Cleaner* EngineFacade::GetCleaner() {
return cleaner_.get();
}
base::TimeDelta EngineFacade::GetScanningWatchdogTimeout() const {
return base::TimeDelta::FromSeconds(
engine_client_->ScanningWatchdogTimeoutInSeconds());
}
} // namespace chrome_cleaner