1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chromeos/network/network_activation_handler.h" 6 7#include "base/bind.h" 8#include "base/bind_helpers.h" 9#include "chromeos/dbus/dbus_thread_manager.h" 10#include "chromeos/dbus/shill_service_client.h" 11#include "chromeos/network/network_event_log.h" 12#include "chromeos/network/network_handler.h" 13#include "dbus/object_proxy.h" 14 15namespace chromeos { 16 17// static 18const char NetworkActivationHandler::kErrorShillError[] = "shill-error"; 19 20NetworkActivationHandler::NetworkActivationHandler() {} 21NetworkActivationHandler::~NetworkActivationHandler() {} 22 23void NetworkActivationHandler::Activate( 24 const std::string& service_path, 25 const std::string& carrier, 26 const base::Closure& success_callback, 27 const network_handler::ErrorCallback& error_callback) { 28 NET_LOG_USER("ActivateNetwork", service_path); 29 CallShillActivate(service_path, carrier, success_callback, error_callback); 30} 31 32void NetworkActivationHandler::CompleteActivation( 33 const std::string& service_path, 34 const base::Closure& success_callback, 35 const network_handler::ErrorCallback& error_callback) { 36 NET_LOG_USER("CompleteActivation", service_path); 37 CallShillCompleteActivation(service_path, success_callback, error_callback); 38} 39 40void NetworkActivationHandler::CallShillActivate( 41 const std::string& service_path, 42 const std::string& carrier, 43 const base::Closure& success_callback, 44 const network_handler::ErrorCallback& error_callback) { 45 NET_LOG_USER("Activation Request", service_path + ": '" + carrier + "'"); 46 DBusThreadManager::Get()->GetShillServiceClient()->ActivateCellularModem( 47 dbus::ObjectPath(service_path), 48 carrier, 49 base::Bind(&NetworkActivationHandler::HandleShillSuccess, 50 AsWeakPtr(), service_path, success_callback), 51 base::Bind(&network_handler::ShillErrorCallbackFunction, 52 kErrorShillError, service_path, error_callback)); 53} 54 55void NetworkActivationHandler::CallShillCompleteActivation( 56 const std::string& service_path, 57 const base::Closure& success_callback, 58 const network_handler::ErrorCallback& error_callback) { 59 NET_LOG_USER("CompleteActivation Request", service_path); 60 DBusThreadManager::Get()->GetShillServiceClient()->CompleteCellularActivation( 61 dbus::ObjectPath(service_path), 62 base::Bind(&NetworkActivationHandler::HandleShillSuccess, 63 AsWeakPtr(), service_path, success_callback), 64 base::Bind(&network_handler::ShillErrorCallbackFunction, 65 kErrorShillError, service_path, error_callback)); 66} 67 68void NetworkActivationHandler::HandleShillSuccess( 69 const std::string& service_path, 70 const base::Closure& success_callback) { 71 if (!success_callback.is_null()) 72 success_callback.Run(); 73} 74 75} // namespace chromeos 76