Make scheduler configuration default controllable via finch.

Introduce a new finch experiment which provides the default scheduler
configuration setting to use via its "config" parameter. This is used
as the default in absence of any other configuration.

BUG=chromium:927840
TEST=Unit tests.

Change-Id: I675e365f89dde1fed35dfaaaf27a9e8e8297148b
Reviewed-on: https://chromium-review.googlesource.com/c/1456070
Commit-Queue: Mattias Nissler <[email protected]>
Reviewed-by: Dan Erat <[email protected]>
Cr-Commit-Position: refs/heads/master@{#632130}
diff --git a/chrome/browser/chromeos/scheduler_configuration_manager_unittest.cc b/chrome/browser/chromeos/scheduler_configuration_manager_unittest.cc
index e1507d6..d614f591 100644
--- a/chrome/browser/chromeos/scheduler_configuration_manager_unittest.cc
+++ b/chrome/browser/chromeos/scheduler_configuration_manager_unittest.cc
@@ -6,7 +6,9 @@
 
 #include <memory>
 
+#include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
+#include "chrome/common/chrome_features.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/dbus/fake_debug_daemon_client.h"
 #include "components/prefs/testing_pref_service.h"
@@ -79,4 +81,20 @@
             debug_daemon_client_.scheduler_configuration_name());
 }
 
+TEST_F(SchedulerConfigurationManagerTest, FinchDefault) {
+  auto feature_list = std::make_unique<base::test::ScopedFeatureList>();
+  feature_list->InitAndEnableFeatureWithParameters(
+      features::kSchedulerConfiguration, {{"config", "finch"}});
+
+  // Finch parameter selects the default.
+  SchedulerConfigurationManager manager(&debug_daemon_client_, &local_state_);
+  scoped_task_environment_.RunUntilIdle();
+  EXPECT_EQ("finch", debug_daemon_client_.scheduler_configuration_name());
+
+  // Config values override finch default.
+  local_state_.SetString(prefs::kSchedulerConfiguration, "config");
+  scoped_task_environment_.RunUntilIdle();
+  EXPECT_EQ("config", debug_daemon_client_.scheduler_configuration_name());
+}
+
 }  // namespace chromeos