| Index: ui/base/material_design/material_design_controller.cc
|
| diff --git a/ui/base/material_design/material_design_controller.cc b/ui/base/material_design/material_design_controller.cc
|
| index 86685cf5114f2d0db70683e5828e42960227dfe2..bf153e35e166170935fd1a040ef6157b500da4aa 100644
|
| --- a/ui/base/material_design/material_design_controller.cc
|
| +++ b/ui/base/material_design/material_design_controller.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| +#include "base/metrics/field_trial.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "ui/base/material_design/material_design_controller.h"
|
| #include "ui/base/ui_base_switches.h"
|
| @@ -26,8 +27,8 @@
|
|
|
| namespace ui {
|
|
|
| +// static
|
| bool MaterialDesignController::is_mode_initialized_ = false;
|
| -
|
| MaterialDesignController::Mode MaterialDesignController::mode_ =
|
| MaterialDesignController::NON_MATERIAL;
|
|
|
| @@ -35,6 +36,11 @@ bool MaterialDesignController::include_secondary_ui_ = false;
|
|
|
| // static
|
| void MaterialDesignController::Initialize() {
|
| + InitializeWithDefaultMode(DefaultMode());
|
| +}
|
| +
|
| +// static
|
| +void MaterialDesignController::InitializeWithDefaultMode(Mode mode) {
|
| TRACE_EVENT0("startup", "MaterialDesignController::InitializeMode");
|
| CHECK(!is_mode_initialized_);
|
| #if !defined(ENABLE_TOPCHROME_MD)
|
| @@ -56,7 +62,22 @@ void MaterialDesignController::Initialize() {
|
| << "' for command line switch '" << switches::kTopChromeMD
|
| << "'.";
|
| }
|
| - SetMode(DefaultMode());
|
| +
|
| + // The field trial value, if any, overrides the provided default mode.
|
| + constexpr char kMaterialDesignModeFieldTrialName[] = "MaterialDesignMode";
|
| + constexpr char kNonMaterialGroupName[] = "NonMaterial";
|
| + constexpr char kMaterialNormalGroupName[] = "MaterialNormal";
|
| + constexpr char kMaterialHybridGroupName[] = "MaterialHybrid";
|
| + const std::string group =
|
| + base::FieldTrialList::FindFullName(kMaterialDesignModeFieldTrialName);
|
| + if (group == kNonMaterialGroupName)
|
| + mode = NON_MATERIAL;
|
| + else if (group == kMaterialNormalGroupName)
|
| + mode = MATERIAL_NORMAL;
|
| + else if (group == kMaterialHybridGroupName)
|
| + mode = MATERIAL_HYBRID;
|
| +
|
| + SetMode(mode);
|
| }
|
|
|
| include_secondary_ui_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| @@ -81,6 +102,17 @@ bool MaterialDesignController::IsSecondaryUiMaterial() {
|
| }
|
|
|
| // static
|
| +void MaterialDesignController::Uninitialize() {
|
| + is_mode_initialized_ = false;
|
| +}
|
| +
|
| +// static
|
| +void MaterialDesignController::SetMode(MaterialDesignController::Mode mode) {
|
| + mode_ = mode;
|
| + is_mode_initialized_ = true;
|
| +}
|
| +
|
| +// static
|
| MaterialDesignController::Mode MaterialDesignController::DefaultMode() {
|
| #if defined(OS_CHROMEOS)
|
| // If a scan of available devices has already completed, use material-hybrid
|
| @@ -113,22 +145,11 @@ MaterialDesignController::Mode MaterialDesignController::DefaultMode() {
|
| }
|
| #endif // defined(USE_OZONE)
|
| return MATERIAL_NORMAL;
|
| -#elif defined(OS_LINUX) || defined(OS_MACOSX)
|
| +#elif defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
|
| return MATERIAL_NORMAL;
|
| #else
|
| return NON_MATERIAL;
|
| #endif // defined(OS_CHROMEOS)
|
| }
|
|
|
| -// static
|
| -void MaterialDesignController::Uninitialize() {
|
| - is_mode_initialized_ = false;
|
| -}
|
| -
|
| -// static
|
| -void MaterialDesignController::SetMode(MaterialDesignController::Mode mode) {
|
| - mode_ = mode;
|
| - is_mode_initialized_ = true;
|
| -}
|
| -
|
| } // namespace ui
|
|
|