1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_OWNER_FLAGS_STORAGE_H_
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define CHROME_BROWSER_CHROMEOS_SETTINGS_OWNER_FLAGS_STORAGE_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/compiler_specific.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/pref_service_flags_storage.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace chromeos {
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass CrosSettings;
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace about_flags {
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Implements the FlagsStorage interface for the owner flags. It inherits from
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// PrefServiceFlagsStorage but extends it with storing the flags in the signed
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// settings as well which effectively applies them to the login session as well.
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass OwnerFlagsStorage : public ::about_flags::PrefServiceFlagsStorage {
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public:
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  OwnerFlagsStorage(PrefService *prefs, CrosSettings *cros_settings);
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual ~OwnerFlagsStorage();
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
25d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual bool SetFlags(const std::set<std::string>& flags) OVERRIDE;
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private:
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  CrosSettings* cros_settings_;
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch};
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace about_flags
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace chromeos
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  // CHROME_BROWSER_CHROMEOS_SETTINGS_OWNER_FLAGS_STORAGE_H_
35