1 // Copyright (c) 2012 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_UI_WEBUI_OPTIONS_CHROMEOS_INTERNET_OPTIONS_HANDLER_H_ 6 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_INTERNET_OPTIONS_HANDLER_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "base/memory/weak_ptr.h" 12 #include "chrome/browser/ui/webui/options/options_ui.h" 13 #include "chromeos/network/network_state_handler_observer.h" 14 #include "ui/gfx/native_widget_types.h" 15 16 class Browser; 17 class PrefService; 18 19 namespace chromeos { 20 class DeviceState; 21 class NetworkState; 22 class NetworkStateHandlerObserver; 23 } 24 25 namespace gfx { 26 class ImageSkia; 27 } 28 29 namespace views { 30 class WidgetDelegate; 31 } 32 33 namespace chromeos { 34 namespace options { 35 36 // ChromeOS internet options page UI handler. 37 class InternetOptionsHandler 38 : public ::options::OptionsPageUIHandler, 39 public chromeos::NetworkStateHandlerObserver { 40 public: 41 InternetOptionsHandler(); 42 virtual ~InternetOptionsHandler(); 43 44 private: 45 // OptionsPageUIHandler 46 virtual void GetLocalizedValues( 47 base::DictionaryValue* localized_strings) OVERRIDE; 48 virtual void InitializePage() OVERRIDE; 49 50 // WebUIMessageHandler (from OptionsPageUIHandler) 51 virtual void RegisterMessages() OVERRIDE; 52 53 // Callbacks to set network state properties. 54 void ShowMorePlanInfoCallback(const base::ListValue* args); 55 void SetApnCallback(const base::ListValue* args); 56 void SetApnProperties(const base::ListValue* args, 57 const std::string& service_path, 58 const base::DictionaryValue& shill_properties); 59 void CarrierStatusCallback(); 60 void SetCarrierCallback(const base::ListValue* args); 61 void SimOperationCallback(const base::ListValue* args); 62 63 // networkingPrvate callbacks 64 void DisableNetworkTypeCallback(const base::ListValue* args); 65 void EnableNetworkTypeCallback(const base::ListValue* args); 66 void GetManagedPropertiesCallback(const base::ListValue* args); 67 void RequestNetworkScanCallback(const base::ListValue* args); 68 void StartConnectCallback(const base::ListValue* args); 69 void StartDisconnectCallback(const base::ListValue* args); 70 71 // Retrieves a data url for a resource. 72 std::string GetIconDataUrl(int resource_id) const; 73 74 // Refreshes the display of network information. 75 void RefreshNetworkData(); 76 77 // Updates the display of network connection information for the details page 78 // if visible. 79 void UpdateConnectionData(const std::string& service_path); 80 void UpdateConnectionDataCallback( 81 const std::string& service_path, 82 const base::DictionaryValue& shill_properties); 83 // Called when carrier data has been updated to informs the JS. 84 void UpdateCarrier(); 85 86 // NetworkStateHandlerObserver 87 virtual void DeviceListChanged() OVERRIDE; 88 virtual void NetworkListChanged() OVERRIDE; 89 virtual void NetworkConnectionStateChanged( 90 const chromeos::NetworkState* network) OVERRIDE; 91 virtual void NetworkPropertiesUpdated( 92 const chromeos::NetworkState* network) OVERRIDE; 93 virtual void DevicePropertiesUpdated( 94 const chromeos::DeviceState* device) OVERRIDE; 95 96 // Updates the logged in user type. 97 void UpdateLoggedInUserType(); 98 99 // Additional callbacks to set network state properties. 100 void SetServerHostnameCallback(const base::ListValue* args); 101 void SetPreferNetworkCallback(const base::ListValue* args); 102 void SetAutoConnectCallback(const base::ListValue* args); 103 void SetIPConfigCallback(const base::ListValue* args); 104 void SetIPConfigProperties(const base::ListValue* args, 105 const std::string& service_path, 106 const base::DictionaryValue& shill_properties); 107 108 // Retrieves the properties for |service_path| and calls sendNetworkDetails 109 // with the results. 110 void PopulateDictionaryDetailsCallback( 111 const std::string& service_path, 112 const base::DictionaryValue& shill_properties); 113 114 // Gets the native window for hosting dialogs, etc. 115 gfx::NativeWindow GetNativeWindow() const; 116 117 // Gets the UI scale factor. 118 float GetScaleFactor() const; 119 120 // Gets the user PrefService associated with the WebUI. 121 const PrefService* GetPrefs() const; 122 123 // Handle various network commands and clicks on a network item 124 // in the network list. 125 // |args| must be { network_type, service_path, command } with 'command' 126 // one of: [ add, forget, options, connect disconnect, activate ] 127 void NetworkCommandCallback(const base::ListValue* args); 128 129 // Helper functions called by NetworkCommandCallback(...) 130 void AddConnection(const std::string& type); 131 void SendShowDetailedInfo(const std::string& service_path); 132 133 // Creates the map of wired networks. 134 base::ListValue* GetWiredList(); 135 136 // Creates the map of wireless networks. 137 base::ListValue* GetWirelessList(); 138 139 // Creates the map of virtual networks. 140 base::ListValue* GetVPNList(); 141 142 // Creates the map of remembered networks. 143 base::ListValue* GetRememberedList(); 144 145 // Fills network information into JS dictionary for displaying network lists. 146 void FillNetworkInfo(base::DictionaryValue* dictionary); 147 148 // Keep track of the service path for the network shown in the Details view. 149 std::string details_path_; 150 151 // Weak pointer factory so we can start connections at a later time 152 // without worrying that they will actually try to happen after the lifetime 153 // of this object. 154 base::WeakPtrFactory<InternetOptionsHandler> weak_factory_; 155 156 DISALLOW_COPY_AND_ASSIGN(InternetOptionsHandler); 157 }; 158 159 } // namespace options 160 } // namespace chromeos 161 162 #endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_INTERNET_OPTIONS_HANDLER_H_ 163