Commit 66d17ca7 authored by Patrick Monette's avatar Patrick Monette Committed by Commit Bot

Make the ThirdPartyModulesBlocking feature work on all Windows versions

Change-Id: I0118d26fe9b7f11f2608dd66c10418e210393733
Reviewed-on: https://chromium-review.googlesource.com/1083842
Commit-Queue: Patrick Monette <pmonette@chromium.org>
Reviewed-by: default avatarGreg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566516}
parent fb43e0f4
...@@ -8,14 +8,18 @@ ...@@ -8,14 +8,18 @@
#include <utility> #include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/feature_list.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/values.h" #include "base/values.h"
#include "base/win/registry.h" #include "base/win/registry.h"
#include "base/win/windows_version.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/conflicts/module_database_win.h" #include "chrome/browser/conflicts/module_database_win.h"
#include "chrome/browser/conflicts/module_info_util_win.h" #include "chrome/browser/conflicts/module_info_util_win.h"
#include "chrome/browser/conflicts/module_info_win.h"
#include "chrome/browser/conflicts/module_list_filter_win.h" #include "chrome/browser/conflicts/module_list_filter_win.h"
#include "chrome/browser/conflicts/third_party_metrics_recorder_win.h" #include "chrome/browser/conflicts/third_party_metrics_recorder_win.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
...@@ -223,8 +227,11 @@ void IncompatibleApplicationsUpdater::RegisterLocalStatePrefs( ...@@ -223,8 +227,11 @@ void IncompatibleApplicationsUpdater::RegisterLocalStatePrefs(
// static // static
bool IncompatibleApplicationsUpdater::IsWarningEnabled() { bool IncompatibleApplicationsUpdater::IsWarningEnabled() {
return ModuleDatabase::GetInstance() && return base::win::GetVersion() >= base::win::VERSION_WIN10 &&
ModuleDatabase::GetInstance()->third_party_conflicts_manager(); base::FeatureList::IsEnabled(features::kModuleDatabase) &&
ModuleDatabase::IsThirdPartyBlockingPolicyEnabled() &&
base::FeatureList::IsEnabled(
features::kIncompatibleApplicationsWarning);
} }
// static // static
......
...@@ -49,8 +49,8 @@ class IncompatibleApplicationsUpdater : public ModuleDatabaseObserver { ...@@ -49,8 +49,8 @@ class IncompatibleApplicationsUpdater : public ModuleDatabaseObserver {
static void RegisterLocalStatePrefs(PrefRegistrySimple* registry); static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
// Returns true if the tracking of incompatible applications is enabled. The // Returns true if the tracking of incompatible applications is enabled. Note
// return value will not change throughout the lifetime of the process. // that this is a Windows 10+ feature only.
static bool IsWarningEnabled(); static bool IsWarningEnabled();
// Returns true if the cache contains at least one incompatible application. // Returns true if the cache contains at least one incompatible application.
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/location.h" #include "base/location.h"
#include "base/win/windows_version.h"
#include "chrome/browser/conflicts/module_database_observer_win.h" #include "chrome/browser/conflicts/module_database_observer_win.h"
#if defined(GOOGLE_CHROME_BUILD) #if defined(GOOGLE_CHROME_BUILD)
...@@ -288,10 +287,12 @@ void ModuleDatabase::NotifyLoadedModules(ModuleDatabaseObserver* observer) { ...@@ -288,10 +287,12 @@ void ModuleDatabase::NotifyLoadedModules(ModuleDatabaseObserver* observer) {
#if defined(GOOGLE_CHROME_BUILD) #if defined(GOOGLE_CHROME_BUILD)
void ModuleDatabase::MaybeInitializeThirdPartyConflictsManager() { void ModuleDatabase::MaybeInitializeThirdPartyConflictsManager() {
if (base::win::GetVersion() >= base::win::VERSION_WIN10 && if (!IsThirdPartyBlockingPolicyEnabled())
IsThirdPartyBlockingPolicyEnabled() && return;
base::FeatureList::IsEnabled(
features::kIncompatibleApplicationsWarning)) { if (base::FeatureList::IsEnabled(
features::kIncompatibleApplicationsWarning) ||
base::FeatureList::IsEnabled(features::kThirdPartyModulesBlocking)) {
third_party_conflicts_manager_ = third_party_conflicts_manager_ =
std::make_unique<ThirdPartyConflictsManager>(this); std::make_unique<ThirdPartyConflictsManager>(this);
AddObserver(third_party_conflicts_manager_.get()); AddObserver(third_party_conflicts_manager_.get());
......
...@@ -118,13 +118,14 @@ class ModuleDatabase { ...@@ -118,13 +118,14 @@ class ModuleDatabase {
#if defined(GOOGLE_CHROME_BUILD) #if defined(GOOGLE_CHROME_BUILD)
static void RegisterLocalStatePrefs(PrefRegistrySimple* registry); static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
// Returns true if the ThirdPartyBlocking policy is enabled. This can only // Returns false if third-party modules blocking is disabled via
// return false if it is disabled via admin policy. // administrative policy.
static bool IsThirdPartyBlockingPolicyEnabled(); static bool IsThirdPartyBlockingPolicyEnabled();
// Accessor for the third party conflicts manager. This is exposed so that the // Accessor for the third party conflicts manager. This is exposed so that the
// manager can be wired up to the ThirdPartyModuleListComponentInstaller. // manager can be wired up to the ThirdPartyModuleListComponentInstaller.
// Returns null if the tracking of incompatible applications is disabled. // Returns null if both the tracking of incompatible applications and the
// blocking of third-party modules are disabled.
ThirdPartyConflictsManager* third_party_conflicts_manager() { ThirdPartyConflictsManager* third_party_conflicts_manager() {
return third_party_conflicts_manager_.get(); return third_party_conflicts_manager_.get();
} }
...@@ -178,12 +179,11 @@ class ModuleDatabase { ...@@ -178,12 +179,11 @@ class ModuleDatabase {
void NotifyLoadedModules(ModuleDatabaseObserver* observer); void NotifyLoadedModules(ModuleDatabaseObserver* observer);
#if defined(GOOGLE_CHROME_BUILD) #if defined(GOOGLE_CHROME_BUILD)
// Initializes the ThirdPartyConflictsManager, which controls the warning of // Initializes the ThirdPartyConflictsManager, which controls showing warnings
// incompatible applications that injects into Chrome and the blocking of // for incompatible applications that inject into Chrome and the blocking of
// third-party modules. // third-party modules. The manager is only initialized if either or both of
// The manager is not initialized if it is disabled via a base::Feature or a // the ThirdPartyModulesBlocking and IncompatibleApplicationsWarning features
// group policy. Note that it is also not initialized on Windows version // are enabled.
// 8.1 and less.
void MaybeInitializeThirdPartyConflictsManager(); void MaybeInitializeThirdPartyConflictsManager();
void OnThirdPartyBlockingPolicyChanged(); void OnThirdPartyBlockingPolicyChanged();
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include "base/scoped_native_library.h" #include "base/scoped_native_library.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "base/test/test_reg_util_win.h" #include "base/test/test_reg_util_win.h"
#include "base/win/windows_version.h"
#include "chrome/browser/conflicts/incompatible_applications_updater_win.h" #include "chrome/browser/conflicts/incompatible_applications_updater_win.h"
#include "chrome/browser/conflicts/module_blacklist_cache_updater_win.h" #include "chrome/browser/conflicts/module_blacklist_cache_updater_win.h"
#include "chrome/browser/conflicts/module_blacklist_cache_util_win.h" #include "chrome/browser/conflicts/module_blacklist_cache_util_win.h"
...@@ -159,9 +158,6 @@ class ThirdPartyBlockingBrowserTest : public InProcessBrowserTest { ...@@ -159,9 +158,6 @@ class ThirdPartyBlockingBrowserTest : public InProcessBrowserTest {
// browser launch. // browser launch.
IN_PROC_BROWSER_TEST_F(ThirdPartyBlockingBrowserTest, IN_PROC_BROWSER_TEST_F(ThirdPartyBlockingBrowserTest,
CreateModuleBlacklistCache) { CreateModuleBlacklistCache) {
if (base::win::GetVersion() < base::win::VERSION_WIN10)
return;
base::FilePath module_list_path; base::FilePath module_list_path;
ASSERT_NO_FATAL_FAILURE(CreateModuleList(&module_list_path)); ASSERT_NO_FATAL_FAILURE(CreateModuleList(&module_list_path));
ASSERT_FALSE(module_list_path.empty()); ASSERT_FALSE(module_list_path.empty());
......
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