12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROMEOS_NETWORK_NETWORK_HANDLER_CALLBACKS_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROMEOS_NETWORK_NETWORK_HANDLER_CALLBACKS_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback.h" 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/chromeos_export.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chromeos/dbus/dbus_method_call_status.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DictionaryValue; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace network_handler { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)CHROMEOS_EXPORT extern const char kDBusFailedError[]; 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)CHROMEOS_EXPORT extern const char kDBusFailedErrorMessage[]; 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochCHROMEOS_EXPORT extern const char kErrorName[]; 26ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochCHROMEOS_EXPORT extern const char kErrorDetail[]; 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochCHROMEOS_EXPORT extern const char kDbusErrorName[]; 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochCHROMEOS_EXPORT extern const char kDbusErrorMessage[]; 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// An error callback used by both the configuration handler and the state 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// handler to receive error results from the API. 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback< 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const std::string& error_name, 34a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) scoped_ptr<base::DictionaryValue> error_data)> ErrorCallback; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback< 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const std::string& service_path, 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::DictionaryValue& dictionary)> DictionaryResultCallback; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback< 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const std::string& service_path)> StringResultCallback; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Create a DictionaryValue for passing to ErrorCallback. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)CHROMEOS_EXPORT base::DictionaryValue* CreateErrorData( 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& path, 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& error_name, 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& error_detail); 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// If not NULL, runs |error_callback| with an ErrorData dictionary created from 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// the other arguments. 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)CHROMEOS_EXPORT void RunErrorCallback(const ErrorCallback& error_callback, 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const std::string& path, 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const std::string& error_name, 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const std::string& error_detail); 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochCHROMEOS_EXPORT base::DictionaryValue* CreateDBusErrorData( 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& path, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& error_name, 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& error_detail, 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& dbus_error_name, 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& dbus_error_message); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Callback for Shill errors. 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// |error_name| is the error name passed to |error_callback|. 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// |path| is the associated object path or blank if not relevant. 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// |dbus_error_name| and |dbus_error_message| are provided by the DBus handler. 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Logs an error and calls |error_callback| if not null. 68868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)CHROMEOS_EXPORT void ShillErrorCallbackFunction( 697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& error_name, 70868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const std::string& path, 71868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const ErrorCallback& error_callback, 727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& dbus_error_name, 737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& dbus_error_message); 747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Callback for property getters used by NetworkConfigurationHandler 767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// (for Network Services) and by NetworkDeviceHandler. Used to translate 777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// the DBus Dictionary callback into one that calls the error callback 787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// if |call_status| != DBUS_METHOD_CALL_SUCCESS. 797dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochCHROMEOS_EXPORT void GetPropertiesCallback( 801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const DictionaryResultCallback& callback, 811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const ErrorCallback& error_callback, 827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& path, 837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DBusMethodCallStatus call_status, 847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::DictionaryValue& value); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace network_handler 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace chromeos 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROMEOS_NETWORK_NETWORK_HANDLER_CALLBACKS_H_ 90