blob: 7600620d9e1e6443e834755f1c379f6a796d1cf4 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_DISPLAY_DISPLAY_PREFS_H_
#define CHROME_BROWSER_CHROMEOS_DISPLAY_DISPLAY_PREFS_H_
#include <stdint.h>
#include <array>
#include "base/optional.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
#include "ui/display/display.h"
#include "ui/display/display_layout.h"
class PrefRegistrySimple;
class PrefService;
namespace gfx {
class Point;
}
namespace display {
struct MixedMirrorModeParams;
struct TouchCalibrationData;
}
namespace chromeos {
// Manages display preference settings. Settings are stored in the local state
// for the session.
class DisplayPrefs {
public:
// Registers the prefs associated with display settings.
static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
// TODO(stevenjb): Move to ash::Shell::display_prefs().
static DisplayPrefs* Get();
explicit DisplayPrefs(PrefService* local_state);
~DisplayPrefs();
// Stores all current displays preferences.
void StoreDisplayPrefs();
// Loads display preferences from |local_state_|. |first_run_after_boot| is
// used to determine whether power state preferences should be applied.
void LoadDisplayPreferences(bool first_run_after_boot);
// Test helper methods.
void StoreDisplayRotationPrefsForTest(display::Display::Rotation rotation,
bool rotation_lock);
void StoreDisplayLayoutPrefForTest(const display::DisplayIdList& list,
const display::DisplayLayout& layout);
void StoreDisplayPowerStateForTest(DisplayPowerState power_state);
void LoadTouchAssociationPreferenceForTest();
void StoreLegacyTouchDataForTest(int64_t display_id,
const display::TouchCalibrationData& data);
// Parses the marshalled string data stored in local preferences for
// calibration points and populates |point_pair_quad| using the unmarshalled
// data. See TouchCalibrationData in Managed display info.
bool ParseTouchCalibrationStringForTest(
const std::string& str,
std::array<std::pair<gfx::Point, gfx::Point>, 4>* point_pair_quad);
// Stores the given |mixed_params| for tests. Clears stored parameters if
// |mixed_params| is null.
void StoreDisplayMixedMirrorModeParamsForTest(
const base::Optional<display::MixedMirrorModeParams>& mixed_params);
private:
PrefService* local_state_;
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_DISPLAY_DISPLAY_PREFS_H_