| OLD | NEW |
| 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/chromeos/cros/network_library_impl_cros.h" | 5 #include "chrome/browser/chromeos/cros/network_library_impl_cros.h" |
| 6 | 6 |
| 7 #include <dbus/dbus-glib.h> | 7 #include <dbus/dbus-glib.h> |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/json/json_writer.h" // for debug output only. | 9 #include "base/json/json_writer.h" // for debug output only. |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 case PROPERTY_INDEX_CHECK_PORTAL_LIST: { | 701 case PROPERTY_INDEX_CHECK_PORTAL_LIST: { |
| 702 DCHECK_EQ(value->GetType(), Value::TYPE_STRING); | 702 DCHECK_EQ(value->GetType(), Value::TYPE_STRING); |
| 703 value->GetAsString(&check_portal_list_); | 703 value->GetAsString(&check_portal_list_); |
| 704 break; | 704 break; |
| 705 } | 705 } |
| 706 case PROPERTY_INDEX_PORTAL_URL: | 706 case PROPERTY_INDEX_PORTAL_URL: |
| 707 case PROPERTY_INDEX_ARP_GATEWAY: | 707 case PROPERTY_INDEX_ARP_GATEWAY: |
| 708 // Currently we ignore PortalURL and ArpGateway. | 708 // Currently we ignore PortalURL and ArpGateway. |
| 709 break; | 709 break; |
| 710 default: | 710 default: |
| 711 LOG(WARNING) << "Manager: Unhandled key: " << key; | 711 VLOG(2) << "Manager: Unhandled key: " << key; |
| 712 break; | 712 break; |
| 713 } | 713 } |
| 714 base::TimeDelta delta = base::TimeTicks::Now() - start; | 714 base::TimeDelta delta = base::TimeTicks::Now() - start; |
| 715 VLOG(2) << "NetworkManagerStatusChanged: time: " | 715 VLOG(2) << "NetworkManagerStatusChanged: time: " |
| 716 << delta.InMilliseconds() << " ms."; | 716 << delta.InMilliseconds() << " ms."; |
| 717 HISTOGRAM_TIMES("CROS_NETWORK_UPDATE", delta); | 717 HISTOGRAM_TIMES("CROS_NETWORK_UPDATE", delta); |
| 718 return true; | 718 return true; |
| 719 } | 719 } |
| 720 | 720 |
| 721 void NetworkLibraryImplCros::NetworkManagerUpdate( | 721 void NetworkLibraryImplCros::NetworkManagerUpdate( |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 AddNetwork(found->second); | 820 AddNetwork(found->second); |
| 821 old_network_map.erase(found); | 821 old_network_map.erase(found); |
| 822 } | 822 } |
| 823 // Always request network updates. | 823 // Always request network updates. |
| 824 // TODO(stevenjb): Investigate why we are missing updates then | 824 // TODO(stevenjb): Investigate why we are missing updates then |
| 825 // rely on watched network updates and only request updates here for | 825 // rely on watched network updates and only request updates here for |
| 826 // new networks. | 826 // new networks. |
| 827 // Use update_request map to store network priority. | 827 // Use update_request map to store network priority. |
| 828 network_update_requests_[service_path] = network_priority_order++; | 828 network_update_requests_[service_path] = network_priority_order++; |
| 829 wifi_scanning_ = true; | 829 wifi_scanning_ = true; |
| 830 VLOG(2) << "UpdateNetworkServiceList, Service: " << service_path; |
| 830 CrosRequestNetworkServiceProperties( | 831 CrosRequestNetworkServiceProperties( |
| 831 service_path, | 832 service_path, |
| 832 base::Bind(&NetworkLibraryImplCros::NetworkServiceUpdate, | 833 base::Bind(&NetworkLibraryImplCros::NetworkServiceUpdate, |
| 833 weak_ptr_factory_.GetWeakPtr())); | 834 weak_ptr_factory_.GetWeakPtr())); |
| 834 } | 835 } |
| 835 } | 836 } |
| 836 // Iterate through list of remaining networks that are no longer in the | 837 // Iterate through list of remaining networks that are no longer in the |
| 837 // list and delete them or update their status and re-add them to the list. | 838 // list and delete them or update their status and re-add them to the list. |
| 838 for (NetworkMap::iterator iter = old_network_map.begin(); | 839 for (NetworkMap::iterator iter = old_network_map.begin(); |
| 839 iter != old_network_map.end(); ++iter) { | 840 iter != old_network_map.end(); ++iter) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 879 weak_ptr_factory_.GetWeakPtr())); | 880 weak_ptr_factory_.GetWeakPtr())); |
| 880 } | 881 } |
| 881 } | 882 } |
| 882 } | 883 } |
| 883 | 884 |
| 884 void NetworkLibraryImplCros::NetworkServiceUpdate( | 885 void NetworkLibraryImplCros::NetworkServiceUpdate( |
| 885 const std::string& service_path, | 886 const std::string& service_path, |
| 886 const base::DictionaryValue* properties) { | 887 const base::DictionaryValue* properties) { |
| 887 if (!properties) | 888 if (!properties) |
| 888 return; // Network no longer in visible list, ignore. | 889 return; // Network no longer in visible list, ignore. |
| 890 VLOG(2) << "NetworkServiceUpdate: " << service_path; |
| 889 ParseNetwork(service_path, *properties); | 891 ParseNetwork(service_path, *properties); |
| 890 } | 892 } |
| 891 | 893 |
| 892 // Called from NetworkServiceUpdate and WifiServiceUpdateAndConnect. | 894 // Called from NetworkServiceUpdate and WifiServiceUpdateAndConnect. |
| 893 Network* NetworkLibraryImplCros::ParseNetwork( | 895 Network* NetworkLibraryImplCros::ParseNetwork( |
| 894 const std::string& service_path, const DictionaryValue& info) { | 896 const std::string& service_path, const DictionaryValue& info) { |
| 895 Network* network = FindNetworkByPath(service_path); | 897 Network* network = FindNetworkByPath(service_path); |
| 896 if (!network) { | 898 if (!network) { |
| 897 NativeNetworkParser parser; | 899 NativeNetworkParser parser; |
| 898 network = parser.CreateNetworkFromInfo(service_path, info); | 900 network = parser.CreateNetworkFromInfo(service_path, info); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1020 // |profile_entries| is a list of remembered networks from |profile_path|. | 1022 // |profile_entries| is a list of remembered networks from |profile_path|. |
| 1021 profile.services.clear(); | 1023 profile.services.clear(); |
| 1022 for (ListValue::const_iterator iter2 = profile_entries->begin(); | 1024 for (ListValue::const_iterator iter2 = profile_entries->begin(); |
| 1023 iter2 != profile_entries->end(); ++iter2) { | 1025 iter2 != profile_entries->end(); ++iter2) { |
| 1024 std::string service_path; | 1026 std::string service_path; |
| 1025 (*iter2)->GetAsString(&service_path); | 1027 (*iter2)->GetAsString(&service_path); |
| 1026 if (service_path.empty()) { | 1028 if (service_path.empty()) { |
| 1027 LOG(WARNING) << "Empty service path in profile."; | 1029 LOG(WARNING) << "Empty service path in profile."; |
| 1028 continue; | 1030 continue; |
| 1029 } | 1031 } |
| 1030 VLOG(1) << " Remembered service: " << service_path; | 1032 VLOG(2) << " Remembered service: " << service_path; |
| 1031 // Add service to profile list. | 1033 // Add service to profile list. |
| 1032 profile.services.insert(service_path); | 1034 profile.services.insert(service_path); |
| 1033 // Request update for remembered network. | 1035 // Request update for remembered network. |
| 1034 CrosRequestNetworkProfileEntryProperties( | 1036 CrosRequestNetworkProfileEntryProperties( |
| 1035 profile_path, | 1037 profile_path, |
| 1036 service_path, | 1038 service_path, |
| 1037 base::Bind(&NetworkLibraryImplCros::RememberedNetworkServiceUpdate, | 1039 base::Bind(&NetworkLibraryImplCros::RememberedNetworkServiceUpdate, |
| 1038 weak_ptr_factory_.GetWeakPtr())); | 1040 weak_ptr_factory_.GetWeakPtr())); |
| 1039 } | 1041 } |
| 1040 } | 1042 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1075 delete remembered; | 1077 delete remembered; |
| 1076 return NULL; | 1078 return NULL; |
| 1077 } | 1079 } |
| 1078 } | 1080 } |
| 1079 | 1081 |
| 1080 if (!remembered->unique_id().empty()) | 1082 if (!remembered->unique_id().empty()) |
| 1081 remembered_network_unique_id_map_[remembered->unique_id()] = remembered; | 1083 remembered_network_unique_id_map_[remembered->unique_id()] = remembered; |
| 1082 | 1084 |
| 1083 SetProfileTypeFromPath(remembered); | 1085 SetProfileTypeFromPath(remembered); |
| 1084 | 1086 |
| 1085 VLOG(1) << "ParseRememberedNetwork: " << remembered->name() | 1087 VLOG(2) << "ParseRememberedNetwork: " << remembered->name() |
| 1086 << " path: " << remembered->service_path() | 1088 << " path: " << remembered->service_path() |
| 1087 << " profile: " << remembered->profile_path_; | 1089 << " profile: " << remembered->profile_path_; |
| 1088 NotifyNetworkManagerChanged(false); // Not forced. | 1090 NotifyNetworkManagerChanged(false); // Not forced. |
| 1089 | 1091 |
| 1090 if (remembered->type() == TYPE_VPN) { | 1092 if (remembered->type() == TYPE_VPN) { |
| 1091 // VPNs are only stored in profiles. If we don't have a network for it, | 1093 // VPNs are only stored in profiles. If we don't have a network for it, |
| 1092 // request one. | 1094 // request one. |
| 1093 if (!FindNetworkByUniqueId(remembered->unique_id())) { | 1095 if (!FindNetworkByUniqueId(remembered->unique_id())) { |
| 1094 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(remembered); | 1096 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(remembered); |
| 1095 std::string provider_type = ProviderTypeToString(vpn->provider_type()); | 1097 std::string provider_type = ProviderTypeToString(vpn->provider_type()); |
| 1096 VLOG(1) << "Requesting VPN: " << vpn->name() | 1098 VLOG(2) << "Requesting VPN: " << vpn->name() |
| 1097 << " Server: " << vpn->server_hostname() | 1099 << " Server: " << vpn->server_hostname() |
| 1098 << " Type: " << provider_type; | 1100 << " Type: " << provider_type; |
| 1099 CrosRequestVirtualNetworkProperties( | 1101 CrosRequestVirtualNetworkProperties( |
| 1100 vpn->name(), | 1102 vpn->name(), |
| 1101 vpn->server_hostname(), | 1103 vpn->server_hostname(), |
| 1102 provider_type, | 1104 provider_type, |
| 1103 base::Bind(&NetworkLibraryImplCros::NetworkServiceUpdate, | 1105 base::Bind(&NetworkLibraryImplCros::NetworkServiceUpdate, |
| 1104 weak_ptr_factory_.GetWeakPtr())); | 1106 weak_ptr_factory_.GetWeakPtr())); |
| 1105 } | 1107 } |
| 1106 } | 1108 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 device->device_parser()->UpdateDeviceFromInfo(info, device); | 1166 device->device_parser()->UpdateDeviceFromInfo(info, device); |
| 1165 } else { | 1167 } else { |
| 1166 NativeNetworkDeviceParser parser; | 1168 NativeNetworkDeviceParser parser; |
| 1167 device = parser.CreateDeviceFromInfo(device_path, info); | 1169 device = parser.CreateDeviceFromInfo(device_path, info); |
| 1168 VLOG(2) << " Adding device: " << device_path; | 1170 VLOG(2) << " Adding device: " << device_path; |
| 1169 if (device) { | 1171 if (device) { |
| 1170 device_map_[device_path] = device; | 1172 device_map_[device_path] = device; |
| 1171 } | 1173 } |
| 1172 CHECK(device) << "Attempted to add NULL device for path: " << device_path; | 1174 CHECK(device) << "Attempted to add NULL device for path: " << device_path; |
| 1173 } | 1175 } |
| 1174 VLOG(1) << "ParseNetworkDevice:" << device->name(); | 1176 VLOG(2) << "ParseNetworkDevice:" << device->name(); |
| 1175 if (device && device->type() == TYPE_CELLULAR) { | 1177 if (device && device->type() == TYPE_CELLULAR) { |
| 1176 if (!device->data_roaming_allowed() && IsCellularAlwaysInRoaming()) { | 1178 if (!device->data_roaming_allowed() && IsCellularAlwaysInRoaming()) { |
| 1177 SetCellularDataRoamingAllowed(true); | 1179 SetCellularDataRoamingAllowed(true); |
| 1178 } else { | 1180 } else { |
| 1179 bool settings_value; | 1181 bool settings_value; |
| 1180 if (CrosSettings::Get()->GetBoolean( | 1182 if (CrosSettings::Get()->GetBoolean( |
| 1181 kSignedDataRoamingEnabled, &settings_value) && | 1183 kSignedDataRoamingEnabled, &settings_value) && |
| 1182 device->data_roaming_allowed() != settings_value) { | 1184 device->data_roaming_allowed() != settings_value) { |
| 1183 // Switch back to signed settings value. | 1185 // Switch back to signed settings value. |
| 1184 SetCellularDataRoamingAllowed(settings_value); | 1186 SetCellularDataRoamingAllowed(settings_value); |
| 1185 } | 1187 } |
| 1186 } | 1188 } |
| 1187 } | 1189 } |
| 1188 NotifyNetworkManagerChanged(false); // Not forced. | 1190 NotifyNetworkManagerChanged(false); // Not forced. |
| 1189 AddNetworkDeviceObserver(device_path, network_device_observer_.get()); | 1191 AddNetworkDeviceObserver(device_path, network_device_observer_.get()); |
| 1190 } | 1192 } |
| 1191 | 1193 |
| 1192 } // namespace chromeos | 1194 } // namespace chromeos |
| OLD | NEW |