• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 "chrome/browser/chromeos/cros/network_library.h"
11 #include "chrome/browser/ui/webui/options/chromeos/cros_options_page_ui_handler.h"
12 #include "content/common/notification_registrar.h"
13 #include "ui/gfx/native_widget_types.h"
14 
15 class SkBitmap;
16 namespace views {
17 class WindowDelegate;
18 }
19 
20 // ChromeOS internet options page UI handler.
21 class InternetOptionsHandler
22   : public chromeos::CrosOptionsPageUIHandler,
23     public chromeos::NetworkLibrary::NetworkManagerObserver,
24     public chromeos::NetworkLibrary::NetworkObserver,
25     public chromeos::NetworkLibrary::CellularDataPlanObserver {
26  public:
27   InternetOptionsHandler();
28   virtual ~InternetOptionsHandler();
29 
30   // OptionsPageUIHandler implementation.
31   virtual void GetLocalizedValues(DictionaryValue* localized_strings);
32   virtual void Initialize();
33 
34   // WebUIMessageHandler implementation.
35   virtual void RegisterMessages();
36 
37   // NetworkLibrary::NetworkManagerObserver implementation.
38   virtual void OnNetworkManagerChanged(chromeos::NetworkLibrary* network_lib);
39   // NetworkLibrary::NetworkObserver implementation.
40   virtual void OnNetworkChanged(chromeos::NetworkLibrary* network_lib,
41                                 const chromeos::Network* network);
42   // NetworkLibrary::CellularDataPlanObserver implementation.
43   virtual void OnCellularDataPlanChanged(chromeos::NetworkLibrary* network_lib);
44 
45   // NotificationObserver implementation.
46   virtual void Observe(NotificationType type,
47                        const NotificationSource& source,
48                        const NotificationDetails& details) OVERRIDE;
49 
50  private:
51   // Opens a modal popup dialog.
52   void CreateModalPopup(views::WindowDelegate* view);
53   gfx::NativeWindow GetNativeWindow() const;
54 
55   // Passes data needed to show details overlay for network.
56   // |args| will be [ network_type, service_path, command ]
57   // And command is one of 'options', 'connect', disconnect', 'activate' or
58   // 'forget'
59   // Handle{Wifi,Cellular}ButtonClick handles button click on a wireless
60   // network item and a cellular network item respectively.
61   void ButtonClickCallback(const ListValue* args);
62   void HandleWifiButtonClick(const std::string& service_path,
63                              const std::string& command);
64   void HandleCellularButtonClick(const std::string& service_path,
65                                  const std::string& command);
66   void HandleVPNButtonClick(const std::string& service_path,
67                             const std::string& command);
68 
69   // Initiates cellular plan data refresh. The results from libcros will be
70   // passed through CellularDataPlanChanged() callback method.
71   // |args| will be [ service_path ]
72   void RefreshCellularPlanCallback(const ListValue* args);
73   void SetActivationButtonVisibility(
74       const chromeos::CellularNetwork* cellular,
75       DictionaryValue* dictionary);
76 
77   void LoginCallback(const ListValue* args);
78   void LoginCertCallback(const ListValue* args);
79   void LoginToOtherCallback(const ListValue* args);
80   void SetDetailsCallback(const ListValue* args);
81   void EnableWifiCallback(const ListValue* args);
82   void DisableWifiCallback(const ListValue* args);
83   void EnableCellularCallback(const ListValue* args);
84   void DisableCellularCallback(const ListValue* args);
85   void BuyDataPlanCallback(const ListValue* args);
86   void SetApnCallback(const ListValue* args);
87   void SetSimCardLockCallback(const ListValue* args);
88   void ChangePinCallback(const ListValue* args);
89 
90   // Populates the ui with the details of the given device path. This forces
91   // an overlay to be displayed in the UI.
92   void PopulateDictionaryDetails(const chromeos::Network* net,
93                                  chromeos::NetworkLibrary* cros);
94   void PopulateWifiDetails(const chromeos::WifiNetwork* wifi,
95                            DictionaryValue* dictionary);
96   void PopulateCellularDetails(chromeos::NetworkLibrary* cros,
97                                const chromeos::CellularNetwork* cellular,
98                                DictionaryValue* dictionary);
99   void PopulateVPNDetails(const chromeos::VirtualNetwork* vpn,
100                           DictionaryValue* dictionary);
101 
102   // Converts CellularDataPlan structure into dictionary for JS. Formats plan
103   // settings into human readable texts.
104   DictionaryValue* CellularDataPlanToDictionary(
105       const chromeos::CellularDataPlan* plan);
106   // Creates the map of a network.
107   ListValue* GetNetwork(const std::string& service_path,
108                         const SkBitmap& icon,
109                         const std::string& name,
110                         bool connecting,
111                         bool connected,
112                         bool connectable,
113                         chromeos::ConnectionType connection_type,
114                         bool remembered,
115                         chromeos::ActivationState activation_state,
116                         bool restricted_ip);
117 
118   // Creates the map of wired networks.
119   ListValue* GetWiredList();
120   // Creates the map of wireless networks.
121   ListValue* GetWirelessList();
122   // Creates the map of remembered networks.
123   ListValue* GetRememberedList();
124   // Fills network information into JS dictionary for displaying network lists.
125   void FillNetworkInfo(DictionaryValue* dictionary,
126                        chromeos::NetworkLibrary* cros);
127   // Refreshes the display of network information.
128   void RefreshNetworkData(chromeos::NetworkLibrary* cros);
129   // Adds observers for wireless networks, if any, so that we can dynamically
130   // display the correct icon for that network's signal strength and, in the
131   // case of cellular networks, network technology and roaming status.
132   void MonitorNetworks(chromeos::NetworkLibrary* cros);
133 
134   // A boolean flag of whether to use WebUI for connect UI. True to use WebUI
135   // and false to use Views dialogs.
136   bool use_settings_ui_;
137 
138   NotificationRegistrar registrar_;
139 
140   DISALLOW_COPY_AND_ASSIGN(InternetOptionsHandler);
141 };
142 
143 #endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_INTERNET_OPTIONS_HANDLER_H_
144