| Index: chrome/browser/chromeos/mobile/mobile_activator.cc
|
| diff --git a/chrome/browser/chromeos/mobile/mobile_activator.cc b/chrome/browser/chromeos/mobile/mobile_activator.cc
|
| index 9475e6e8e06d78d5ee02cd41e6a80263e58f771a..c0781b94e16e0bb5bca801c6dfdfb655c4203c25 100644
|
| --- a/chrome/browser/chromeos/mobile/mobile_activator.cc
|
| +++ b/chrome/browser/chromeos/mobile/mobile_activator.cc
|
| @@ -165,7 +165,8 @@ MobileActivator::MobileActivator()
|
| initial_OTASP_attempts_(0),
|
| trying_OTASP_attempts_(0),
|
| final_OTASP_attempts_(0),
|
| - payment_reconnect_count_(0) {
|
| + payment_reconnect_count_(0),
|
| + weak_ptr_factory_(this) {
|
| }
|
|
|
| MobileActivator::~MobileActivator() {
|
| @@ -268,9 +269,35 @@ void MobileActivator::InitiateActivation(const std::string& service_path) {
|
| }
|
|
|
| void MobileActivator::ContinueActivation() {
|
| - const NetworkState* network = GetNetworkState(service_path_);
|
| - if (!network ||
|
| - (network->payment_url().empty() && network->usage_url().empty()))
|
| + NetworkHandler::Get()->network_configuration_handler()->GetProperties(
|
| + service_path_,
|
| + base::Bind(&MobileActivator::GetPropertiesAndContinueActivation,
|
| + weak_ptr_factory_.GetWeakPtr()),
|
| + base::Bind(&MobileActivator::GetPropertiesFailure,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void MobileActivator::GetPropertiesAndContinueActivation(
|
| + const std::string& service_path,
|
| + const base::DictionaryValue& properties) {
|
| + if (service_path != service_path_) {
|
| + NET_LOG_EVENT("MobileActivator::GetProperties received for stale network",
|
| + service_path);
|
| + return; // Edge case; abort.
|
| + }
|
| + const DictionaryValue* payment_dict;
|
| + std::string usage_url, payment_url;
|
| + if (!properties.GetStringWithoutPathExpansion(
|
| + flimflam::kUsageURLProperty, &usage_url) ||
|
| + !properties.GetDictionaryWithoutPathExpansion(
|
| + flimflam::kPaymentPortalProperty, &payment_dict) ||
|
| + !payment_dict->GetStringWithoutPathExpansion(
|
| + flimflam::kPaymentPortalURL, &payment_url)) {
|
| + NET_LOG_ERROR("MobileActivator missing properties", service_path_);
|
| + return;
|
| + }
|
| +
|
| + if (payment_url.empty() && usage_url.empty())
|
| return;
|
|
|
| DisableCertRevocationChecking();
|
| @@ -279,13 +306,20 @@ void MobileActivator::ContinueActivation() {
|
| DictionaryValue auto_connect_property;
|
| auto_connect_property.SetBoolean(flimflam::kAutoConnectProperty, true);
|
| NetworkHandler::Get()->network_configuration_handler()->SetProperties(
|
| - network->path(),
|
| + service_path_,
|
| auto_connect_property,
|
| base::Bind(&base::DoNothing),
|
| network_handler::ErrorCallback());
|
| StartActivation();
|
| }
|
|
|
| +void MobileActivator::GetPropertiesFailure(
|
| + const std::string& error_name,
|
| + scoped_ptr<base::DictionaryValue> error_data) {
|
| + NET_LOG_ERROR("MobileActivator GetProperties Failed: " + error_name,
|
| + service_path_);
|
| +}
|
| +
|
| void MobileActivator::OnSetTransactionStatus(bool success) {
|
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| base::Bind(&MobileActivator::HandleSetTransactionStatus,
|
|
|