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"
14 class MaterialDesignControllerTestAPI
;
17 // Central controller to handle material design modes.
18 class UI_BASE_EXPORT MaterialDesignController
{
20 // The different material design modes.
22 // Basic material design.
24 // Material design targeted at mouse/touch hybrid devices.
26 // Classic, non-material design.
30 // Get the current Mode that should be used by the system.
31 static Mode
GetMode();
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.
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
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
);
63 #endif // UI_BASE_RESOURCE_MATERIAL_DESIGN_MATERIAL_DESIGN_CONTROLLER_H_