Commit 800d47ea authored by Sebastien Lalancette's avatar Sebastien Lalancette Committed by Commit Bot

Added a feature flag for ChromePromptImpl::DisableExtensions

Details:
Flag name: kChromeCleanupExtensionsFeature
When ON, extensions are included when prompting the user for UwS cleanup.
When OFF, extensions are NOT included when prompting the user for UwS cleanup.

Bug: 904958
Change-Id: Ie483ddb64de11de015429557343f0ee5c4676ff5
Reviewed-on: https://chromium-review.googlesource.com/c/1337790
Commit-Queue: Sebastien Lalancette <seblalancette@chromium.org>
Reviewed-by: default avatarJoe Mason <joenotcharles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609859}
parent 7b5f9f9e
......@@ -14,6 +14,7 @@
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.h"
#include "components/crx_file/id_util.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/browser/uninstall_reason.h"
......@@ -53,35 +54,41 @@ void ChromePromptImpl::PromptUser(
using ExtensionCollection = ChromeCleanerScannerResults::ExtensionCollection;
if (on_prompt_user_) {
if (base::FeatureList::IsEnabled(kChromeCleanupExtensionsFeature) &&
extension_ids) {
extension_ids_ = extension_ids.value();
} else {
extension_ids_.clear();
}
ChromeCleanerScannerResults scanner_results(
FileCollection(files_to_delete.begin(), files_to_delete.end()),
registry_keys ? RegistryKeyCollection(registry_keys->begin(),
registry_keys->end())
: RegistryKeyCollection(),
extension_ids
? ExtensionCollection(extension_ids->begin(), extension_ids->end())
: ExtensionCollection());
if (extension_ids.has_value()) {
extension_ids_ = extension_ids;
}
extension_ids_.empty() ? ExtensionCollection()
: ExtensionCollection(extension_ids_.begin(),
extension_ids_.end()));
std::move(on_prompt_user_)
.Run(std::move(scanner_results), std::move(callback));
}
}
// The |extensions_ids| passed to this function are a subset of the
// |extension_ids| passed to PromptUser because the extensions are not all
// disabled at the same time.
void ChromePromptImpl::DisableExtensions(
const std::vector<base::string16>& extension_ids,
ChromePrompt::DisableExtensionsCallback callback) {
if (extension_service_ == nullptr || !extension_ids_.has_value()) {
if (extension_service_ == nullptr || extension_ids_.empty()) {
std::move(callback).Run(false);
return;
}
// Clear the stored extension_ids by moving it onto this stack frame,
// so subsequent calls will fail.
base::Optional<std::vector<base::string16>> optional_verified_extension_ids{};
extension_ids_.swap(optional_verified_extension_ids);
std::vector<base::string16> verified_extension_ids =
optional_verified_extension_ids.value();
std::vector<base::string16> verified_extension_ids{};
extension_ids_.swap(verified_extension_ids);
bool ids_are_valid = std::all_of(
extension_ids.begin(), extension_ids.end(),
[this, &verified_extension_ids](const base::string16& id) {
......
......@@ -50,7 +50,7 @@ class ChromePromptImpl : public chrome_cleaner::mojom::ChromePrompt {
mojo::Binding<chrome_cleaner::mojom::ChromePrompt> binding_;
extensions::ExtensionService* extension_service_;
OnPromptUser on_prompt_user_;
base::Optional<std::vector<base::string16>> extension_ids_;
std::vector<base::string16> extension_ids_;
DISALLOW_COPY_AND_ASSIGN(ChromePromptImpl);
};
......
......@@ -47,6 +47,9 @@ const base::Feature kChromeCleanupDistributionFeature{
const base::Feature kChromeCleanupQuarantineFeature{
"ChromeCleanupQuarantine", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kChromeCleanupExtensionsFeature{
"ChromeCleanupExtensions", base::FEATURE_DISABLED_BY_DEFAULT};
bool IsInSRTPromptFieldTrialGroups() {
return !base::StartsWith(base::FieldTrialList::FindFullName(kSRTPromptTrial),
kSRTPromptOffGroup, base::CompareCase::SENSITIVE);
......
......@@ -74,6 +74,10 @@ extern const base::Feature kChromeCleanupDistributionFeature;
// files.
extern const base::Feature kChromeCleanupQuarantineFeature;
// Extensions cleanup feature. When enabled, Chrome Cleaner will prompt users
// for, and cleanup, bad extensions.
extern const base::Feature kChromeCleanupExtensionsFeature;
extern const char kSRTPromptTrial[];
// Returns true if this Chrome is in a field trial group which shows the SRT
......
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