| 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 ddf60ed546e94909ac1ae96fa91d61358b2273b7..3e0388ec84952a1feb2b9c8fd48b142e84d2bf94 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"
|
| @@ -25,8 +26,9 @@
|
|
|
| namespace ui {
|
|
|
| +// static
|
| bool MaterialDesignController::is_mode_initialized_ = false;
|
| -
|
| +bool MaterialDesignController::windows_should_default_to_material_ = false;
|
| MaterialDesignController::Mode MaterialDesignController::mode_ =
|
| MaterialDesignController::NON_MATERIAL;
|
|
|
| @@ -81,6 +83,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 (DeviceDataManager::HasInstance() &&
|
| DeviceDataManager::GetInstance()->device_lists_complete()) {
|
| @@ -109,12 +126,20 @@ MaterialDesignController::Mode MaterialDesignController::DefaultMode() {
|
| return MATERIAL_NORMAL;
|
| #elif defined(OS_LINUX)
|
| return MATERIAL_NORMAL;
|
| +#elif defined(OS_WIN)
|
| + return windows_should_default_to_material_ ? MATERIAL_NORMAL : NON_MATERIAL;
|
| #else
|
| return NON_MATERIAL;
|
| #endif // defined(OS_CHROMEOS)
|
| }
|
|
|
| // static
|
| +void MaterialDesignController::SetWindowsShouldDefaultToMaterial(
|
| + bool default_to_material) {
|
| + windows_should_default_to_material_ = default_to_material;
|
| +}
|
| +
|
| +// static
|
| void MaterialDesignController::Uninitialize() {
|
| is_mode_initialized_ = false;
|
| }
|
|
|