Moved --top-chrome-md command line switch from chrome_switches to ui_base_switches.
[chromium-blink-merge.git] / ui / base / resource / material_design / material_design_controller.h
bloba12ae53e4666bea47417ab55b784d2d386e8f1db
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_BASE_RESOURCE_MATERIAL_DESIGN_MATERIAL_DESIGN_CONTROLLER_H_
6 #define UI_BASE_RESOURCE_MATERIAL_DESIGN_MATERIAL_DESIGN_CONTROLLER_H_
8 #include "base/macros.h"
9 #include "ui/base/ui_base_export.h"
11 namespace ui {
13 namespace test {
14 class MaterialDesignControllerTestAPI;
15 } // namespace test
17 // Central controller to handle material design modes.
18 class UI_BASE_EXPORT MaterialDesignController {
19 public:
20 // The different material design modes.
21 enum class Mode {
22 // Basic material design.
23 MATERIAL,
24 // Material design targeted at mouse/touch hybrid devices.
25 MATERIAL_HYBRID,
26 // Classic, non-material design.
27 NON_MATERIAL
30 // Get the current Mode that should be used by the system.
31 static Mode GetMode();
33 private:
34 friend class test::MaterialDesignControllerTestAPI;
36 // Tracks whether |mode_| has been initialized. This is necessary so tests can
37 // reset the state back to a clean state during tear down.
38 static bool is_mode_initialized_;
40 // The current Mode to be used by the system.
41 static Mode mode_;
43 // Declarations only. Do not allow construction of an object.
44 MaterialDesignController();
45 ~MaterialDesignController();
47 // Initializes |mode_|.
48 static void InitializeMode();
50 // Resets the Mode state to uninitialized. To be used by tests to cleanup
51 // global state.
52 static void UninitializeMode();
54 // Set |mode_| to |mode| and updates |is_mode_initialized_| to true. Can be
55 // used by tests to directly set the mode.
56 static void SetMode(Mode mode);
58 DISALLOW_COPY_AND_ASSIGN(MaterialDesignController);
61 } // namespace ui
63 #endif // UI_BASE_RESOURCE_MATERIAL_DESIGN_MATERIAL_DESIGN_CONTROLLER_H_