15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/shill_manager_client.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/logging.h" 99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/dbus/shill_manager_client_stub.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/shill_property_changed_observer.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/bus.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/message.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/object_path.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/object_proxy.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/values_util.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/cros_system_api/dbus/service_constants.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The ShillManagerClient implementation. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShillManagerClientImpl : public ShillManagerClient { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit ShillManagerClientImpl(dbus::Bus* bus) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : proxy_(bus->GetObjectProxy( 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kFlimflamServiceName, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::ObjectPath(flimflam::kFlimflamServicePath))), 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_(bus, proxy_) { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.MonitorPropertyChanged(flimflam::kFlimflamManagerInterface); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //////////////////////////////////// 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ShillManagerClient overrides. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void AddPropertyChangedObserver( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShillPropertyChangedObserver* observer) OVERRIDE { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.AddPropertyChangedObserver(observer); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RemovePropertyChangedObserver( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShillPropertyChangedObserver* observer) OVERRIDE { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.RemovePropertyChangedObserver(observer); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kGetPropertiesFunction); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CallDictionaryValueMethod(&method_call, callback); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void GetNetworksForGeolocation( 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DictionaryValueCallback& callback) OVERRIDE { 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shill::kGetNetworksForGeolocation); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) helper_.CallDictionaryValueMethod(&method_call, callback); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetProperty(const std::string& name, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Value& value, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& callback, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kSetPropertyFunction); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MessageWriter writer(&method_call); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) writer.AppendString(name); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShillClientHelper::AppendValueDataAsVariant(&writer, value); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CallVoidMethodWithErrorCallback(&method_call, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callback, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_callback); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestScan(const std::string& type, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& callback, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kRequestScanFunction); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MessageWriter writer(&method_call); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) writer.AppendString(type); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CallVoidMethodWithErrorCallback(&method_call, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callback, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_callback); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnableTechnology( 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& type, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& callback, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kEnableTechnologyFunction); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MessageWriter writer(&method_call); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) writer.AppendString(type); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CallVoidMethodWithErrorCallback(&method_call, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callback, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_callback); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DisableTechnology( 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& type, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& callback, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kDisableTechnologyFunction); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MessageWriter writer(&method_call); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) writer.AppendString(type); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CallVoidMethodWithErrorCallback(&method_call, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callback, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_callback); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ConfigureService( 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::DictionaryValue& properties, 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ObjectPathCallback& callback, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kConfigureServiceFunction); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MessageWriter writer(&method_call); 1197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ShillClientHelper::AppendServicePropertiesDictionary(&writer, properties); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) helper_.CallObjectPathMethodWithErrorCallback(&method_call, 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) callback, 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) error_callback); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void ConfigureServiceForProfile( 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const dbus::ObjectPath& profile_path, 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::DictionaryValue& properties, 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ObjectPathCallback& callback, 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) shill::kConfigureServiceForProfileFunction); 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) dbus::MessageWriter writer(&method_call); 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) writer.AppendObjectPath(dbus::ObjectPath(profile_path)); 1347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ShillClientHelper::AppendServicePropertiesDictionary(&writer, properties); 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) helper_.CallObjectPathMethodWithErrorCallback(&method_call, 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback, 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) error_callback); 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetService( 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::DictionaryValue& properties, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ObjectPathCallback& callback, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) flimflam::kGetServiceFunction); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::MessageWriter writer(&method_call); 1477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ShillClientHelper::AppendServicePropertiesDictionary(&writer, properties); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CallObjectPathMethodWithErrorCallback(&method_call, 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callback, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_callback); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 153b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual void VerifyDestination(const VerificationProperties& properties, 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const BooleanCallback& callback, 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shill::kVerifyDestinationFunction); 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MessageWriter writer(&method_call); 159b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.certificate); 160b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.public_key); 161b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.nonce); 162b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.signed_data); 163b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_serial); 164b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_ssid); 165b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_bssid); 166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) helper_.CallBooleanMethodWithErrorCallback( 167b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) &method_call, callback, error_callback); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void VerifyAndEncryptCredentials( 171b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const VerificationProperties& properties, 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& service_path, 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const StringCallback& callback, 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shill::kVerifyAndEncryptCredentialsFunction); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MessageWriter writer(&method_call); 178b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.certificate); 179b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.public_key); 180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.nonce); 181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.signed_data); 182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_serial); 183b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_ssid); 184b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_bssid); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) writer.AppendObjectPath(dbus::ObjectPath(service_path)); 186b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) helper_.CallStringMethodWithErrorCallback( 187b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) &method_call, callback, error_callback); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void VerifyAndEncryptData( 191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const VerificationProperties& properties, 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& data, 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const StringCallback& callback, 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shill::kVerifyAndEncryptDataFunction); 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dbus::MessageWriter writer(&method_call); 198b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.certificate); 199b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.public_key); 200b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.nonce); 201b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.signed_data); 202b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_serial); 203b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_ssid); 204b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) writer.AppendString(properties.device_bssid); 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) writer.AppendString(data); 206b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) helper_.CallStringMethodWithErrorCallback( 207b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) &method_call, callback, error_callback); 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void ConnectToBestServices( 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Closure& callback, 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE { 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) shill::kConnectToBestServicesFunction); 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) helper_.CallVoidMethodWithErrorCallback(&method_call, 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback, 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) error_callback); 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual TestInterface* GetTestInterface() OVERRIDE { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::ObjectProxy* proxy_; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShillClientHelper helper_; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ShillManagerClientImpl); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShillManagerClient::ShillManagerClient() {} 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShillManagerClient::~ShillManagerClient() {} 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShillManagerClient* ShillManagerClient::Create( 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DBusClientImplementationType type, 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dbus::Bus* bus) { 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ShillManagerClientImpl(bus); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new ShillManagerClientStub(); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 247b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// ShillManagerClient::VerificationProperties implementation. 248b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)ShillManagerClient::VerificationProperties::VerificationProperties() { 249b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 250b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 251b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)ShillManagerClient::VerificationProperties::~VerificationProperties() { 252b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 253b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 255