| 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..41e7be934ff5d5ff04cc6c99bfd0b00e7af8dd40 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,9 @@
|
|
|
| namespace ui {
|
|
|
| +// static
|
| bool MaterialDesignController::is_mode_initialized_ = false;
|
| -
|
| +bool MaterialDesignController::default_to_material_ = false;
|
| MaterialDesignController::Mode MaterialDesignController::mode_ =
|
| MaterialDesignController::NON_MATERIAL;
|
|
|
| @@ -82,6 +84,21 @@ bool MaterialDesignController::IsSecondaryUiMaterial() {
|
|
|
| // static
|
| MaterialDesignController::Mode MaterialDesignController::DefaultMode() {
|
| + // The field trial value, if any, overrides the platform defaults below.
|
| + 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)
|
| + return NON_MATERIAL;
|
| + if (group == kMaterialNormalGroupName)
|
| + return MATERIAL_NORMAL;
|
| + if (group == kMaterialHybridGroupName)
|
| + return MATERIAL_HYBRID;
|
| +
|
| + // No recognized field trial group; fall back to per-platform defaults.
|
| #if defined(OS_CHROMEOS)
|
| // If a scan of available devices has already completed, use material-hybrid
|
| // if a touchscreen is present.
|
| @@ -115,12 +132,19 @@ MaterialDesignController::Mode MaterialDesignController::DefaultMode() {
|
| return MATERIAL_NORMAL;
|
| #elif defined(OS_LINUX) || defined(OS_MACOSX)
|
| return MATERIAL_NORMAL;
|
| +#elif defined(OS_WIN)
|
| + return default_to_material_ ? MATERIAL_NORMAL : NON_MATERIAL;
|
| #else
|
| return NON_MATERIAL;
|
| #endif // defined(OS_CHROMEOS)
|
| }
|
|
|
| // static
|
| +void MaterialDesignController::SetDefaultToMaterial(bool default_to_material) {
|
| + default_to_material_ = default_to_material;
|
| +}
|
| +
|
| +// static
|
| void MaterialDesignController::Uninitialize() {
|
| is_mode_initialized_ = false;
|
| }
|
|
|