Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: chrome/browser/ui/webui/options2/chromeos/internet_options_handler.cc

Issue 10827283: This updates the StaticIP configuration UI to match new mocks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/webui/options2/chromeos/internet_options_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/options2/chromeos/internet_options_handler.h" 5 #include "chrome/browser/ui/webui/options2/chromeos/internet_options_handler.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 12
13 #include "ash/shell.h" 13 #include "ash/shell.h"
14 #include "ash/shell_delegate.h" 14 #include "ash/shell_delegate.h"
15 #include "base/base64.h" 15 #include "base/base64.h"
16 #include "base/basictypes.h" 16 #include "base/basictypes.h"
17 #include "base/bind.h" 17 #include "base/bind.h"
18 #include "base/bind_helpers.h" 18 #include "base/bind_helpers.h"
19 #include "base/command_line.h" 19 #include "base/command_line.h"
20 #include "base/i18n/time_formatting.h" 20 #include "base/i18n/time_formatting.h"
21 #include "base/json/json_writer.h"
21 #include "base/string16.h" 22 #include "base/string16.h"
22 #include "base/string_number_conversions.h" 23 #include "base/string_number_conversions.h"
23 #include "base/stringprintf.h" 24 #include "base/stringprintf.h"
24 #include "base/time.h" 25 #include "base/time.h"
25 #include "base/utf_string_conversions.h" 26 #include "base/utf_string_conversions.h"
26 #include "base/values.h" 27 #include "base/values.h"
27 #include "chrome/browser/browser_process.h" 28 #include "chrome/browser/browser_process.h"
28 #include "chrome/browser/chromeos/choose_mobile_network_dialog.h" 29 #include "chrome/browser/chromeos/choose_mobile_network_dialog.h"
29 #include "chrome/browser/chromeos/cros/cros_library.h" 30 #include "chrome/browser/chromeos/cros/cros_library.h"
31 #include "chrome/browser/chromeos/cros/cros_network_functions.h"
30 #include "chrome/browser/chromeos/cros/network_library.h" 32 #include "chrome/browser/chromeos/cros/network_library.h"
31 #include "chrome/browser/chromeos/cros/onc_constants.h" 33 #include "chrome/browser/chromeos/cros/onc_constants.h"
32 #include "chrome/browser/chromeos/enrollment_dialog_view.h" 34 #include "chrome/browser/chromeos/enrollment_dialog_view.h"
33 #include "chrome/browser/chromeos/mobile_config.h" 35 #include "chrome/browser/chromeos/mobile_config.h"
34 #include "chrome/browser/chromeos/options/network_config_view.h" 36 #include "chrome/browser/chromeos/options/network_config_view.h"
35 #include "chrome/browser/chromeos/proxy_config_service_impl.h" 37 #include "chrome/browser/chromeos/proxy_config_service_impl.h"
36 #include "chrome/browser/chromeos/settings/cros_settings.h" 38 #include "chrome/browser/chromeos/settings/cros_settings.h"
37 #include "chrome/browser/chromeos/sim_dialog_delegate.h" 39 #include "chrome/browser/chromeos/sim_dialog_delegate.h"
38 #include "chrome/browser/chromeos/status/network_menu_icon.h" 40 #include "chrome/browser/chromeos/status/network_menu_icon.h"
39 #include "chrome/browser/net/pref_proxy_config_tracker.h" 41 #include "chrome/browser/net/pref_proxy_config_tracker.h"
40 #include "chrome/browser/profiles/profile.h" 42 #include "chrome/browser/profiles/profile.h"
41 #include "chrome/browser/profiles/profile_manager.h" 43 #include "chrome/browser/profiles/profile_manager.h"
42 #include "chrome/browser/ui/browser.h" 44 #include "chrome/browser/ui/browser.h"
43 #include "chrome/browser/ui/browser_finder.h" 45 #include "chrome/browser/ui/browser_finder.h"
44 #include "chrome/browser/ui/browser_window.h" 46 #include "chrome/browser/ui/browser_window.h"
45 #include "chrome/browser/ui/singleton_tabs.h" 47 #include "chrome/browser/ui/singleton_tabs.h"
46 #include "chrome/browser/ui/webui/web_ui_util.h" 48 #include "chrome/browser/ui/webui/web_ui_util.h"
47 #include "chrome/common/chrome_notification_types.h" 49 #include "chrome/common/chrome_notification_types.h"
48 #include "chrome/common/chrome_switches.h" 50 #include "chrome/common/chrome_switches.h"
49 #include "chrome/common/time_format.h" 51 #include "chrome/common/time_format.h"
50 #include "content/public/browser/notification_service.h" 52 #include "content/public/browser/notification_service.h"
51 #include "content/public/browser/web_contents.h" 53 #include "content/public/browser/web_contents.h"
52 #include "content/public/browser/web_ui.h" 54 #include "content/public/browser/web_ui.h"
53 #include "grit/chromium_strings.h" 55 #include "grit/chromium_strings.h"
54 #include "grit/generated_resources.h" 56 #include "grit/generated_resources.h"
55 #include "grit/locale_settings.h" 57 #include "grit/locale_settings.h"
56 #include "grit/theme_resources.h" 58 #include "grit/theme_resources.h"
59 #include "third_party/cros_system_api/dbus/service_constants.h"
57 #include "ui/base/l10n/l10n_util.h" 60 #include "ui/base/l10n/l10n_util.h"
58 #include "ui/base/layout.h" 61 #include "ui/base/layout.h"
59 #include "ui/base/resource/resource_bundle.h" 62 #include "ui/base/resource/resource_bundle.h"
60 #include "ui/gfx/display.h" 63 #include "ui/gfx/display.h"
61 #include "ui/gfx/image/image_skia.h" 64 #include "ui/gfx/image/image_skia.h"
62 #include "ui/gfx/screen.h" 65 #include "ui/gfx/screen.h"
63 #include "ui/views/widget/widget.h" 66 #include "ui/views/widget/widget.h"
64 67
65 namespace { 68 namespace {
66 69
67 static const char kOtherNetworksFakePath[] = "?"; 70 static const char kOtherNetworksFakePath[] = "?";
68 71
69 // Keys for the network description dictionary passed to the web ui. Make sure 72 // Keys for the network description dictionary passed to the web ui. Make sure
70 // to keep the strings in sync with what the Javascript side uses. 73 // to keep the strings in sync with what the JavaScript side uses.
71 const char kNetworkInfoKeyActivationState[] = "activation_state"; 74 const char kNetworkInfoKeyActivationState[] = "activation_state";
72 const char kNetworkInfoKeyConnectable[] = "connectable"; 75 const char kNetworkInfoKeyConnectable[] = "connectable";
73 const char kNetworkInfoKeyConnected[] = "connected"; 76 const char kNetworkInfoKeyConnected[] = "connected";
74 const char kNetworkInfoKeyConnecting[] = "connecting"; 77 const char kNetworkInfoKeyConnecting[] = "connecting";
75 const char kNetworkInfoKeyIconURL[] = "iconURL"; 78 const char kNetworkInfoKeyIconURL[] = "iconURL";
76 const char kNetworkInfoKeyNeedsNewPlan[] = "needs_new_plan"; 79 const char kNetworkInfoKeyNeedsNewPlan[] = "needs_new_plan";
77 const char kNetworkInfoKeyNetworkName[] = "networkName"; 80 const char kNetworkInfoKeyNetworkName[] = "networkName";
78 const char kNetworkInfoKeyNetworkStatus[] = "networkStatus"; 81 const char kNetworkInfoKeyNetworkStatus[] = "networkStatus";
79 const char kNetworkInfoKeyNetworkType[] = "networkType"; 82 const char kNetworkInfoKeyNetworkType[] = "networkType";
80 const char kNetworkInfoKeyRemembered[] = "remembered"; 83 const char kNetworkInfoKeyRemembered[] = "remembered";
81 const char kNetworkInfoKeyServicePath[] = "servicePath"; 84 const char kNetworkInfoKeyServicePath[] = "servicePath";
82 const char kNetworkInfoKeyPolicyManaged[] = "policyManaged"; 85 const char kNetworkInfoKeyPolicyManaged[] = "policyManaged";
83 86
87 // These are keys for getting IP information from the web ui.
88 const char kIpConfigAddress[] = "address";
89 const char kIpConfigPrefixLength[] = "prefixLength";
90 const char kIpConfigNetmask[] = "netmask";
91 const char kIpConfigGateway[] = "gateway";
92 const char kIpConfigNameServers[] = "nameServers";
93 const char kIpConfigAutoConfig[] = "ipAutoConfig";
94
95 // These are types of name server selections from the web ui.
96 const char kNameServerTypeAutomatic[] = "automatic";
97 const char kNameServerTypeGoogle[] = "google";
98 const char kNameServerTypeUser[] = "user";
99
100 // These are dictionary names used to send data to the web ui.
101 const char kDictionaryIpConfig[] = "ipconfig";
102 const char kDictionaryStaticIp[] = "staticIP";
103 const char kDictionarySavedIp[] = "savedIP";
104
105 // Google public name servers (DNS).
106 const char kGoogleNameServers[] = "8.8.4.4,8.8.8.8";
107
108 // Functions we call in JavaScript.
109 const char kRefreshNetworkDataFunction[] =
110 "options.network.NetworkList.refreshNetworkData";
111 const char kShowDetailedInfoFunction[] =
112 "options.internet.DetailsInternetPage.showDetailedInfo";
113 const char kUpdateCellularPlansFunction[] =
114 "options.internet.DetailsInternetPage.updateCellularPlans";
115 const char kUpdateSecurityTabFunction[] =
116 "options.internet.DetailsInternetPage.updateSecurityTab";
117
118 // These are used to register message handlers with JavaScript.
119 const char kBuyDataPlanMessage[] = "buyDataPlan";
120 const char kChangePinMessage[] = "changePin";
121 const char kDisableCellularMessage[] = "disableCellular";
122 const char kDisableWifiMessage[] = "disableWifi";
123 const char kDisableWimaxMessage[] = "disableWimax";
124 const char kEnableCellularMessage[] = "enableCellular";
125 const char kEnableWifiMessage[] = "enableWifi";
126 const char kEnableWimaxMessage[] = "enableWimax";
127 const char kNetworkCommandMessage[] = "networkCommand";
128 const char kRefreshCellularPlanMessage[] = "refreshCellularPlan";
129 const char kRefreshNetworksMessage[] = "refreshNetworks";
130 const char kSetApnMessage[] = "setApn";
131 const char kSetAutoConnectMessage[] = "setAutoConnect";
132 const char kSetIPConfigMessage[] = "setIPConfig";
133 const char kSetPreferNetworkMessage[] = "setPreferNetwork";
134 const char kSetSimCardLockMessage[] = "setSimCardLock";
135 const char kShowMorePlanInfoMessage[] = "showMorePlanInfo";
136
137 // These are strings used to communicate with JavaScript.
138 const char kTagAccessLocked[] = "accessLocked";
139 const char kTagActivate[] = "activate";
140 const char kTagActivated[] = "activated";
141 const char kTagActivationState[] = "activationState";
142 const char kTagAirplaneMode[] = "airplaneMode";
143 const char kTagApn[] = "apn";
144 const char kTagAutoConnect[] = "autoConnect";
145 const char kTagBssid[] = "bssid";
146 const char kTagCarrierUrl[] = "carrierUrl";
147 const char kTagCellularAvailable[] = "cellularAvailable";
148 const char kTagCellularBusy[] = "cellularBusy";
149 const char kTagCellularEnabled[] = "cellularEnabled";
150 const char kTagConnect[] = "connect";
151 const char kTagConnected[] = "connected";
152 const char kTagConnecting[] = "connecting";
153 const char kTagConnectionState[] = "connectionState";
154 const char kTagControlledBy[] = "controlledBy";
155 const char kTagDataRemaining[] = "dataRemaining";
156 const char kTagDefault[] = "default";
157 const char kTagDeviceConnected[] = "deviceConnected";
158 const char kTagDisconnect[] = "disconnect";
159 const char kTagEncryption[] = "encryption";
160 const char kTagErrorState[] = "errorState";
161 const char kTagEsn[] = "esn";
162 const char kTagFirmwareRevision[] = "firmwareRevision";
163 const char kTagForget[] = "forget";
164 const char kTagFrequency[] = "frequency";
165 const char kTagGsm[] = "gsm";
166 const char kTagHardwareAddress[] = "hardwareAddress";
167 const char kTagHardwareRevision[] = "hardwareRevision";
168 const char kTagIdentity[] = "identity";
169 const char kTagImei[] = "imei";
170 const char kTagImsi[] = "imsi";
171 const char kTagLanguage[] = "language";
172 const char kTagLastGoodApn[] = "lastGoodApn";
173 const char kTagLocalizedName[] = "localizedName";
174 const char kTagManufacturer[] = "manufacturer";
175 const char kTagMdn[] = "mdn";
176 const char kTagMeid[] = "meid";
177 const char kTagMin[] = "min";
178 const char kTagModelId[] = "modelId";
179 const char kTagName[] = "name";
180 const char kTagNameServersGoogle[] = "nameServersGoogle";
181 const char kTagNameServerType[] = "nameServerType";
182 const char kTagNeedsPlan[] = "needsPlan";
183 const char kTagNetworkId[] = "networkId";
184 const char kTagNetworkName[] = "networkName";
185 const char kTagNetworkTechnology[] = "networkTechnology";
186 const char kTagOperatorCode[] = "operatorCode";
187 const char kTagOperatorName[] = "operatorName";
188 const char kTagOptions[] = "options";
189 const char kTagPassword[] = "password";
190 const char kTagPlanExpires[] = "planExpires";
191 const char kTagPlans[] = "plans";
192 const char kTagPlanSummary[] = "planSummary";
193 const char kTagPlanType[] = "planType";
194 const char kTagPolicy[] = "policy";
195 const char kTagPreferred[] = "preferred";
196 const char kTagPrlVersion[] = "prlVersion";
197 const char kTagProvider_type[] = "provider_type";
198 const char kTagProviderApnList[] = "providerApnList";
199 const char kTagRecommended[] = "recommended";
200 const char kTagRemembered[] = "remembered";
201 const char kTagRememberedList[] = "rememberedList";
202 const char kTagRestrictedPool[] = "restrictedPool";
203 const char kTagRoamingState[] = "roamingState";
204 const char kTagServer_hostname[] = "server_hostname";
205 const char kTagService_name[] = "service_name";
206 const char kTagServiceName[] = "serviceName";
207 const char kTagServicePath[] = "servicePath";
208 const char kTagShared[] = "shared";
209 const char kTagShowActivateButton[] = "showActivateButton";
210 const char kTagShowBuyButton[] = "showBuyButton";
211 const char kTagShowPreferred[] = "showPreferred";
212 const char kTagShowProxy[] = "showProxy";
213 const char kTagShowStaticIPConfig[] = "showStaticIPConfig";
214 const char kTagShowViewAccountButton[] = "showViewAccountButton";
215 const char kTagSimCardLockEnabled[] = "simCardLockEnabled";
216 const char kTagSsid[] = "ssid";
217 const char kTagStrength[] = "strength";
218 const char kTagSupportUrl[] = "supportUrl";
219 const char kTagTrue[] = "true";
220 const char kTagType[] = "type";
221 const char kTagUsername[] = "username";
222 const char kTagValue[] = "value";
223 const char kTagVpnList[] = "vpnList";
224 const char kTagWarning[] = "warning";
225 const char kTagWifiAvailable[] = "wifiAvailable";
226 const char kTagWifiBusy[] = "wifiBusy";
227 const char kTagWifiEnabled[] = "wifiEnabled";
228 const char kTagWimaxAvailable[] = "wimaxAvailable";
229 const char kTagWimaxBusy[] = "wimaxBusy";
230 const char kTagWimaxEnabled[] = "wimaxEnabled";
231 const char kTagWiredList[] = "wiredList";
232 const char kTagWirelessList[] = "wirelessList";
233 const char kToggleAirplaneModeMessage[] = "toggleAirplaneMode";
234
84 // A helper class for building network information dictionaries to be sent to 235 // A helper class for building network information dictionaries to be sent to
85 // the webui code. 236 // the webui code.
86 class NetworkInfoDictionary { 237 class NetworkInfoDictionary {
87 public: 238 public:
88 // Initializes the dictionary with default values. 239 // Initializes the dictionary with default values.
89 explicit NetworkInfoDictionary(float icon_scale); 240 explicit NetworkInfoDictionary(float icon_scale);
90 241
91 // Copies in service path, connect{ing|ed|able} flags and connection type from 242 // Copies in service path, connect{ing|ed|able} flags and connection type from
92 // the provided network object. Also chooses an appropriate icon based on the 243 // the provided network object. Also chooses an appropriate icon based on the
93 // network type. 244 // network type.
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 network_info->SetString(kNetworkInfoKeyNetworkName, name_); 404 network_info->SetString(kNetworkInfoKeyNetworkName, name_);
254 network_info->SetString(kNetworkInfoKeyNetworkStatus, status); 405 network_info->SetString(kNetworkInfoKeyNetworkStatus, status);
255 network_info->SetInteger(kNetworkInfoKeyNetworkType, 406 network_info->SetInteger(kNetworkInfoKeyNetworkType,
256 static_cast<int>(connection_type_)); 407 static_cast<int>(connection_type_));
257 network_info->SetBoolean(kNetworkInfoKeyRemembered, remembered_); 408 network_info->SetBoolean(kNetworkInfoKeyRemembered, remembered_);
258 network_info->SetString(kNetworkInfoKeyServicePath, service_path_); 409 network_info->SetString(kNetworkInfoKeyServicePath, service_path_);
259 network_info->SetBoolean(kNetworkInfoKeyPolicyManaged, policy_managed_); 410 network_info->SetBoolean(kNetworkInfoKeyPolicyManaged, policy_managed_);
260 return network_info.release(); 411 return network_info.release();
261 } 412 }
262 413
414 // Pulls IP information out of a shill service properties dictionary. If
415 // |static_ip| is true, then it fetches "StaticIP.*" properties. If not, then it
416 // fetches "SavedIP.*" properties. Caller must take ownership of returned
417 // dictionary. If non-NULL, |ip_parameters_set| returns a count of the number
418 // of IP routing parameters that get set.
419 DictionaryValue* BuildIPInfoDictionary(const DictionaryValue& shill_properties,
420 bool static_ip,
421 int* routing_parameters_set) {
422 std::string address_key;
423 std::string prefix_len_key;
424 std::string gateway_key;
425 std::string name_servers_key;
426 if (static_ip) {
427 address_key = shill::kStaticIPAddressProperty;
428 prefix_len_key = shill::kStaticIPPrefixlenProperty;
429 gateway_key = shill::kStaticIPGatewayProperty;
430 name_servers_key = shill::kStaticIPNameServersProperty;
431 } else {
432 address_key = shill::kSavedIPAddressProperty;
433 prefix_len_key = shill::kSavedIPPrefixlenProperty;
434 gateway_key = shill::kSavedIPGatewayProperty;
435 name_servers_key = shill::kSavedIPNameServersProperty;
436 }
437
438 scoped_ptr<DictionaryValue> ip_info_dict(new DictionaryValue);
439 std::string address;
440 int routing_parameters = 0;
441 if (shill_properties.GetStringWithoutPathExpansion(address_key, &address)) {
442 ip_info_dict->SetString(kIpConfigAddress, address);
443 VLOG(2) << "Found " << address_key << ": " << address;
444 routing_parameters++;
445 }
446 int prefix_len = -1;
447 if (shill_properties.GetIntegerWithoutPathExpansion(
448 prefix_len_key, &prefix_len)) {
449 ip_info_dict->SetInteger(kIpConfigPrefixLength, prefix_len);
450 ip_info_dict->SetString(kIpConfigNetmask,
451 chromeos::CrosPrefixLengthToNetmask(prefix_len));
452 VLOG(2) << "Found " << prefix_len_key << ": "
453 << prefix_len
454 << " (" << chromeos::CrosPrefixLengthToNetmask(prefix_len) << ")";
455 routing_parameters++;
456 }
457 std::string gateway;
458 if (shill_properties.GetStringWithoutPathExpansion(gateway_key, &gateway)) {
459 ip_info_dict->SetString(kIpConfigGateway, gateway);
460 VLOG(2) << "Found " << gateway_key << ": " << gateway;
461 routing_parameters++;
462 }
463 if (routing_parameters_set)
464 *routing_parameters_set = routing_parameters;
465
466 std::string name_servers;
467 if (shill_properties.GetStringWithoutPathExpansion(
468 name_servers_key, &name_servers)) {
469 ip_info_dict->SetString(kIpConfigNameServers, name_servers);
470 VLOG(2) << "Found " << name_servers_key << ": " << name_servers;
471 }
472
473 return ip_info_dict.release();
474 }
475
263 } // namespace 476 } // namespace
264 477
265 namespace options2 { 478 namespace options2 {
266 479
267 InternetOptionsHandler::InternetOptionsHandler() 480 InternetOptionsHandler::InternetOptionsHandler()
268 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { 481 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
269 registrar_.Add(this, chrome::NOTIFICATION_REQUIRE_PIN_SETTING_CHANGE_ENDED, 482 registrar_.Add(this, chrome::NOTIFICATION_REQUIRE_PIN_SETTING_CHANGE_ENDED,
270 content::NotificationService::AllSources()); 483 content::NotificationService::AllSources());
271 registrar_.Add(this, chrome::NOTIFICATION_ENTER_PIN_ENDED, 484 registrar_.Add(this, chrome::NOTIFICATION_ENTER_PIN_ENDED,
272 content::NotificationService::AllSources()); 485 content::NotificationService::AllSources());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CHANGE_PROXY_BUTTON }, 544 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CHANGE_PROXY_BUTTON },
332 { "managedNetwork", IDS_OPTIONS_SETTINGS_MANAGED_NETWORK }, 545 { "managedNetwork", IDS_OPTIONS_SETTINGS_MANAGED_NETWORK },
333 { "wifiNetworkTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_CONNECTION }, 546 { "wifiNetworkTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_CONNECTION },
334 { "vpnTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_VPN }, 547 { "vpnTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_VPN },
335 { "cellularPlanTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_PLAN }, 548 { "cellularPlanTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_PLAN },
336 { "cellularConnTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_CONNECTION }, 549 { "cellularConnTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_CONNECTION },
337 { "cellularDeviceTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_DEVICE }, 550 { "cellularDeviceTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_DEVICE },
338 { "networkTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_NETWORK }, 551 { "networkTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_NETWORK },
339 { "securityTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_SECURITY }, 552 { "securityTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_SECURITY },
340 { "proxyTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_PROXY }, 553 { "proxyTabLabel", IDS_OPTIONS_SETTINGS_INTERNET_TAB_PROXY },
341 { "useDHCP", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_USE_DHCP },
342 { "useStaticIP", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_USE_STATIC_IP },
343 { "connectionState", IDS_OPTIONS_SETTINGS_INTERNET_CONNECTION_STATE }, 554 { "connectionState", IDS_OPTIONS_SETTINGS_INTERNET_CONNECTION_STATE },
344 { "inetAddress", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_ADDRESS }, 555 { "inetAddress", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_ADDRESS },
345 { "inetSubnetAddress", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SUBNETMASK }, 556 { "inetNetmask", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SUBNETMASK },
346 { "inetGateway", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_GATEWAY }, 557 { "inetGateway", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_GATEWAY },
347 { "inetDns", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_DNSSERVER }, 558 { "inetNameServers", IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_DNSSERVER },
559 { "ipAutomaticConfiguration",
560 IDS_OPTIONS_SETTINGS_INTERNET_IP_AUTOMATIC_CONFIGURATION },
561 { "automaticNameServers",
562 IDS_OPTIONS_SETTINGS_INTERNET_AUTOMATIC_NAME_SERVERS },
563 { "userNameServer1", IDS_OPTIONS_SETTINGS_INTERNET_USER_NAME_SERVER_1 },
564 { "userNameServer2", IDS_OPTIONS_SETTINGS_INTERNET_USER_NAME_SERVER_2 },
565 { "userNameServer3", IDS_OPTIONS_SETTINGS_INTERNET_USER_NAME_SERVER_3 },
566 { "userNameServer4", IDS_OPTIONS_SETTINGS_INTERNET_USER_NAME_SERVER_4 },
567 { "googleNameServers", IDS_OPTIONS_SETTINGS_INTERNET_GOOGLE_NAME_SERVERS },
568 { "userNameServers", IDS_OPTIONS_SETTINGS_INTERNET_USER_NAME_SERVERS },
348 { "hardwareAddress", 569 { "hardwareAddress",
349 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_HARDWARE_ADDRESS }, 570 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_HARDWARE_ADDRESS },
350 { "detailsInternetDismiss", IDS_CLOSE }, 571 { "detailsInternetDismiss", IDS_CLOSE },
351 { "activateButton", IDS_OPTIONS_SETTINGS_ACTIVATE }, 572 { "activateButton", IDS_OPTIONS_SETTINGS_ACTIVATE },
352 { "buyplanButton", IDS_OPTIONS_SETTINGS_BUY_PLAN }, 573 { "buyplanButton", IDS_OPTIONS_SETTINGS_BUY_PLAN },
353 { "connectButton", IDS_OPTIONS_SETTINGS_CONNECT }, 574 { "connectButton", IDS_OPTIONS_SETTINGS_CONNECT },
354 { "disconnectButton", IDS_OPTIONS_SETTINGS_DISCONNECT }, 575 { "disconnectButton", IDS_OPTIONS_SETTINGS_DISCONNECT },
355 { "viewAccountButton", IDS_STATUSBAR_NETWORK_VIEW_ACCOUNT }, 576 { "viewAccountButton", IDS_STATUSBAR_NETWORK_VIEW_ACCOUNT },
356 577
357 // TODO(zelidrag): Change details title to Wimax once we get strings. 578 // TODO(zelidrag): Change details title to Wimax once we get strings.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 FillNetworkInfo(network_dictionary); 681 FillNetworkInfo(network_dictionary);
461 localized_strings->Set("networkData", network_dictionary); 682 localized_strings->Set("networkData", network_dictionary);
462 } 683 }
463 684
464 void InternetOptionsHandler::InitializePage() { 685 void InternetOptionsHandler::InitializePage() {
465 cros_->RequestNetworkScan(); 686 cros_->RequestNetworkScan();
466 } 687 }
467 688
468 void InternetOptionsHandler::RegisterMessages() { 689 void InternetOptionsHandler::RegisterMessages() {
469 // Setup handlers specific to this panel. 690 // Setup handlers specific to this panel.
470 web_ui()->RegisterMessageCallback("networkCommand", 691 web_ui()->RegisterMessageCallback(kNetworkCommandMessage,
471 base::Bind(&InternetOptionsHandler::NetworkCommandCallback, 692 base::Bind(&InternetOptionsHandler::NetworkCommandCallback,
472 base::Unretained(this))); 693 base::Unretained(this)));
473 web_ui()->RegisterMessageCallback("refreshNetworks", 694 web_ui()->RegisterMessageCallback(kRefreshNetworksMessage,
474 base::Bind(&InternetOptionsHandler::RefreshNetworksCallback, 695 base::Bind(&InternetOptionsHandler::RefreshNetworksCallback,
475 base::Unretained(this))); 696 base::Unretained(this)));
476 web_ui()->RegisterMessageCallback("refreshCellularPlan", 697 web_ui()->RegisterMessageCallback(kRefreshCellularPlanMessage,
477 base::Bind(&InternetOptionsHandler::RefreshCellularPlanCallback, 698 base::Bind(&InternetOptionsHandler::RefreshCellularPlanCallback,
478 base::Unretained(this))); 699 base::Unretained(this)));
479 web_ui()->RegisterMessageCallback("setPreferNetwork", 700 web_ui()->RegisterMessageCallback(kSetPreferNetworkMessage,
480 base::Bind(&InternetOptionsHandler::SetPreferNetworkCallback, 701 base::Bind(&InternetOptionsHandler::SetPreferNetworkCallback,
481 base::Unretained(this))); 702 base::Unretained(this)));
482 web_ui()->RegisterMessageCallback("setAutoConnect", 703 web_ui()->RegisterMessageCallback(kSetAutoConnectMessage,
483 base::Bind(&InternetOptionsHandler::SetAutoConnectCallback, 704 base::Bind(&InternetOptionsHandler::SetAutoConnectCallback,
484 base::Unretained(this))); 705 base::Unretained(this)));
485 web_ui()->RegisterMessageCallback("setIPConfig", 706 web_ui()->RegisterMessageCallback(kSetIPConfigMessage,
486 base::Bind(&InternetOptionsHandler::SetIPConfigCallback, 707 base::Bind(&InternetOptionsHandler::SetIPConfigCallback,
487 base::Unretained(this))); 708 base::Unretained(this)));
488 web_ui()->RegisterMessageCallback("enableWifi", 709 web_ui()->RegisterMessageCallback(kEnableWifiMessage,
489 base::Bind(&InternetOptionsHandler::EnableWifiCallback, 710 base::Bind(&InternetOptionsHandler::EnableWifiCallback,
490 base::Unretained(this))); 711 base::Unretained(this)));
491 web_ui()->RegisterMessageCallback("disableWifi", 712 web_ui()->RegisterMessageCallback(kDisableWifiMessage,
492 base::Bind(&InternetOptionsHandler::DisableWifiCallback, 713 base::Bind(&InternetOptionsHandler::DisableWifiCallback,
493 base::Unretained(this))); 714 base::Unretained(this)));
494 web_ui()->RegisterMessageCallback("enableCellular", 715 web_ui()->RegisterMessageCallback(kEnableCellularMessage,
495 base::Bind(&InternetOptionsHandler::EnableCellularCallback, 716 base::Bind(&InternetOptionsHandler::EnableCellularCallback,
496 base::Unretained(this))); 717 base::Unretained(this)));
497 web_ui()->RegisterMessageCallback("disableCellular", 718 web_ui()->RegisterMessageCallback(kDisableCellularMessage,
498 base::Bind(&InternetOptionsHandler::DisableCellularCallback, 719 base::Bind(&InternetOptionsHandler::DisableCellularCallback,
499 base::Unretained(this))); 720 base::Unretained(this)));
500 web_ui()->RegisterMessageCallback("enableWimax", 721 web_ui()->RegisterMessageCallback(kEnableWimaxMessage,
501 base::Bind(&InternetOptionsHandler::EnableWimaxCallback, 722 base::Bind(&InternetOptionsHandler::EnableWimaxCallback,
502 base::Unretained(this))); 723 base::Unretained(this)));
503 web_ui()->RegisterMessageCallback("disableWimax", 724 web_ui()->RegisterMessageCallback(kDisableWimaxMessage,
504 base::Bind(&InternetOptionsHandler::DisableWimaxCallback, 725 base::Bind(&InternetOptionsHandler::DisableWimaxCallback,
505 base::Unretained(this))); 726 base::Unretained(this)));
506 web_ui()->RegisterMessageCallback("buyDataPlan", 727 web_ui()->RegisterMessageCallback(kBuyDataPlanMessage,
507 base::Bind(&InternetOptionsHandler::BuyDataPlanCallback, 728 base::Bind(&InternetOptionsHandler::BuyDataPlanCallback,
508 base::Unretained(this))); 729 base::Unretained(this)));
509 web_ui()->RegisterMessageCallback("showMorePlanInfo", 730 web_ui()->RegisterMessageCallback(kShowMorePlanInfoMessage,
510 base::Bind(&InternetOptionsHandler::ShowMorePlanInfoCallback, 731 base::Bind(&InternetOptionsHandler::ShowMorePlanInfoCallback,
511 base::Unretained(this))); 732 base::Unretained(this)));
512 web_ui()->RegisterMessageCallback("setApn", 733 web_ui()->RegisterMessageCallback(kSetApnMessage,
513 base::Bind(&InternetOptionsHandler::SetApnCallback, 734 base::Bind(&InternetOptionsHandler::SetApnCallback,
514 base::Unretained(this))); 735 base::Unretained(this)));
515 web_ui()->RegisterMessageCallback("setSimCardLock", 736 web_ui()->RegisterMessageCallback(kSetSimCardLockMessage,
516 base::Bind(&InternetOptionsHandler::SetSimCardLockCallback, 737 base::Bind(&InternetOptionsHandler::SetSimCardLockCallback,
517 base::Unretained(this))); 738 base::Unretained(this)));
518 web_ui()->RegisterMessageCallback("changePin", 739 web_ui()->RegisterMessageCallback(kChangePinMessage,
519 base::Bind(&InternetOptionsHandler::ChangePinCallback, 740 base::Bind(&InternetOptionsHandler::ChangePinCallback,
520 base::Unretained(this))); 741 base::Unretained(this)));
521 web_ui()->RegisterMessageCallback("toggleAirplaneMode", 742 web_ui()->RegisterMessageCallback(kToggleAirplaneModeMessage,
522 base::Bind(&InternetOptionsHandler::ToggleAirplaneModeCallback, 743 base::Bind(&InternetOptionsHandler::ToggleAirplaneModeCallback,
523 base::Unretained(this))); 744 base::Unretained(this)));
524 } 745 }
525 746
526 void InternetOptionsHandler::EnableWifiCallback(const ListValue* args) { 747 void InternetOptionsHandler::EnableWifiCallback(const ListValue* args) {
527 cros_->EnableWifiNetworkDevice(true); 748 cros_->EnableWifiNetworkDevice(true);
528 } 749 }
529 750
530 void InternetOptionsHandler::DisableWifiCallback(const ListValue* args) { 751 void InternetOptionsHandler::DisableWifiCallback(const ListValue* args) {
531 cros_->EnableWifiNetworkDevice(false); 752 cros_->EnableWifiNetworkDevice(false);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 } 867 }
647 868
648 void InternetOptionsHandler::RefreshNetworksCallback(const ListValue* args) { 869 void InternetOptionsHandler::RefreshNetworksCallback(const ListValue* args) {
649 cros_->RequestNetworkScan(); 870 cros_->RequestNetworkScan();
650 } 871 }
651 872
652 void InternetOptionsHandler::RefreshNetworkData() { 873 void InternetOptionsHandler::RefreshNetworkData() {
653 DictionaryValue dictionary; 874 DictionaryValue dictionary;
654 FillNetworkInfo(&dictionary); 875 FillNetworkInfo(&dictionary);
655 web_ui()->CallJavascriptFunction( 876 web_ui()->CallJavascriptFunction(
656 "options.network.NetworkList.refreshNetworkData", dictionary); 877 kRefreshNetworkDataFunction, dictionary);
657 } 878 }
658 879
659 void InternetOptionsHandler::OnNetworkManagerChanged( 880 void InternetOptionsHandler::OnNetworkManagerChanged(
660 chromeos::NetworkLibrary* cros) { 881 chromeos::NetworkLibrary* cros) {
661 if (!web_ui()) 882 if (!web_ui())
662 return; 883 return;
663 MonitorNetworks(); 884 MonitorNetworks();
664 RefreshNetworkData(); 885 RefreshNetworkData();
665 } 886 }
666 887
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 const chromeos::CellularDataPlanVector* plans = 936 const chromeos::CellularDataPlanVector* plans =
716 cros_->GetDataPlans(cellular->service_path()); 937 cros_->GetDataPlans(cellular->service_path());
717 DictionaryValue connection_plans; 938 DictionaryValue connection_plans;
718 ListValue* plan_list = new ListValue(); 939 ListValue* plan_list = new ListValue();
719 if (plans) { 940 if (plans) {
720 for (chromeos::CellularDataPlanVector::const_iterator iter = plans->begin(); 941 for (chromeos::CellularDataPlanVector::const_iterator iter = plans->begin();
721 iter != plans->end(); ++iter) { 942 iter != plans->end(); ++iter) {
722 plan_list->Append(CellularDataPlanToDictionary(*iter)); 943 plan_list->Append(CellularDataPlanToDictionary(*iter));
723 } 944 }
724 } 945 }
725 connection_plans.SetString("servicePath", cellular->service_path()); 946 connection_plans.SetString(kTagServicePath, cellular->service_path());
726 connection_plans.SetBoolean("needsPlan", cellular->needs_new_plan()); 947 connection_plans.SetBoolean(kTagNeedsPlan, cellular->needs_new_plan());
727 connection_plans.SetBoolean("activated", 948 connection_plans.SetBoolean(kTagActivated,
728 cellular->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATED); 949 cellular->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATED);
729 connection_plans.Set("plans", plan_list); 950 connection_plans.Set(kTagPlans, plan_list);
730 SetActivationButtonVisibility(cellular, 951 SetActivationButtonVisibility(cellular,
731 &connection_plans, 952 &connection_plans,
732 cros_->GetCellularHomeCarrierId()); 953 cros_->GetCellularHomeCarrierId());
733 web_ui()->CallJavascriptFunction( 954 web_ui()->CallJavascriptFunction(
734 "options.internet.DetailsInternetPage.updateCellularPlans", 955 kUpdateCellularPlansFunction,
735 connection_plans); 956 connection_plans);
736 } 957 }
737 958
738 959
739 void InternetOptionsHandler::Observe( 960 void InternetOptionsHandler::Observe(
740 int type, 961 int type,
741 const content::NotificationSource& source, 962 const content::NotificationSource& source,
742 const content::NotificationDetails& details) { 963 const content::NotificationDetails& details) {
743 OptionsPageUIHandler::Observe(type, source, details); 964 OptionsPageUIHandler::Observe(type, source, details);
744 if (type == chrome::NOTIFICATION_REQUIRE_PIN_SETTING_CHANGE_ENDED) { 965 if (type == chrome::NOTIFICATION_REQUIRE_PIN_SETTING_CHANGE_ENDED) {
745 base::FundamentalValue require_pin(*content::Details<bool>(details).ptr()); 966 base::FundamentalValue require_pin(*content::Details<bool>(details).ptr());
746 web_ui()->CallJavascriptFunction( 967 web_ui()->CallJavascriptFunction(
747 "options.internet.DetailsInternetPage.updateSecurityTab", require_pin); 968 kUpdateSecurityTabFunction, require_pin);
748 } else if (type == chrome::NOTIFICATION_ENTER_PIN_ENDED) { 969 } else if (type == chrome::NOTIFICATION_ENTER_PIN_ENDED) {
749 // We make an assumption (which is valid for now) that the SIM 970 // We make an assumption (which is valid for now) that the SIM
750 // unlock dialog is put up only when the user is trying to enable 971 // unlock dialog is put up only when the user is trying to enable
751 // mobile data. 972 // mobile data.
752 bool cancelled = *content::Details<bool>(details).ptr(); 973 bool cancelled = *content::Details<bool>(details).ptr();
753 if (cancelled) 974 if (cancelled)
754 RefreshNetworkData(); 975 RefreshNetworkData();
755 // The case in which the correct PIN was entered and the SIM is 976 // The case in which the correct PIN was entered and the SIM is
756 // now unlocked is handled in NetworkMenuButton. 977 // now unlocked is handled in NetworkMenuButton.
757 } 978 }
758 } 979 }
759 980
760 DictionaryValue* InternetOptionsHandler::CellularDataPlanToDictionary( 981 DictionaryValue* InternetOptionsHandler::CellularDataPlanToDictionary(
761 const chromeos::CellularDataPlan* plan) { 982 const chromeos::CellularDataPlan* plan) {
762 DictionaryValue* plan_dict = new DictionaryValue(); 983 DictionaryValue* plan_dict = new DictionaryValue();
763 plan_dict->SetInteger("planType", plan->plan_type); 984 plan_dict->SetInteger(kTagPlanType, plan->plan_type);
764 plan_dict->SetString("name", plan->plan_name); 985 plan_dict->SetString(kTagName, plan->plan_name);
765 plan_dict->SetString("planSummary", plan->GetPlanDesciption()); 986 plan_dict->SetString(kTagPlanSummary, plan->GetPlanDesciption());
766 plan_dict->SetString("dataRemaining", plan->GetDataRemainingDesciption()); 987 plan_dict->SetString(kTagDataRemaining, plan->GetDataRemainingDesciption());
767 plan_dict->SetString("planExpires", plan->GetPlanExpiration()); 988 plan_dict->SetString(kTagPlanExpires, plan->GetPlanExpiration());
768 plan_dict->SetString("warning", plan->GetRemainingWarning()); 989 plan_dict->SetString(kTagWarning, plan->GetRemainingWarning());
769 return plan_dict; 990 return plan_dict;
770 } 991 }
771 992
772 void InternetOptionsHandler::SetPreferNetworkCallback(const ListValue* args) { 993 void InternetOptionsHandler::SetPreferNetworkCallback(const ListValue* args) {
773 std::string service_path; 994 std::string service_path;
774 std::string prefer_network_str; 995 std::string prefer_network_str;
775 996
776 if (args->GetSize() < 2 || 997 if (args->GetSize() < 2 ||
777 !args->GetString(0, &service_path) || 998 !args->GetString(0, &service_path) ||
778 !args->GetString(1, &prefer_network_str)) { 999 !args->GetString(1, &prefer_network_str)) {
779 NOTREACHED(); 1000 NOTREACHED();
780 return; 1001 return;
781 } 1002 }
782 1003
783 chromeos::Network* network = cros_->FindNetworkByPath(service_path); 1004 chromeos::Network* network = cros_->FindNetworkByPath(service_path);
784 if (!network) 1005 if (!network)
785 return; 1006 return;
786 1007
787 bool prefer_network = prefer_network_str == "true"; 1008 bool prefer_network = prefer_network_str == kTagTrue;
788 if (prefer_network != network->preferred()) 1009 if (prefer_network != network->preferred())
789 network->SetPreferred(prefer_network); 1010 network->SetPreferred(prefer_network);
790 } 1011 }
791 1012
792 void InternetOptionsHandler::SetAutoConnectCallback(const ListValue* args) { 1013 void InternetOptionsHandler::SetAutoConnectCallback(const ListValue* args) {
793 std::string service_path; 1014 std::string service_path;
794 std::string auto_connect_str; 1015 std::string auto_connect_str;
795 1016
796 if (args->GetSize() < 2 || 1017 if (args->GetSize() < 2 ||
797 !args->GetString(0, &service_path) || 1018 !args->GetString(0, &service_path) ||
798 !args->GetString(1, &auto_connect_str)) { 1019 !args->GetString(1, &auto_connect_str)) {
799 NOTREACHED(); 1020 NOTREACHED();
800 return; 1021 return;
801 } 1022 }
802 1023
803 chromeos::Network* network = cros_->FindNetworkByPath(service_path); 1024 chromeos::Network* network = cros_->FindNetworkByPath(service_path);
804 if (!network) 1025 if (!network)
805 return; 1026 return;
806 1027
807 bool auto_connect = auto_connect_str == "true"; 1028 bool auto_connect = auto_connect_str == kTagTrue;
808 if (auto_connect != network->auto_connect()) 1029 if (auto_connect != network->auto_connect())
809 network->SetAutoConnect(auto_connect); 1030 network->SetAutoConnect(auto_connect);
810 } 1031 }
811 1032
812 void InternetOptionsHandler::SetIPConfigCallback(const ListValue* args) { 1033 void InternetOptionsHandler::SetIPConfigCallback(const ListValue* args) {
813 std::string service_path; 1034 std::string service_path;
814 std::string dhcp_str; 1035 bool dhcp_for_ip;
815 std::string address; 1036 std::string address;
816 std::string netmask; 1037 std::string netmask;
817 std::string gateway; 1038 std::string gateway;
1039 std::string name_server_type;
818 std::string name_servers; 1040 std::string name_servers;
819 1041
820 if (args->GetSize() < 6 || 1042 if (args->GetSize() < 7 ||
821 !args->GetString(0, &service_path) || 1043 !args->GetString(0, &service_path) ||
822 !args->GetString(1, &dhcp_str) || 1044 !args->GetBoolean(1, &dhcp_for_ip) ||
823 !args->GetString(2, &address) || 1045 !args->GetString(2, &address) ||
824 !args->GetString(3, &netmask) || 1046 !args->GetString(3, &netmask) ||
825 !args->GetString(4, &gateway) || 1047 !args->GetString(4, &gateway) ||
826 !args->GetString(5, &name_servers)) { 1048 !args->GetString(5, &name_server_type) ||
1049 !args->GetString(6, &name_servers)) {
827 NOTREACHED(); 1050 NOTREACHED();
828 return; 1051 return;
829 } 1052 }
830 1053
831 chromeos::Network* network = cros_->FindNetworkByPath(service_path); 1054 int dhcp_usage_mask = 0;
832 if (!network) 1055 if (dhcp_for_ip) {
833 return; 1056 dhcp_usage_mask = (chromeos::NetworkLibrary::USE_DHCP_ADDRESS |
1057 chromeos::NetworkLibrary::USE_DHCP_NETMASK |
1058 chromeos::NetworkLibrary::USE_DHCP_GATEWAY);
1059 }
1060 if (name_server_type == kNameServerTypeAutomatic) {
1061 dhcp_usage_mask |= chromeos::NetworkLibrary::USE_DHCP_NAME_SERVERS;
1062 name_servers.clear();
1063 } else if (name_server_type == kNameServerTypeGoogle) {
1064 name_servers = kGoogleNameServers;
1065 }
834 1066
835 cros_->SetIPConfig(chromeos::NetworkIPConfig(network->device_path(), 1067 cros_->SetIPParameters(service_path,
836 dhcp_str == "true" ? chromeos::IPCONFIG_TYPE_DHCP : 1068 address,
837 chromeos::IPCONFIG_TYPE_IPV4, 1069 netmask,
838 address, netmask, gateway, name_servers)); 1070 gateway,
1071 name_servers,
1072 dhcp_usage_mask);
839 } 1073 }
840 1074
841 void InternetOptionsHandler::PopulateDictionaryDetails( 1075 void InternetOptionsHandler::PopulateDictionaryDetails(
842 const chromeos::Network* network) { 1076 const chromeos::Network* network) {
843 DCHECK(network); 1077 DCHECK(network);
844 1078
1079 // Send off an asynchronous request to Shill to get the service properties
1080 // and continue in the callback.
1081 chromeos::CrosRequestNetworkServiceProperties(
1082 network->service_path(),
1083 base::Bind(&InternetOptionsHandler::PopulateDictionaryDetailsCallback,
1084 weak_factory_.GetWeakPtr(), network));
1085 }
1086
1087 void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
1088 const chromeos::Network* network,
1089 const std::string& service_path,
1090 const base::DictionaryValue* shill_properties) {
1091 if (VLOG_IS_ON(2)) {
1092 std::string properties_json;
1093 base::JSONWriter::WriteWithOptions(shill_properties,
1094 base::JSONWriter::OPTIONS_PRETTY_PRINT,
1095 &properties_json);
1096 VLOG(2) << "Shill Properties: " << std::endl << properties_json;
1097 }
1098
845 if (web_ui()) { 1099 if (web_ui()) {
846 Profile::FromWebUI(web_ui())->GetProxyConfigTracker()->UISetCurrentNetwork( 1100 Profile::FromWebUI(web_ui())->GetProxyConfigTracker()->UISetCurrentNetwork(
847 network->service_path()); 1101 network->service_path());
848 } 1102 }
849 1103
850 const chromeos::NetworkUIData& ui_data = network->ui_data(); 1104 const chromeos::NetworkUIData& ui_data = network->ui_data();
851 const base::DictionaryValue* onc = 1105 const base::DictionaryValue* onc =
852 cros_->FindOncForNetwork(network->unique_id()); 1106 cros_->FindOncForNetwork(network->unique_id());
853 1107
854 DictionaryValue dictionary; 1108 base::DictionaryValue dictionary;
855 std::string hardware_address; 1109 std::string hardware_address;
856 chromeos::NetworkIPConfigVector ipconfigs = cros_->GetIPConfigs( 1110 chromeos::NetworkIPConfigVector ipconfigs = cros_->GetIPConfigs(
857 network->device_path(), &hardware_address, 1111 network->device_path(), &hardware_address,
858 chromeos::NetworkLibrary::FORMAT_COLON_SEPARATED_HEX); 1112 chromeos::NetworkLibrary::FORMAT_COLON_SEPARATED_HEX);
859 if (!hardware_address.empty()) 1113 if (!hardware_address.empty())
860 dictionary.SetString("hardwareAddress", hardware_address); 1114 dictionary.SetString(kTagHardwareAddress, hardware_address);
861 1115
862 scoped_ptr<DictionaryValue> ipconfig_dhcp; 1116 // The DHCP IPConfig contains the values that are actually in use at the
863 scoped_ptr<DictionaryValue> ipconfig_static; 1117 // moment, even if some are overridden by static IP values.
1118 scoped_ptr<DictionaryValue> ipconfig_dhcp(new DictionaryValue);
1119 std::string ipconfig_name_servers;
864 for (chromeos::NetworkIPConfigVector::const_iterator it = ipconfigs.begin(); 1120 for (chromeos::NetworkIPConfigVector::const_iterator it = ipconfigs.begin();
865 it != ipconfigs.end(); ++it) { 1121 it != ipconfigs.end(); ++it) {
866 const chromeos::NetworkIPConfig& ipconfig = *it; 1122 const chromeos::NetworkIPConfig& ipconfig = *it;
867 scoped_ptr<DictionaryValue> ipconfig_dict(new DictionaryValue()); 1123 if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) {
868 ipconfig_dict->SetString("address", ipconfig.address); 1124 ipconfig_dhcp->SetString(kIpConfigAddress, ipconfig.address);
869 ipconfig_dict->SetString("subnetAddress", ipconfig.netmask); 1125 VLOG(2) << "Found DHCP Address: " << ipconfig.address;
870 ipconfig_dict->SetString("gateway", ipconfig.gateway); 1126 ipconfig_dhcp->SetString(kIpConfigNetmask, ipconfig.netmask);
871 ipconfig_dict->SetString("dns", ipconfig.name_servers); 1127 VLOG(2) << "Found DHCP Netmask: " << ipconfig.netmask;
872 if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) 1128 ipconfig_dhcp->SetString(kIpConfigGateway, ipconfig.gateway);
873 ipconfig_dhcp.reset(ipconfig_dict.release()); 1129 VLOG(2) << "Found DHCP Gateway: " << ipconfig.gateway;
874 else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4) 1130 ipconfig_dhcp->SetString(kIpConfigNameServers, ipconfig.name_servers);
875 ipconfig_static.reset(ipconfig_dict.release()); 1131 ipconfig_name_servers = ipconfig.name_servers; // save for later
1132 VLOG(2) << "Found DHCP Name Servers: " << ipconfig.name_servers;
1133 break;
1134 }
876 } 1135 }
877 1136
878 chromeos::NetworkPropertyUIData ipconfig_dhcp_ui_data(ui_data); 1137 chromeos::NetworkPropertyUIData ipconfig_dhcp_ui_data(ui_data);
879 SetValueDictionary(&dictionary, "ipconfigDHCP", ipconfig_dhcp.release(), 1138
1139 chromeos::NetworkPropertyUIData static_ip_ui_data(ui_data);
1140 int automatic_ip_config;
1141 scoped_ptr<DictionaryValue> static_ip_dict(
1142 BuildIPInfoDictionary(*shill_properties, true, &automatic_ip_config));
1143 dictionary.SetBoolean(kIpConfigAutoConfig, automatic_ip_config == 0);
1144 DCHECK(automatic_ip_config == 3 || automatic_ip_config == 0)
1145 << "UI doesn't support automatic specification of individual "
1146 << "static ip parameters.";
1147 scoped_ptr<DictionaryValue> saved_ip_dict(
1148 BuildIPInfoDictionary(*shill_properties, false, NULL));
1149 dictionary.Set(kDictionarySavedIp, saved_ip_dict.release());
1150
1151 // Determine what kind of name server setting we have by comparing the
1152 // StaticIP and Google values with the ipconfig values.
1153 std::string name_server_type = kNameServerTypeAutomatic;
1154 std::string static_ip_nameservers;
1155 static_ip_dict->GetString(kIpConfigNameServers, &static_ip_nameservers);
1156 if (!static_ip_nameservers.empty() &&
1157 static_ip_nameservers == ipconfig_name_servers) {
1158 name_server_type = kNameServerTypeUser;
1159 }
1160 if (ipconfig_name_servers == kGoogleNameServers) {
1161 name_server_type = kNameServerTypeGoogle;
1162 }
1163
1164 SetValueDictionary(&dictionary, kDictionaryIpConfig, ipconfig_dhcp.release(),
880 ipconfig_dhcp_ui_data); 1165 ipconfig_dhcp_ui_data);
881 chromeos::NetworkPropertyUIData ipconfig_static_ui_data(ui_data); 1166 SetValueDictionary(&dictionary, kDictionaryStaticIp, static_ip_dict.release(),
882 SetValueDictionary(&dictionary, "ipconfigStatic", ipconfig_static.release(), 1167 static_ip_ui_data);
883 ipconfig_static_ui_data);
884 1168
885 chromeos::ConnectionType type = network->type(); 1169 chromeos::ConnectionType type = network->type();
886 dictionary.SetInteger("type", type); 1170 dictionary.SetInteger(kTagType, type);
887 dictionary.SetString("servicePath", network->service_path()); 1171 dictionary.SetString(kTagServicePath, network->service_path());
888 dictionary.SetBoolean("connecting", network->connecting()); 1172 dictionary.SetBoolean(kTagConnecting, network->connecting());
889 dictionary.SetBoolean("connected", network->connected()); 1173 dictionary.SetBoolean(kTagConnected, network->connected());
890 dictionary.SetString("connectionState", network->GetStateString()); 1174 dictionary.SetString(kTagConnectionState, network->GetStateString());
891 dictionary.SetString("networkName", network->name()); 1175 dictionary.SetString(kTagNetworkName, network->name());
1176 dictionary.SetString(kTagNameServerType, name_server_type);
1177 dictionary.SetString(kTagNameServersGoogle, kGoogleNameServers);
892 1178
893 // Only show proxy for remembered networks. 1179 // Only show proxy for remembered networks.
894 chromeos::NetworkProfileType network_profile = network->profile_type(); 1180 chromeos::NetworkProfileType network_profile = network->profile_type();
895 dictionary.SetBoolean("showProxy", network_profile != chromeos::PROFILE_NONE); 1181 dictionary.SetBoolean(kTagShowProxy,
1182 network_profile != chromeos::PROFILE_NONE);
896 1183
897 // Enable static ip config for ethernet. For wifi, enable if flag is set. 1184 // Enable static ip config for ethernet. For wifi, enable if flag is set.
898 bool staticIPConfig = type == chromeos::TYPE_ETHERNET || 1185 bool staticIPConfig = type == chromeos::TYPE_ETHERNET ||
899 (type == chromeos::TYPE_WIFI && 1186 (type == chromeos::TYPE_WIFI &&
900 CommandLine::ForCurrentProcess()->HasSwitch( 1187 CommandLine::ForCurrentProcess()->HasSwitch(
901 switches::kEnableStaticIPConfig)); 1188 switches::kEnableStaticIPConfig));
902 dictionary.SetBoolean("showStaticIPConfig", staticIPConfig); 1189 dictionary.SetBoolean(kTagShowStaticIPConfig, staticIPConfig);
903 1190
904 chromeos::NetworkPropertyUIData preferred_ui_data(ui_data); 1191 chromeos::NetworkPropertyUIData preferred_ui_data(ui_data);
905 if (network_profile == chromeos::PROFILE_USER) { 1192 if (network_profile == chromeos::PROFILE_USER) {
906 dictionary.SetBoolean("showPreferred", true); 1193 dictionary.SetBoolean(kTagShowPreferred, true);
907 SetValueDictionary(&dictionary, "preferred", 1194 SetValueDictionary(&dictionary, kTagPreferred,
908 Value::CreateBooleanValue(network->preferred()), 1195 Value::CreateBooleanValue(network->preferred()),
909 preferred_ui_data); 1196 preferred_ui_data);
910 } else { 1197 } else {
911 dictionary.SetBoolean("showPreferred", false); 1198 dictionary.SetBoolean(kTagShowPreferred, false);
912 SetValueDictionary(&dictionary, "preferred", 1199 SetValueDictionary(&dictionary, kTagPreferred,
913 Value::CreateBooleanValue(network->preferred()), 1200 Value::CreateBooleanValue(network->preferred()),
914 preferred_ui_data); 1201 preferred_ui_data);
915 } 1202 }
916 chromeos::NetworkPropertyUIData auto_connect_ui_data(ui_data); 1203 chromeos::NetworkPropertyUIData auto_connect_ui_data(ui_data);
917 if (type == chromeos::TYPE_WIFI) { 1204 if (type == chromeos::TYPE_WIFI) {
918 auto_connect_ui_data.ParseOncProperty( 1205 auto_connect_ui_data.ParseOncProperty(
919 ui_data, onc, 1206 ui_data, onc,
920 base::StringPrintf("%s.%s", 1207 base::StringPrintf("%s.%s",
921 chromeos::onc::kWiFi, 1208 chromeos::onc::kWiFi,
922 chromeos::onc::wifi::kAutoConnect)); 1209 chromeos::onc::wifi::kAutoConnect));
923 } 1210 }
924 SetValueDictionary(&dictionary, "autoConnect", 1211 SetValueDictionary(&dictionary, kTagAutoConnect,
925 Value::CreateBooleanValue(network->auto_connect()), 1212 Value::CreateBooleanValue(network->auto_connect()),
926 auto_connect_ui_data); 1213 auto_connect_ui_data);
927 1214
928 if (type == chromeos::TYPE_WIFI) { 1215 if (type == chromeos::TYPE_WIFI) {
929 dictionary.SetBoolean("deviceConnected", cros_->wifi_connected()); 1216 dictionary.SetBoolean(kTagDeviceConnected, cros_->wifi_connected());
930 const chromeos::WifiNetwork* wifi = 1217 const chromeos::WifiNetwork* wifi =
931 cros_->FindWifiNetworkByPath(network->service_path()); 1218 cros_->FindWifiNetworkByPath(network->service_path());
932 if (!wifi) { 1219 if (!wifi) {
933 LOG(WARNING) << "Cannot find network " << network->service_path(); 1220 LOG(WARNING) << "Cannot find network " << network->service_path();
934 } else { 1221 } else {
935 PopulateWifiDetails(wifi, &dictionary); 1222 PopulateWifiDetails(wifi, &dictionary);
936 } 1223 }
937 } else if (type == chromeos::TYPE_WIMAX) { 1224 } else if (type == chromeos::TYPE_WIMAX) {
938 dictionary.SetBoolean("deviceConnected", cros_->wimax_connected()); 1225 dictionary.SetBoolean(kTagDeviceConnected, cros_->wimax_connected());
939 const chromeos::WimaxNetwork* wimax = 1226 const chromeos::WimaxNetwork* wimax =
940 cros_->FindWimaxNetworkByPath(network->service_path()); 1227 cros_->FindWimaxNetworkByPath(network->service_path());
941 if (!wimax) { 1228 if (!wimax) {
942 LOG(WARNING) << "Cannot find network " << network->service_path(); 1229 LOG(WARNING) << "Cannot find network " << network->service_path();
943 } else { 1230 } else {
944 PopulateWimaxDetails(wimax, &dictionary); 1231 PopulateWimaxDetails(wimax, &dictionary);
945 } 1232 }
946 } else if (type == chromeos::TYPE_CELLULAR) { 1233 } else if (type == chromeos::TYPE_CELLULAR) {
947 dictionary.SetBoolean("deviceConnected", cros_->cellular_connected()); 1234 dictionary.SetBoolean(kTagDeviceConnected, cros_->cellular_connected());
948 const chromeos::CellularNetwork* cellular = 1235 const chromeos::CellularNetwork* cellular =
949 cros_->FindCellularNetworkByPath(network->service_path()); 1236 cros_->FindCellularNetworkByPath(network->service_path());
950 if (!cellular) { 1237 if (!cellular) {
951 LOG(WARNING) << "Cannot find network " << network->service_path(); 1238 LOG(WARNING) << "Cannot find network " << network->service_path();
952 } else { 1239 } else {
953 PopulateCellularDetails(cellular, &dictionary); 1240 PopulateCellularDetails(cellular, &dictionary);
954 } 1241 }
955 } else if (type == chromeos::TYPE_VPN) { 1242 } else if (type == chromeos::TYPE_VPN) {
956 dictionary.SetBoolean("deviceConnected", 1243 dictionary.SetBoolean(kTagDeviceConnected,
957 cros_->virtual_network_connected()); 1244 cros_->virtual_network_connected());
958 const chromeos::VirtualNetwork* vpn = 1245 const chromeos::VirtualNetwork* vpn =
959 cros_->FindVirtualNetworkByPath(network->service_path()); 1246 cros_->FindVirtualNetworkByPath(network->service_path());
960 if (!vpn) { 1247 if (!vpn) {
961 LOG(WARNING) << "Cannot find network " << network->service_path(); 1248 LOG(WARNING) << "Cannot find network " << network->service_path();
962 } else { 1249 } else {
963 PopulateVPNDetails(vpn, &dictionary); 1250 PopulateVPNDetails(vpn, &dictionary);
964 } 1251 }
965 } else if (type == chromeos::TYPE_ETHERNET) { 1252 } else if (type == chromeos::TYPE_ETHERNET) {
966 dictionary.SetBoolean("deviceConnected", cros_->ethernet_connected()); 1253 dictionary.SetBoolean(kTagDeviceConnected, cros_->ethernet_connected());
967 } 1254 }
968 1255
969 web_ui()->CallJavascriptFunction( 1256 web_ui()->CallJavascriptFunction(
970 "options.internet.DetailsInternetPage.showDetailedInfo", dictionary); 1257 kShowDetailedInfoFunction, dictionary);
971 } 1258 }
972 1259
973 void InternetOptionsHandler::PopulateWifiDetails( 1260 void InternetOptionsHandler::PopulateWifiDetails(
974 const chromeos::WifiNetwork* wifi, 1261 const chromeos::WifiNetwork* wifi,
975 DictionaryValue* dictionary) { 1262 DictionaryValue* dictionary) {
976 dictionary->SetString("ssid", wifi->name()); 1263 dictionary->SetString(kTagSsid, wifi->name());
977 bool remembered = (wifi->profile_type() != chromeos::PROFILE_NONE); 1264 bool remembered = (wifi->profile_type() != chromeos::PROFILE_NONE);
978 dictionary->SetBoolean("remembered", remembered); 1265 dictionary->SetBoolean(kTagRemembered, remembered);
979 bool shared = wifi->profile_type() == chromeos::PROFILE_SHARED; 1266 bool shared = wifi->profile_type() == chromeos::PROFILE_SHARED;
980 dictionary->SetBoolean("shared", shared); 1267 dictionary->SetBoolean(kTagShared, shared);
981 dictionary->SetString("encryption", wifi->GetEncryptionString()); 1268 dictionary->SetString(kTagEncryption, wifi->GetEncryptionString());
982 dictionary->SetString("bssid", wifi->bssid()); 1269 dictionary->SetString(kTagBssid, wifi->bssid());
983 dictionary->SetInteger("frequency", wifi->frequency()); 1270 dictionary->SetInteger(kTagFrequency, wifi->frequency());
984 dictionary->SetInteger("strength", wifi->strength()); 1271 dictionary->SetInteger(kTagStrength, wifi->strength());
985 } 1272 }
986 1273
987 void InternetOptionsHandler::PopulateWimaxDetails( 1274 void InternetOptionsHandler::PopulateWimaxDetails(
988 const chromeos::WimaxNetwork* wimax, 1275 const chromeos::WimaxNetwork* wimax,
989 DictionaryValue* dictionary) { 1276 DictionaryValue* dictionary) {
990 bool remembered = (wimax->profile_type() != chromeos::PROFILE_NONE); 1277 bool remembered = (wimax->profile_type() != chromeos::PROFILE_NONE);
991 dictionary->SetBoolean("remembered", remembered); 1278 dictionary->SetBoolean(kTagRemembered, remembered);
992 bool shared = wimax->profile_type() == chromeos::PROFILE_SHARED; 1279 bool shared = wimax->profile_type() == chromeos::PROFILE_SHARED;
993 dictionary->SetBoolean("shared", shared); 1280 dictionary->SetBoolean(kTagShared, shared);
994 if (wimax->passphrase_required()) 1281 if (wimax->passphrase_required())
995 dictionary->SetString("identity", wimax->eap_identity()); 1282 dictionary->SetString(kTagIdentity, wimax->eap_identity());
996 1283
997 dictionary->SetInteger("strength", wimax->strength()); 1284 dictionary->SetInteger(kTagStrength, wimax->strength());
998 } 1285 }
999 1286
1000 DictionaryValue* InternetOptionsHandler::CreateDictionaryFromCellularApn( 1287 DictionaryValue* InternetOptionsHandler::CreateDictionaryFromCellularApn(
1001 const chromeos::CellularApn& apn) { 1288 const chromeos::CellularApn& apn) {
1002 DictionaryValue* dictionary = new DictionaryValue(); 1289 DictionaryValue* dictionary = new DictionaryValue();
1003 dictionary->SetString("apn", apn.apn); 1290 dictionary->SetString(kTagApn, apn.apn);
1004 dictionary->SetString("networkId", apn.network_id); 1291 dictionary->SetString(kTagNetworkId, apn.network_id);
1005 dictionary->SetString("username", apn.username); 1292 dictionary->SetString(kTagUsername, apn.username);
1006 dictionary->SetString("password", apn.password); 1293 dictionary->SetString(kTagPassword, apn.password);
1007 dictionary->SetString("name", apn.name); 1294 dictionary->SetString(kTagName, apn.name);
1008 dictionary->SetString("localizedName", apn.localized_name); 1295 dictionary->SetString(kTagLocalizedName, apn.localized_name);
1009 dictionary->SetString("language", apn.language); 1296 dictionary->SetString(kTagLanguage, apn.language);
1010 return dictionary; 1297 return dictionary;
1011 } 1298 }
1012 1299
1013 void InternetOptionsHandler::PopulateCellularDetails( 1300 void InternetOptionsHandler::PopulateCellularDetails(
1014 const chromeos::CellularNetwork* cellular, 1301 const chromeos::CellularNetwork* cellular,
1015 DictionaryValue* dictionary) { 1302 DictionaryValue* dictionary) {
1016 // Cellular network / connection settings. 1303 // Cellular network / connection settings.
1017 dictionary->SetString("serviceName", cellular->name()); 1304 dictionary->SetString(kTagServiceName, cellular->name());
1018 dictionary->SetString("networkTechnology", 1305 dictionary->SetString(kTagNetworkTechnology,
1019 cellular->GetNetworkTechnologyString()); 1306 cellular->GetNetworkTechnologyString());
1020 dictionary->SetString("operatorName", cellular->operator_name()); 1307 dictionary->SetString(kTagOperatorName, cellular->operator_name());
1021 dictionary->SetString("operatorCode", cellular->operator_code()); 1308 dictionary->SetString(kTagOperatorCode, cellular->operator_code());
1022 dictionary->SetString("activationState", 1309 dictionary->SetString(kTagActivationState,
1023 cellular->GetActivationStateString()); 1310 cellular->GetActivationStateString());
1024 dictionary->SetString("roamingState", 1311 dictionary->SetString(kTagRoamingState,
1025 cellular->GetRoamingStateString()); 1312 cellular->GetRoamingStateString());
1026 dictionary->SetString("restrictedPool", 1313 dictionary->SetString(kTagRestrictedPool,
1027 cellular->restricted_pool() ? 1314 cellular->restricted_pool() ?
1028 l10n_util::GetStringUTF8( 1315 l10n_util::GetStringUTF8(
1029 IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL) : 1316 IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL) :
1030 l10n_util::GetStringUTF8( 1317 l10n_util::GetStringUTF8(
1031 IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL)); 1318 IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL));
1032 dictionary->SetString("errorState", cellular->GetErrorString()); 1319 dictionary->SetString(kTagErrorState, cellular->GetErrorString());
1033 dictionary->SetString("supportUrl", cellular->payment_url()); 1320 dictionary->SetString(kTagSupportUrl, cellular->payment_url());
1034 dictionary->SetBoolean("needsPlan", cellular->needs_new_plan()); 1321 dictionary->SetBoolean(kTagNeedsPlan, cellular->needs_new_plan());
1035 1322
1036 dictionary->Set("apn", CreateDictionaryFromCellularApn(cellular->apn())); 1323 dictionary->Set(kTagApn, CreateDictionaryFromCellularApn(cellular->apn()));
1037 dictionary->Set("lastGoodApn", 1324 dictionary->Set(kTagLastGoodApn,
1038 CreateDictionaryFromCellularApn(cellular->last_good_apn())); 1325 CreateDictionaryFromCellularApn(cellular->last_good_apn()));
1039 1326
1040 // Device settings. 1327 // Device settings.
1041 const chromeos::NetworkDevice* device = 1328 const chromeos::NetworkDevice* device =
1042 cros_->FindNetworkDeviceByPath(cellular->device_path()); 1329 cros_->FindNetworkDeviceByPath(cellular->device_path());
1043 if (device) { 1330 if (device) {
1044 chromeos::NetworkPropertyUIData cellular_propety_ui_data( 1331 chromeos::NetworkPropertyUIData cellular_propety_ui_data(
1045 cellular->ui_data()); 1332 cellular->ui_data());
1046 dictionary->SetString("manufacturer", device->manufacturer()); 1333 dictionary->SetString(kTagManufacturer, device->manufacturer());
1047 dictionary->SetString("modelId", device->model_id()); 1334 dictionary->SetString(kTagModelId, device->model_id());
1048 dictionary->SetString("firmwareRevision", device->firmware_revision()); 1335 dictionary->SetString(kTagFirmwareRevision, device->firmware_revision());
1049 dictionary->SetString("hardwareRevision", device->hardware_revision()); 1336 dictionary->SetString(kTagHardwareRevision, device->hardware_revision());
1050 dictionary->SetString("prlVersion", 1337 dictionary->SetString(kTagPrlVersion,
1051 base::StringPrintf("%u", device->prl_version())); 1338 base::StringPrintf("%u", device->prl_version()));
1052 dictionary->SetString("meid", device->meid()); 1339 dictionary->SetString(kTagMeid, device->meid());
1053 dictionary->SetString("imei", device->imei()); 1340 dictionary->SetString(kTagImei, device->imei());
1054 dictionary->SetString("mdn", device->mdn()); 1341 dictionary->SetString(kTagMdn, device->mdn());
1055 dictionary->SetString("imsi", device->imsi()); 1342 dictionary->SetString(kTagImsi, device->imsi());
1056 dictionary->SetString("esn", device->esn()); 1343 dictionary->SetString(kTagEsn, device->esn());
1057 dictionary->SetString("min", device->min()); 1344 dictionary->SetString(kTagMin, device->min());
1058 dictionary->SetBoolean("gsm", 1345 dictionary->SetBoolean(kTagGsm,
1059 device->technology_family() == chromeos::TECHNOLOGY_FAMILY_GSM); 1346 device->technology_family() == chromeos::TECHNOLOGY_FAMILY_GSM);
1060 SetValueDictionary( 1347 SetValueDictionary(
1061 dictionary, "simCardLockEnabled", 1348 dictionary, kTagSimCardLockEnabled,
1062 Value::CreateBooleanValue( 1349 Value::CreateBooleanValue(
1063 device->sim_pin_required() == chromeos::SIM_PIN_REQUIRED), 1350 device->sim_pin_required() == chromeos::SIM_PIN_REQUIRED),
1064 cellular_propety_ui_data); 1351 cellular_propety_ui_data);
1065 1352
1066 chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance(); 1353 chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance();
1067 if (config->IsReady()) { 1354 if (config->IsReady()) {
1068 const std::string& carrier_id = cros_->GetCellularHomeCarrierId(); 1355 const std::string& carrier_id = cros_->GetCellularHomeCarrierId();
1069 const chromeos::MobileConfig::Carrier* carrier = 1356 const chromeos::MobileConfig::Carrier* carrier =
1070 config->GetCarrier(carrier_id); 1357 config->GetCarrier(carrier_id);
1071 if (carrier && !carrier->top_up_url().empty()) 1358 if (carrier && !carrier->top_up_url().empty())
1072 dictionary->SetString("carrierUrl", carrier->top_up_url()); 1359 dictionary->SetString(kTagCarrierUrl, carrier->top_up_url());
1073 } 1360 }
1074 1361
1075 const chromeos::CellularApnList& apn_list = device->provider_apn_list(); 1362 const chromeos::CellularApnList& apn_list = device->provider_apn_list();
1076 ListValue* apn_list_value = new ListValue(); 1363 ListValue* apn_list_value = new ListValue();
1077 for (chromeos::CellularApnList::const_iterator it = apn_list.begin(); 1364 for (chromeos::CellularApnList::const_iterator it = apn_list.begin();
1078 it != apn_list.end(); ++it) { 1365 it != apn_list.end(); ++it) {
1079 apn_list_value->Append(CreateDictionaryFromCellularApn(*it)); 1366 apn_list_value->Append(CreateDictionaryFromCellularApn(*it));
1080 } 1367 }
1081 SetValueDictionary(dictionary, "providerApnList", apn_list_value, 1368 SetValueDictionary(dictionary, kTagProviderApnList, apn_list_value,
1082 cellular_propety_ui_data); 1369 cellular_propety_ui_data);
1083 } 1370 }
1084 1371
1085 SetActivationButtonVisibility(cellular, 1372 SetActivationButtonVisibility(cellular,
1086 dictionary, 1373 dictionary,
1087 cros_->GetCellularHomeCarrierId()); 1374 cros_->GetCellularHomeCarrierId());
1088 } 1375 }
1089 1376
1090 void InternetOptionsHandler::PopulateVPNDetails( 1377 void InternetOptionsHandler::PopulateVPNDetails(
1091 const chromeos::VirtualNetwork* vpn, 1378 const chromeos::VirtualNetwork* vpn,
1092 DictionaryValue* dictionary) { 1379 DictionaryValue* dictionary) {
1093 dictionary->SetString("service_name", vpn->name()); 1380 dictionary->SetString(kTagService_name, vpn->name());
1094 bool remembered = (vpn->profile_type() != chromeos::PROFILE_NONE); 1381 bool remembered = (vpn->profile_type() != chromeos::PROFILE_NONE);
1095 dictionary->SetBoolean("remembered", remembered); 1382 dictionary->SetBoolean(kTagRemembered, remembered);
1096 dictionary->SetString("server_hostname", vpn->server_hostname()); 1383 dictionary->SetString(kTagServer_hostname, vpn->server_hostname());
1097 dictionary->SetString("provider_type", vpn->GetProviderTypeString()); 1384 dictionary->SetString(kTagProvider_type, vpn->GetProviderTypeString());
1098 dictionary->SetString("username", vpn->username()); 1385 dictionary->SetString(kTagUsername, vpn->username());
1099 } 1386 }
1100 1387
1101 void InternetOptionsHandler::SetActivationButtonVisibility( 1388 void InternetOptionsHandler::SetActivationButtonVisibility(
1102 const chromeos::CellularNetwork* cellular, 1389 const chromeos::CellularNetwork* cellular,
1103 DictionaryValue* dictionary, 1390 DictionaryValue* dictionary,
1104 const std::string& carrier_id) { 1391 const std::string& carrier_id) {
1105 if (cellular->needs_new_plan()) { 1392 if (cellular->needs_new_plan()) {
1106 dictionary->SetBoolean("showBuyButton", true); 1393 dictionary->SetBoolean(kTagShowBuyButton, true);
1107 } else if (cellular->activation_state() != 1394 } else if (cellular->activation_state() !=
1108 chromeos::ACTIVATION_STATE_ACTIVATING && 1395 chromeos::ACTIVATION_STATE_ACTIVATING &&
1109 cellular->activation_state() != 1396 cellular->activation_state() !=
1110 chromeos::ACTIVATION_STATE_ACTIVATED) { 1397 chromeos::ACTIVATION_STATE_ACTIVATED) {
1111 dictionary->SetBoolean("showActivateButton", true); 1398 dictionary->SetBoolean(kTagShowActivateButton, true);
1112 } else { 1399 } else {
1113 const chromeos::MobileConfig::Carrier* carrier = 1400 const chromeos::MobileConfig::Carrier* carrier =
1114 chromeos::MobileConfig::GetInstance()->GetCarrier(carrier_id); 1401 chromeos::MobileConfig::GetInstance()->GetCarrier(carrier_id);
1115 if (carrier && carrier->show_portal_button()) { 1402 if (carrier && carrier->show_portal_button()) {
1116 // This will trigger BuyDataPlanCallback() so that 1403 // This will trigger BuyDataPlanCallback() so that
1117 // chrome://mobilesetup/ will open carrier specific portal. 1404 // chrome://mobilesetup/ will open carrier specific portal.
1118 dictionary->SetBoolean("showViewAccountButton", true); 1405 dictionary->SetBoolean(kTagShowViewAccountButton, true);
1119 } 1406 }
1120 } 1407 }
1121 } 1408 }
1122 1409
1123 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const { 1410 gfx::NativeWindow InternetOptionsHandler::GetNativeWindow() const {
1124 // TODO(beng): This is an improper direct dependency on Browser. Route this 1411 // TODO(beng): This is an improper direct dependency on Browser. Route this
1125 // through some sort of delegate. 1412 // through some sort of delegate.
1126 Browser* browser = 1413 Browser* browser =
1127 browser::FindBrowserWithWebContents(web_ui()->GetWebContents()); 1414 browser::FindBrowserWithWebContents(web_ui()->GetWebContents());
1128 return browser->window()->GetNativeWindow(); 1415 return browser->window()->GetNativeWindow();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1166 void InternetOptionsHandler::ToggleAirplaneModeCallback(const ListValue* args) { 1453 void InternetOptionsHandler::ToggleAirplaneModeCallback(const ListValue* args) {
1167 // TODO(kevers): The use of 'offline_mode' is not quite correct. Update once 1454 // TODO(kevers): The use of 'offline_mode' is not quite correct. Update once
1168 // we have proper back-end support. 1455 // we have proper back-end support.
1169 cros_->EnableOfflineMode(!cros_->offline_mode()); 1456 cros_->EnableOfflineMode(!cros_->offline_mode());
1170 } 1457 }
1171 1458
1172 void InternetOptionsHandler::HandleWifiButtonClick( 1459 void InternetOptionsHandler::HandleWifiButtonClick(
1173 const std::string& service_path, 1460 const std::string& service_path,
1174 const std::string& command) { 1461 const std::string& command) {
1175 chromeos::WifiNetwork* wifi = NULL; 1462 chromeos::WifiNetwork* wifi = NULL;
1176 if (command == "forget") { 1463 if (command == kTagForget) {
1177 cros_->ForgetNetwork(service_path); 1464 cros_->ForgetNetwork(service_path);
1178 } else if (service_path == kOtherNetworksFakePath) { 1465 } else if (service_path == kOtherNetworksFakePath) {
1179 // Other wifi networks. 1466 // Other wifi networks.
1180 chromeos::NetworkConfigView::ShowForType( 1467 chromeos::NetworkConfigView::ShowForType(
1181 chromeos::TYPE_WIFI, GetNativeWindow()); 1468 chromeos::TYPE_WIFI, GetNativeWindow());
1182 } else if ((wifi = cros_->FindWifiNetworkByPath(service_path))) { 1469 } else if ((wifi = cros_->FindWifiNetworkByPath(service_path))) {
1183 if (command == "connect") { 1470 if (command == kTagConnect) {
1184 wifi->SetEnrollmentDelegate( 1471 wifi->SetEnrollmentDelegate(
1185 chromeos::CreateEnrollmentDelegate(GetNativeWindow(), wifi->name(), 1472 chromeos::CreateEnrollmentDelegate(GetNativeWindow(), wifi->name(),
1186 ProfileManager::GetLastUsedProfile())); 1473 ProfileManager::GetLastUsedProfile()));
1187 wifi->AttemptConnection(base::Bind(&InternetOptionsHandler::DoConnect, 1474 wifi->AttemptConnection(base::Bind(&InternetOptionsHandler::DoConnect,
1188 weak_factory_.GetWeakPtr(), 1475 weak_factory_.GetWeakPtr(),
1189 wifi)); 1476 wifi));
1190 } else if (command == "disconnect") { 1477 } else if (command == kTagDisconnect) {
1191 cros_->DisconnectFromNetwork(wifi); 1478 cros_->DisconnectFromNetwork(wifi);
1192 } else if (command == "options") { 1479 } else if (command == kTagOptions) {
1193 PopulateDictionaryDetails(wifi); 1480 PopulateDictionaryDetails(wifi);
1194 } 1481 }
1195 } 1482 }
1196 } 1483 }
1197 1484
1198 void InternetOptionsHandler::HandleWimaxButtonClick( 1485 void InternetOptionsHandler::HandleWimaxButtonClick(
1199 const std::string& service_path, 1486 const std::string& service_path,
1200 const std::string& command) { 1487 const std::string& command) {
1201 chromeos::WimaxNetwork* wimax = NULL; 1488 chromeos::WimaxNetwork* wimax = NULL;
1202 if (command == "forget") { 1489 if (command == kTagForget) {
1203 cros_->ForgetNetwork(service_path); 1490 cros_->ForgetNetwork(service_path);
1204 } else if ((wimax = cros_->FindWimaxNetworkByPath(service_path))) { 1491 } else if ((wimax = cros_->FindWimaxNetworkByPath(service_path))) {
1205 if (command == "connect") { 1492 if (command == kTagConnect) {
1206 wimax->SetEnrollmentDelegate( 1493 wimax->SetEnrollmentDelegate(
1207 chromeos::CreateEnrollmentDelegate(GetNativeWindow(), wimax->name(), 1494 chromeos::CreateEnrollmentDelegate(GetNativeWindow(), wimax->name(),
1208 ProfileManager::GetLastUsedProfile())); 1495 ProfileManager::GetLastUsedProfile()));
1209 wimax->AttemptConnection(base::Bind(&InternetOptionsHandler::DoConnect, 1496 wimax->AttemptConnection(base::Bind(&InternetOptionsHandler::DoConnect,
1210 weak_factory_.GetWeakPtr(), 1497 weak_factory_.GetWeakPtr(),
1211 wimax)); 1498 wimax));
1212 } else if (command == "disconnect") { 1499 } else if (command == kTagDisconnect) {
1213 cros_->DisconnectFromNetwork(wimax); 1500 cros_->DisconnectFromNetwork(wimax);
1214 } else if (command == "options") { 1501 } else if (command == kTagOptions) {
1215 PopulateDictionaryDetails(wimax); 1502 PopulateDictionaryDetails(wimax);
1216 } 1503 }
1217 } 1504 }
1218 } 1505 }
1219 1506
1220 void InternetOptionsHandler::HandleCellularButtonClick( 1507 void InternetOptionsHandler::HandleCellularButtonClick(
1221 const std::string& service_path, 1508 const std::string& service_path,
1222 const std::string& command) { 1509 const std::string& command) {
1223 chromeos::CellularNetwork* cellular = NULL; 1510 chromeos::CellularNetwork* cellular = NULL;
1224 if (service_path == kOtherNetworksFakePath) { 1511 if (service_path == kOtherNetworksFakePath) {
1225 chromeos::ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow()); 1512 chromeos::ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow());
1226 } else if ((cellular = cros_->FindCellularNetworkByPath(service_path))) { 1513 } else if ((cellular = cros_->FindCellularNetworkByPath(service_path))) {
1227 if (command == "connect") { 1514 if (command == kTagConnect) {
1228 cros_->ConnectToCellularNetwork(cellular); 1515 cros_->ConnectToCellularNetwork(cellular);
1229 } else if (command == "disconnect") { 1516 } else if (command == kTagDisconnect) {
1230 cros_->DisconnectFromNetwork(cellular); 1517 cros_->DisconnectFromNetwork(cellular);
1231 } else if (command == "activate") { 1518 } else if (command == kTagActivate) {
1232 ash::Shell::GetInstance()->delegate()->OpenMobileSetup(service_path); 1519 ash::Shell::GetInstance()->delegate()->OpenMobileSetup(service_path);
1233 } else if (command == "options") { 1520 } else if (command == kTagOptions) {
1234 PopulateDictionaryDetails(cellular); 1521 PopulateDictionaryDetails(cellular);
1235 } 1522 }
1236 } 1523 }
1237 } 1524 }
1238 1525
1239 void InternetOptionsHandler::HandleVPNButtonClick( 1526 void InternetOptionsHandler::HandleVPNButtonClick(
1240 const std::string& service_path, 1527 const std::string& service_path,
1241 const std::string& command) { 1528 const std::string& command) {
1242 chromeos::VirtualNetwork* network = NULL; 1529 chromeos::VirtualNetwork* network = NULL;
1243 if (command == "forget") { 1530 if (command == kTagForget) {
1244 cros_->ForgetNetwork(service_path); 1531 cros_->ForgetNetwork(service_path);
1245 } else if (service_path == kOtherNetworksFakePath) { 1532 } else if (service_path == kOtherNetworksFakePath) {
1246 // TODO(altimofeev): verify if service_path in condition is correct. 1533 // TODO(altimofeev): verify if service_path in condition is correct.
1247 // Other VPN networks. 1534 // Other VPN networks.
1248 chromeos::NetworkConfigView::ShowForType( 1535 chromeos::NetworkConfigView::ShowForType(
1249 chromeos::TYPE_VPN, GetNativeWindow()); 1536 chromeos::TYPE_VPN, GetNativeWindow());
1250 } else if ((network = cros_->FindVirtualNetworkByPath(service_path))) { 1537 } else if ((network = cros_->FindVirtualNetworkByPath(service_path))) {
1251 if (command == "connect") { 1538 if (command == kTagConnect) {
1252 network->SetEnrollmentDelegate( 1539 network->SetEnrollmentDelegate(
1253 chromeos::CreateEnrollmentDelegate( 1540 chromeos::CreateEnrollmentDelegate(
1254 GetNativeWindow(), 1541 GetNativeWindow(),
1255 network->name(), 1542 network->name(),
1256 ProfileManager::GetLastUsedProfile())); 1543 ProfileManager::GetLastUsedProfile()));
1257 network->AttemptConnection(base::Bind(&InternetOptionsHandler::DoConnect, 1544 network->AttemptConnection(base::Bind(&InternetOptionsHandler::DoConnect,
1258 weak_factory_.GetWeakPtr(), 1545 weak_factory_.GetWeakPtr(),
1259 network)); 1546 network));
1260 } else if (command == "disconnect") { 1547 } else if (command == kTagDisconnect) {
1261 cros_->DisconnectFromNetwork(network); 1548 cros_->DisconnectFromNetwork(network);
1262 } else if (command == "options") { 1549 } else if (command == kTagOptions) {
1263 PopulateDictionaryDetails(network); 1550 PopulateDictionaryDetails(network);
1264 } 1551 }
1265 } 1552 }
1266 } 1553 }
1267 1554
1268 void InternetOptionsHandler::DoConnect(chromeos::Network* network) { 1555 void InternetOptionsHandler::DoConnect(chromeos::Network* network) {
1269 if (network->type() == chromeos::TYPE_VPN) { 1556 if (network->type() == chromeos::TYPE_VPN) {
1270 chromeos::VirtualNetwork* vpn = 1557 chromeos::VirtualNetwork* vpn =
1271 static_cast<chromeos::VirtualNetwork*>(network); 1558 static_cast<chromeos::VirtualNetwork*>(network);
1272 if (vpn->NeedMoreInfoToConnect()) { 1559 if (vpn->NeedMoreInfoToConnect()) {
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1425 NetworkInfoDictionary network_dict(vpn, 1712 NetworkInfoDictionary network_dict(vpn,
1426 remembered, 1713 remembered,
1427 web_ui()->GetDeviceScale()); 1714 web_ui()->GetDeviceScale());
1428 list->Append(network_dict.BuildDictionary()); 1715 list->Append(network_dict.BuildDictionary());
1429 } 1716 }
1430 1717
1431 return list; 1718 return list;
1432 } 1719 }
1433 1720
1434 void InternetOptionsHandler::FillNetworkInfo(DictionaryValue* dictionary) { 1721 void InternetOptionsHandler::FillNetworkInfo(DictionaryValue* dictionary) {
1435 dictionary->SetBoolean("accessLocked", cros_->IsLocked()); 1722 dictionary->SetBoolean(kTagAccessLocked, cros_->IsLocked());
1436 dictionary->Set("wiredList", GetWiredList()); 1723 dictionary->Set(kTagWiredList, GetWiredList());
1437 dictionary->Set("wirelessList", GetWirelessList()); 1724 dictionary->Set(kTagWirelessList, GetWirelessList());
1438 dictionary->Set("vpnList", GetVPNList()); 1725 dictionary->Set(kTagVpnList, GetVPNList());
1439 dictionary->Set("rememberedList", GetRememberedList()); 1726 dictionary->Set(kTagRememberedList, GetRememberedList());
1440 dictionary->SetBoolean("wifiAvailable", cros_->wifi_available()); 1727 dictionary->SetBoolean(kTagWifiAvailable, cros_->wifi_available());
1441 dictionary->SetBoolean("wifiBusy", cros_->wifi_busy()); 1728 dictionary->SetBoolean(kTagWifiBusy, cros_->wifi_busy());
1442 dictionary->SetBoolean("wifiEnabled", cros_->wifi_enabled()); 1729 dictionary->SetBoolean(kTagWifiEnabled, cros_->wifi_enabled());
1443 dictionary->SetBoolean("cellularAvailable", cros_->cellular_available()); 1730 dictionary->SetBoolean(kTagCellularAvailable, cros_->cellular_available());
1444 dictionary->SetBoolean("cellularBusy", cros_->cellular_busy()); 1731 dictionary->SetBoolean(kTagCellularBusy, cros_->cellular_busy());
1445 dictionary->SetBoolean("cellularEnabled", cros_->cellular_enabled()); 1732 dictionary->SetBoolean(kTagCellularEnabled, cros_->cellular_enabled());
1446 dictionary->SetBoolean("wimaxEnabled", cros_->wimax_enabled()); 1733 dictionary->SetBoolean(kTagWimaxEnabled, cros_->wimax_enabled());
1447 dictionary->SetBoolean("wimaxAvailable", cros_->wimax_available()); 1734 dictionary->SetBoolean(kTagWimaxAvailable, cros_->wimax_available());
1448 dictionary->SetBoolean("wimaxBusy", cros_->wimax_busy()); 1735 dictionary->SetBoolean(kTagWimaxBusy, cros_->wimax_busy());
1449 // TODO(kevers): The use of 'offline_mode' is not quite correct. Update once 1736 // TODO(kevers): The use of 'offline_mode' is not quite correct. Update once
1450 // we have proper back-end support. 1737 // we have proper back-end support.
1451 dictionary->SetBoolean("airplaneMode", cros_->offline_mode()); 1738 dictionary->SetBoolean(kTagAirplaneMode, cros_->offline_mode());
1452 } 1739 }
1453 1740
1454 void InternetOptionsHandler::SetValueDictionary( 1741 void InternetOptionsHandler::SetValueDictionary(
1455 DictionaryValue* settings, 1742 DictionaryValue* settings,
1456 const char* key, 1743 const char* key,
1457 base::Value* value, 1744 base::Value* value,
1458 const chromeos::NetworkPropertyUIData& ui_data) { 1745 const chromeos::NetworkPropertyUIData& ui_data) {
1459 DictionaryValue* value_dict = new DictionaryValue(); 1746 DictionaryValue* value_dict = new DictionaryValue();
1460 // DictionaryValue::Set() takes ownership of |value|. 1747 // DictionaryValue::Set() takes ownership of |value|.
1461 if (value) 1748 if (value)
1462 value_dict->Set("value", value); 1749 value_dict->Set(kTagValue, value);
1463 const base::Value* default_value = ui_data.default_value(); 1750 const base::Value* default_value = ui_data.default_value();
1464 if (default_value) 1751 if (default_value)
1465 value_dict->Set("default", default_value->DeepCopy()); 1752 value_dict->Set(kTagDefault, default_value->DeepCopy());
1466 if (ui_data.managed()) 1753 if (ui_data.managed())
1467 value_dict->SetString("controlledBy", "policy"); 1754 value_dict->SetString(kTagControlledBy, kTagPolicy);
1468 else if (ui_data.recommended()) 1755 else if (ui_data.recommended())
1469 value_dict->SetString("controlledBy", "recommended"); 1756 value_dict->SetString(kTagControlledBy, kTagRecommended);
1470 settings->Set(key, value_dict); 1757 settings->Set(key, value_dict);
1471 } 1758 }
1472 1759
1473 } // namespace options2 1760 } // namespace options2
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options2/chromeos/internet_options_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698