1 // Copyright (c) 2010 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. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_USER_CROS_SETTINGS_PROVIDER_H_ 6 #define CHROME_BROWSER_CHROMEOS_USER_CROS_SETTINGS_PROVIDER_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "chrome/browser/chromeos/cros_settings_provider.h" 13 #include "chrome/browser/chromeos/login/signed_settings_helper.h" 14 15 class ListValue; 16 class PrefService; 17 class Task; 18 19 namespace chromeos { 20 21 // CrosSettingsProvider implementation that works with SignedSettings. 22 // TODO(nkostylev): Rename this class to indicate that it is 23 // SignedSettings specific. 24 class UserCrosSettingsProvider : public CrosSettingsProvider { 25 public: 26 UserCrosSettingsProvider(); 27 virtual ~UserCrosSettingsProvider() {} 28 29 // Registers cached users settings in preferences. 30 static void RegisterPrefs(PrefService* local_state); 31 32 // Methods to use when trusted (signature verified) values are required. 33 // Return true if subsequent call to corresponding cached_* getter shall 34 // return trusted value. 35 // Return false if trusted values are unavailable at a moment. 36 // In latter case passed task will be posted when ready. 37 bool RequestTrustedAllowGuest(Task* callback); 38 bool RequestTrustedAllowNewUser(Task* callback); 39 bool RequestTrustedDataRoamingEnabled(Task* callback); 40 bool RequestTrustedShowUsersOnSignin(Task* callback); 41 bool RequestTrustedOwner(Task* callback); 42 43 // Reloads values from device settings. 44 void Reload(); 45 46 // Helper functions to access cached settings. 47 static bool cached_allow_guest(); 48 static bool cached_allow_new_user(); 49 static bool cached_data_roaming_enabled(); 50 static bool cached_show_users_on_signin(); 51 static const ListValue* cached_whitelist(); 52 static std::string cached_owner(); 53 54 // Returns true if given email is in user whitelist. 55 // Note this function is for display purpose only and should use 56 // CheckWhitelist op for the real whitelist check. 57 static bool IsEmailInCachedWhitelist(const std::string& email); 58 59 // CrosSettingsProvider implementation. 60 virtual bool Get(const std::string& path, Value** out_value) const; 61 virtual bool HandlesSetting(const std::string& path); 62 63 void WhitelistUser(const std::string& email); 64 void UnwhitelistUser(const std::string& email); 65 66 // Updates cached value of the owner. 67 static void UpdateCachedOwner(const std::string& email); 68 69 private: 70 // CrosSettingsProvider implementation. 71 virtual void DoSet(const std::string& path, Value* value); 72 73 DISALLOW_COPY_AND_ASSIGN(UserCrosSettingsProvider); 74 }; 75 76 } // namespace chromeos 77 78 #endif // CHROME_BROWSER_CHROMEOS_USER_CROS_SETTINGS_PROVIDER_H_ 79