15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CORE_CHROMEOS_OPTIONS_HANDLER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CORE_CHROMEOS_OPTIONS_HANDLER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <map> 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/memory/linked_ptr.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/chromeos/ui_proxy_config_service.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/core_options_handler.h" 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/browser/notification_observer.h" 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/browser/notification_registrar.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CoreChromeOSOptionsHandler handles ChromeOS settings. 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass CoreChromeOSOptionsHandler : public ::options::CoreOptionsHandler, 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public content::NotificationObserver { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CoreChromeOSOptionsHandler(); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~CoreChromeOSOptionsHandler(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ::CoreOptionsHandler overrides 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void RegisterMessages() OVERRIDE; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::Value* FetchPref(const std::string& pref_name) OVERRIDE; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InitializeHandler() OVERRIDE; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ObservePref(const std::string& pref_name) OVERRIDE; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetPref(const std::string& pref_name, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Value* value, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& metric) OVERRIDE; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void StopObservingPref(const std::string& path) OVERRIDE; 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::Value* CreateValueForPref( 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& pref_name, 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& controlling_pref_name) OVERRIDE; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OptionsPageUIHandler implementation. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetLocalizedValues( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::DictionaryValue* localized_strings) OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // content::NotificationObserver implementation. 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Observe(int type, 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const content::NotificationSource& source, 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const content::NotificationDetails& details) OVERRIDE; 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnPreferenceChanged(PrefService* service, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& pref_name) OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Called from Javascript to select the network to show proxy settings 55868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // for. Triggers pref notifications about the updated proxy settings. 56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void SelectNetworkCallback(const base::ListValue* args); 57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies registered JS callbacks on ChromeOS setting change. 5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void NotifySettingsChanged(const std::string& setting_name); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void NotifyProxyPrefsChanged(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Called on changes to the ownership status. Needed to update the interface 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // in case it has been shown before ownership has been fully established. 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void NotifyOwnershipChanged(); 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) typedef std::map<std::string, linked_ptr<CrosSettings::ObserverSubscription> > 6768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SubscriptionMap; 6868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SubscriptionMap pref_subscription_map_; 6968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch content::NotificationRegistrar notification_registrar_; 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UIProxyConfigService proxy_config_service_; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace options 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CORE_CHROMEOS_OPTIONS_HANDLER_H_ 79