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

Unified Diff: chrome/browser/chromeos/cros/network_library.cc

Issue 7745018: Always enable roaming for cellular operators that don't work without it (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments resolved Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/cros/network_library.h ('k') | chrome/browser/chromeos/status/network_menu_icon.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/cros/network_library.cc
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index a347ec714b32544bfe482bdd594efcbc1802d900..847cd1e132dca2fb4b28f0c8e22cdb64d7ddb741 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -103,6 +103,12 @@ const int kRecentPlanPaymentHours = 6;
// If cellular device doesn't have SIM card, then retries are never used.
const int kDefaultSimUnlockRetriesCount = 999;
+// List of cellular operators names that should have data roaming always enabled
+// to be able to connect to any network.
+const char* kAlwaysInRoamingOperators[] = {
+ "CUBIC"
+};
+
////////////////////////////////////////////////////////////////////////////////
// Misc.
@@ -1374,6 +1380,7 @@ class NetworkLibraryImplBase : public NetworkLibrary {
// virtual RequestCellularScan implemented in derived classes.
// virtual RequestCellularRegister implemented in derived classes.
// virtual SetCellularDataRoamingAllowed implemented in derived classes.
+ // virtual IsCellularAlwaysInRoaming implemented in derived classes.
// virtual RequestNetworkScan implemented in derived classes.
// virtual GetWifiAccessPoints implemented in derived classes.
@@ -2955,6 +2962,7 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase {
virtual void RequestCellularScan() OVERRIDE;
virtual void RequestCellularRegister(const std::string& network_id) OVERRIDE;
virtual void SetCellularDataRoamingAllowed(bool new_value) OVERRIDE;
+ virtual bool IsCellularAlwaysInRoaming() OVERRIDE;
virtual void RequestNetworkScan() OVERRIDE;
virtual bool GetWifiAccessPoints(WifiAccessPointVector* result) OVERRIDE;
@@ -3211,12 +3219,16 @@ void NetworkLibraryImplCros::UpdateNetworkDeviceStatus(
PropertyIndex index = PROPERTY_INDEX_UNKNOWN;
if (device->UpdateStatus(key, value, &index)) {
if (index == PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING) {
- bool settings_value =
- UserCrosSettingsProvider::cached_data_roaming_enabled();
- if (device->data_roaming_allowed() != settings_value) {
- // Switch back to signed settings value.
- SetCellularDataRoamingAllowed(settings_value);
- return;
+ if (!device->data_roaming_allowed() && IsCellularAlwaysInRoaming()) {
+ SetCellularDataRoamingAllowed(true);
+ } else {
+ bool settings_value =
+ UserCrosSettingsProvider::cached_data_roaming_enabled();
+ if (device->data_roaming_allowed() != settings_value) {
+ // Switch back to signed settings value.
+ SetCellularDataRoamingAllowed(settings_value);
+ return;
+ }
}
}
} else {
@@ -3476,6 +3488,21 @@ void NetworkLibraryImplCros::SetCellularDataRoamingAllowed(bool new_value) {
value.get());
}
+bool NetworkLibraryImplCros::IsCellularAlwaysInRoaming() {
+ const NetworkDevice* cellular = FindCellularDevice();
+ if (!cellular) {
+ NOTREACHED() << "Calling IsCellularAlwaysInRoaming method "
+ "w/o cellular device.";
+ return false;
+ }
+ const std::string& home_provider_name = cellular->home_provider_name();
+ for (size_t i = 0; i < arraysize(kAlwaysInRoamingOperators); i++) {
+ if (home_provider_name == kAlwaysInRoamingOperators[i])
+ return true;
+ }
+ return false;
+}
+
void NetworkLibraryImplCros::RequestNetworkScan() {
if (wifi_enabled()) {
wifi_scanning_ = true; // Cleared when updates are received.
@@ -4251,6 +4278,18 @@ void NetworkLibraryImplCros::ParseNetworkDevice(const std::string& device_path,
CHECK(device) << "Attempted to add NULL device for path: " << device_path;
}
VLOG(1) << "ParseNetworkDevice:" << device->name();
+ if (device && device->type() == TYPE_CELLULAR) {
+ if (!device->data_roaming_allowed() && IsCellularAlwaysInRoaming()) {
+ SetCellularDataRoamingAllowed(true);
+ } else {
+ bool settings_value =
+ UserCrosSettingsProvider::cached_data_roaming_enabled();
+ if (device->data_roaming_allowed() != settings_value) {
+ // Switch back to signed settings value.
+ SetCellularDataRoamingAllowed(settings_value);
+ }
+ }
+ }
NotifyNetworkManagerChanged(false); // Not forced.
AddNetworkDeviceObserver(device_path, network_device_observer_.get());
}
@@ -4300,6 +4339,7 @@ class NetworkLibraryImplStub : public NetworkLibraryImplBase {
virtual void RequestCellularRegister(
const std::string& network_id) OVERRIDE {}
virtual void SetCellularDataRoamingAllowed(bool new_value) OVERRIDE {}
+ virtual bool IsCellularAlwaysInRoaming() OVERRIDE { return false; }
virtual void RequestNetworkScan() OVERRIDE {}
virtual bool GetWifiAccessPoints(WifiAccessPointVector* result) OVERRIDE;
« no previous file with comments | « chrome/browser/chromeos/cros/network_library.h ('k') | chrome/browser/chromeos/status/network_menu_icon.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698