/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl\nsIMobileConnectionService.idl
 */

#ifndef __gen_nsIMobileConnectionService_h__
#define __gen_nsIMobileConnectionService_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#include "js/Value.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIMobileConnection; /* forward declaration */

class nsIMobileConnectionInfo; /* forward declaration */

class nsIMobileNetworkInfo; /* forward declaration */

class nsIVariant; /* forward declaration */


/* starting interface:    nsIMobileConnectionListener */
#define NS_IMOBILECONNECTIONLISTENER_IID_STR "bc0d4d76-fd3a-4593-818f-cb6ff87fbb55"

#define NS_IMOBILECONNECTIONLISTENER_IID \
  {0xbc0d4d76, 0xfd3a, 0x4593, \
    { 0x81, 0x8f, 0xcb, 0x6f, 0xf8, 0x7f, 0xbb, 0x55 }}

class NS_NO_VTABLE nsIMobileConnectionListener : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMOBILECONNECTIONLISTENER_IID)

  /* void notifyVoiceChanged (); */
  NS_IMETHOD NotifyVoiceChanged(void) = 0;

  /* void notifyDataChanged (); */
  NS_IMETHOD NotifyDataChanged(void) = 0;

  /* void notifyUssdReceived (in DOMString message, in boolean sessionEnded); */
  NS_IMETHOD NotifyUssdReceived(const nsAString & message, bool sessionEnded) = 0;

  /* void notifyDataError (in DOMString message); */
  NS_IMETHOD NotifyDataError(const nsAString & message) = 0;

  /* void notifyCFStateChanged (in boolean success, in unsigned short action, in unsigned short reason, in DOMString number, in unsigned short timeSeconds, in unsigned short serviceClass); */
  NS_IMETHOD NotifyCFStateChanged(bool success, uint16_t action, uint16_t reason, const nsAString & number, uint16_t timeSeconds, uint16_t serviceClass) = 0;

  /* void notifyEmergencyCbModeChanged (in boolean active, in unsigned long timeoutMs); */
  NS_IMETHOD NotifyEmergencyCbModeChanged(bool active, uint32_t timeoutMs) = 0;

  /* void notifyOtaStatusChanged (in DOMString status); */
  NS_IMETHOD NotifyOtaStatusChanged(const nsAString & status) = 0;

  /* void notifyIccChanged (); */
  NS_IMETHOD NotifyIccChanged(void) = 0;

  /* void notifyRadioStateChanged (); */
  NS_IMETHOD NotifyRadioStateChanged(void) = 0;

  /* void notifyClirModeChanged (in unsigned long mode); */
  NS_IMETHOD NotifyClirModeChanged(uint32_t mode) = 0;

  /* void notifyLastKnownNetworkChanged (); */
  NS_IMETHOD NotifyLastKnownNetworkChanged(void) = 0;

  /* void notifyLastKnownHomeNetworkChanged (); */
  NS_IMETHOD NotifyLastKnownHomeNetworkChanged(void) = 0;

  /* void notifyNetworkSelectionModeChanged (); */
  NS_IMETHOD NotifyNetworkSelectionModeChanged(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMobileConnectionListener, NS_IMOBILECONNECTIONLISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMOBILECONNECTIONLISTENER \
  NS_IMETHOD NotifyVoiceChanged(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyDataChanged(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyUssdReceived(const nsAString & message, bool sessionEnded) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyDataError(const nsAString & message) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyCFStateChanged(bool success, uint16_t action, uint16_t reason, const nsAString & number, uint16_t timeSeconds, uint16_t serviceClass) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyEmergencyCbModeChanged(bool active, uint32_t timeoutMs) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyOtaStatusChanged(const nsAString & status) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyIccChanged(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyRadioStateChanged(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyClirModeChanged(uint32_t mode) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyLastKnownNetworkChanged(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyLastKnownHomeNetworkChanged(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyNetworkSelectionModeChanged(void) MOZ_OVERRIDE; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMOBILECONNECTIONLISTENER(_to) \
  NS_IMETHOD NotifyVoiceChanged(void) MOZ_OVERRIDE { return _to NotifyVoiceChanged(); } \
  NS_IMETHOD NotifyDataChanged(void) MOZ_OVERRIDE { return _to NotifyDataChanged(); } \
  NS_IMETHOD NotifyUssdReceived(const nsAString & message, bool sessionEnded) MOZ_OVERRIDE { return _to NotifyUssdReceived(message, sessionEnded); } \
  NS_IMETHOD NotifyDataError(const nsAString & message) MOZ_OVERRIDE { return _to NotifyDataError(message); } \
  NS_IMETHOD NotifyCFStateChanged(bool success, uint16_t action, uint16_t reason, const nsAString & number, uint16_t timeSeconds, uint16_t serviceClass) MOZ_OVERRIDE { return _to NotifyCFStateChanged(success, action, reason, number, timeSeconds, serviceClass); } \
  NS_IMETHOD NotifyEmergencyCbModeChanged(bool active, uint32_t timeoutMs) MOZ_OVERRIDE { return _to NotifyEmergencyCbModeChanged(active, timeoutMs); } \
  NS_IMETHOD NotifyOtaStatusChanged(const nsAString & status) MOZ_OVERRIDE { return _to NotifyOtaStatusChanged(status); } \
  NS_IMETHOD NotifyIccChanged(void) MOZ_OVERRIDE { return _to NotifyIccChanged(); } \
  NS_IMETHOD NotifyRadioStateChanged(void) MOZ_OVERRIDE { return _to NotifyRadioStateChanged(); } \
  NS_IMETHOD NotifyClirModeChanged(uint32_t mode) MOZ_OVERRIDE { return _to NotifyClirModeChanged(mode); } \
  NS_IMETHOD NotifyLastKnownNetworkChanged(void) MOZ_OVERRIDE { return _to NotifyLastKnownNetworkChanged(); } \
  NS_IMETHOD NotifyLastKnownHomeNetworkChanged(void) MOZ_OVERRIDE { return _to NotifyLastKnownHomeNetworkChanged(); } \
  NS_IMETHOD NotifyNetworkSelectionModeChanged(void) MOZ_OVERRIDE { return _to NotifyNetworkSelectionModeChanged(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMOBILECONNECTIONLISTENER(_to) \
  NS_IMETHOD NotifyVoiceChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyVoiceChanged(); } \
  NS_IMETHOD NotifyDataChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyDataChanged(); } \
  NS_IMETHOD NotifyUssdReceived(const nsAString & message, bool sessionEnded) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyUssdReceived(message, sessionEnded); } \
  NS_IMETHOD NotifyDataError(const nsAString & message) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyDataError(message); } \
  NS_IMETHOD NotifyCFStateChanged(bool success, uint16_t action, uint16_t reason, const nsAString & number, uint16_t timeSeconds, uint16_t serviceClass) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyCFStateChanged(success, action, reason, number, timeSeconds, serviceClass); } \
  NS_IMETHOD NotifyEmergencyCbModeChanged(bool active, uint32_t timeoutMs) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyEmergencyCbModeChanged(active, timeoutMs); } \
  NS_IMETHOD NotifyOtaStatusChanged(const nsAString & status) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyOtaStatusChanged(status); } \
  NS_IMETHOD NotifyIccChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyIccChanged(); } \
  NS_IMETHOD NotifyRadioStateChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyRadioStateChanged(); } \
  NS_IMETHOD NotifyClirModeChanged(uint32_t mode) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyClirModeChanged(mode); } \
  NS_IMETHOD NotifyLastKnownNetworkChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyLastKnownNetworkChanged(); } \
  NS_IMETHOD NotifyLastKnownHomeNetworkChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyLastKnownHomeNetworkChanged(); } \
  NS_IMETHOD NotifyNetworkSelectionModeChanged(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyNetworkSelectionModeChanged(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMobileConnectionListener : public nsIMobileConnectionListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMOBILECONNECTIONLISTENER

  nsMobileConnectionListener();

private:
  ~nsMobileConnectionListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMobileConnectionListener, nsIMobileConnectionListener)

nsMobileConnectionListener::nsMobileConnectionListener()
{
  /* member initializers and constructor code */
}

nsMobileConnectionListener::~nsMobileConnectionListener()
{
  /* destructor code */
}

/* void notifyVoiceChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyVoiceChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyDataChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyDataChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyUssdReceived (in DOMString message, in boolean sessionEnded); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyUssdReceived(const nsAString & message, bool sessionEnded)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyDataError (in DOMString message); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyDataError(const nsAString & message)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyCFStateChanged (in boolean success, in unsigned short action, in unsigned short reason, in DOMString number, in unsigned short timeSeconds, in unsigned short serviceClass); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyCFStateChanged(bool success, uint16_t action, uint16_t reason, const nsAString & number, uint16_t timeSeconds, uint16_t serviceClass)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyEmergencyCbModeChanged (in boolean active, in unsigned long timeoutMs); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyEmergencyCbModeChanged(bool active, uint32_t timeoutMs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyOtaStatusChanged (in DOMString status); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyOtaStatusChanged(const nsAString & status)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyIccChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyIccChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyRadioStateChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyRadioStateChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyClirModeChanged (in unsigned long mode); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyClirModeChanged(uint32_t mode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyLastKnownNetworkChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyLastKnownNetworkChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyLastKnownHomeNetworkChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyLastKnownHomeNetworkChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyNetworkSelectionModeChanged (); */
NS_IMETHODIMP nsMobileConnectionListener::NotifyNetworkSelectionModeChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define NO_ADDITIONAL_INFORMATION 0

/* starting interface:    nsIMobileConnectionCallback */
#define NS_IMOBILECONNECTIONCALLBACK_IID_STR "7f2dbbe0-42f2-11e4-916c-0800200c9a66"

#define NS_IMOBILECONNECTIONCALLBACK_IID \
  {0x7f2dbbe0, 0x42f2, 0x11e4, \
    { 0x91, 0x6c, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 }}

class nsIMobileConnectionCallback : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMOBILECONNECTIONCALLBACK_IID)

  /* void notifySuccess (); */
  NS_IMETHOD NotifySuccess(void) = 0;

  /* void notifySuccessWithString (in DOMString result); */
  NS_IMETHOD NotifySuccessWithString(const nsAString & result) = 0;

  /* void notifySuccessWithBoolean (in boolean result); */
  NS_IMETHOD NotifySuccessWithBoolean(bool result) = 0;

  /* void notifyGetNetworksSuccess (in uint32_t count, [array, size_is (count)] in nsIMobileNetworkInfo networks); */
  NS_IMETHOD NotifyGetNetworksSuccess(uint32_t count, nsIMobileNetworkInfo **networks) = 0;

  /* [implicit_jscontext] void notifySendCancelMmiSuccess (in jsval result); */
  NS_IMETHOD NotifySendCancelMmiSuccess(JS::HandleValue result, JSContext* cx) = 0;

  /* [implicit_jscontext] void notifyGetCallForwardingSuccess (in jsval results); */
  NS_IMETHOD NotifyGetCallForwardingSuccess(JS::HandleValue results, JSContext* cx) = 0;

  /* void notifyGetCallBarringSuccess (in unsigned short program, in boolean enabled, in unsigned short serviceClass); */
  NS_IMETHOD NotifyGetCallBarringSuccess(uint16_t program, bool enabled, uint16_t serviceClass) = 0;

  /* void notifyGetClirStatusSuccess (in unsigned short n, in unsigned short m); */
  NS_IMETHOD NotifyGetClirStatusSuccess(uint16_t n, uint16_t m) = 0;

  /* [optional_argc] void notifyError (in DOMString name, [optional] in DOMString message, [optional] in DOMString serviceCode, [optional] in unsigned short additionalInformation); */
  NS_IMETHOD NotifyError(const nsAString & name, const nsAString & message, const nsAString & serviceCode, uint16_t additionalInformation, uint8_t _argc) = 0;

   // non-virtual so it won't affect the vtable
  inline nsresult NotifyError(const nsAString& aName)
  {
    return NotifyError(aName, EmptyString(), EmptyString(),
                       NO_ADDITIONAL_INFORMATION, 0 /* ARGC = 0 */);
  }
  // non-virtual so it won't affect the vtable
  inline nsresult NotifyError(const nsAString& aName,
                              const nsAString& aMessage)
  {
    return NotifyError(aName, aMessage, EmptyString(), NO_ADDITIONAL_INFORMATION,
                       1 /* ARGC = 1 */);
  }
  // non-virtual so it won't affect the vtable
  inline nsresult NotifyError(const nsAString& aName,
                              const nsAString& aMessage,
                              const nsAString& aServiceCode)
  {
    return NotifyError(aName, aMessage, aServiceCode, NO_ADDITIONAL_INFORMATION,
                       2 /* ARGC = 2 */);
  }
  // non-virtual so it won't affect the vtable
  inline nsresult NotifyError(const nsAString& aName,
                              const nsAString& aMessage,
                              const nsAString& aServiceCode,
                              uint16_t aAdditionInformation)
  {
    return NotifyError(aName, aMessage, aServiceCode, aAdditionInformation,
                       3 /* ARGC = 3 */);
  }
};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMobileConnectionCallback, NS_IMOBILECONNECTIONCALLBACK_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMOBILECONNECTIONCALLBACK \
  NS_IMETHOD NotifySuccess(void) MOZ_OVERRIDE; \
  NS_IMETHOD NotifySuccessWithString(const nsAString & result) MOZ_OVERRIDE; \
  NS_IMETHOD NotifySuccessWithBoolean(bool result) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyGetNetworksSuccess(uint32_t count, nsIMobileNetworkInfo **networks) MOZ_OVERRIDE; \
  NS_IMETHOD NotifySendCancelMmiSuccess(JS::HandleValue result, JSContext* cx) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyGetCallForwardingSuccess(JS::HandleValue results, JSContext* cx) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyGetCallBarringSuccess(uint16_t program, bool enabled, uint16_t serviceClass) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyGetClirStatusSuccess(uint16_t n, uint16_t m) MOZ_OVERRIDE; \
  NS_IMETHOD NotifyError(const nsAString & name, const nsAString & message, const nsAString & serviceCode, uint16_t additionalInformation, uint8_t _argc) MOZ_OVERRIDE; \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMOBILECONNECTIONCALLBACK(_to) \
  NS_IMETHOD NotifySuccess(void) MOZ_OVERRIDE { return _to NotifySuccess(); } \
  NS_IMETHOD NotifySuccessWithString(const nsAString & result) MOZ_OVERRIDE { return _to NotifySuccessWithString(result); } \
  NS_IMETHOD NotifySuccessWithBoolean(bool result) MOZ_OVERRIDE { return _to NotifySuccessWithBoolean(result); } \
  NS_IMETHOD NotifyGetNetworksSuccess(uint32_t count, nsIMobileNetworkInfo **networks) MOZ_OVERRIDE { return _to NotifyGetNetworksSuccess(count, networks); } \
  NS_IMETHOD NotifySendCancelMmiSuccess(JS::HandleValue result, JSContext* cx) MOZ_OVERRIDE { return _to NotifySendCancelMmiSuccess(result, cx); } \
  NS_IMETHOD NotifyGetCallForwardingSuccess(JS::HandleValue results, JSContext* cx) MOZ_OVERRIDE { return _to NotifyGetCallForwardingSuccess(results, cx); } \
  NS_IMETHOD NotifyGetCallBarringSuccess(uint16_t program, bool enabled, uint16_t serviceClass) MOZ_OVERRIDE { return _to NotifyGetCallBarringSuccess(program, enabled, serviceClass); } \
  NS_IMETHOD NotifyGetClirStatusSuccess(uint16_t n, uint16_t m) MOZ_OVERRIDE { return _to NotifyGetClirStatusSuccess(n, m); } \
  NS_IMETHOD NotifyError(const nsAString & name, const nsAString & message, const nsAString & serviceCode, uint16_t additionalInformation, uint8_t _argc) MOZ_OVERRIDE { return _to NotifyError(name, message, serviceCode, additionalInformation, _argc); } \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMOBILECONNECTIONCALLBACK(_to) \
  NS_IMETHOD NotifySuccess(void) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifySuccess(); } \
  NS_IMETHOD NotifySuccessWithString(const nsAString & result) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifySuccessWithString(result); } \
  NS_IMETHOD NotifySuccessWithBoolean(bool result) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifySuccessWithBoolean(result); } \
  NS_IMETHOD NotifyGetNetworksSuccess(uint32_t count, nsIMobileNetworkInfo **networks) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyGetNetworksSuccess(count, networks); } \
  NS_IMETHOD NotifySendCancelMmiSuccess(JS::HandleValue result, JSContext* cx) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifySendCancelMmiSuccess(result, cx); } \
  NS_IMETHOD NotifyGetCallForwardingSuccess(JS::HandleValue results, JSContext* cx) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyGetCallForwardingSuccess(results, cx); } \
  NS_IMETHOD NotifyGetCallBarringSuccess(uint16_t program, bool enabled, uint16_t serviceClass) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyGetCallBarringSuccess(program, enabled, serviceClass); } \
  NS_IMETHOD NotifyGetClirStatusSuccess(uint16_t n, uint16_t m) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyGetClirStatusSuccess(n, m); } \
  NS_IMETHOD NotifyError(const nsAString & name, const nsAString & message, const nsAString & serviceCode, uint16_t additionalInformation, uint8_t _argc) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyError(name, message, serviceCode, additionalInformation, _argc); } \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMobileConnectionCallback : public nsIMobileConnectionCallback
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMOBILECONNECTIONCALLBACK

  nsMobileConnectionCallback();

private:
  ~nsMobileConnectionCallback();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMobileConnectionCallback, nsIMobileConnectionCallback)

nsMobileConnectionCallback::nsMobileConnectionCallback()
{
  /* member initializers and constructor code */
}

nsMobileConnectionCallback::~nsMobileConnectionCallback()
{
  /* destructor code */
}

/* void notifySuccess (); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifySuccess()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifySuccessWithString (in DOMString result); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifySuccessWithString(const nsAString & result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifySuccessWithBoolean (in boolean result); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifySuccessWithBoolean(bool result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyGetNetworksSuccess (in uint32_t count, [array, size_is (count)] in nsIMobileNetworkInfo networks); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifyGetNetworksSuccess(uint32_t count, nsIMobileNetworkInfo **networks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [implicit_jscontext] void notifySendCancelMmiSuccess (in jsval result); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifySendCancelMmiSuccess(JS::HandleValue result, JSContext* cx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [implicit_jscontext] void notifyGetCallForwardingSuccess (in jsval results); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifyGetCallForwardingSuccess(JS::HandleValue results, JSContext* cx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyGetCallBarringSuccess (in unsigned short program, in boolean enabled, in unsigned short serviceClass); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifyGetCallBarringSuccess(uint16_t program, bool enabled, uint16_t serviceClass)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyGetClirStatusSuccess (in unsigned short n, in unsigned short m); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifyGetClirStatusSuccess(uint16_t n, uint16_t m)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [optional_argc] void notifyError (in DOMString name, [optional] in DOMString message, [optional] in DOMString serviceCode, [optional] in unsigned short additionalInformation); */
NS_IMETHODIMP nsMobileConnectionCallback::NotifyError(const nsAString & name, const nsAString & message, const nsAString & serviceCode, uint16_t additionalInformation, uint8_t _argc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define NS_MOBILE_CONNECTION_SERVICE_CID \
  { 0xc6f229d4, 0x16e2, 0x4600, \
    { 0x87, 0x2a, 0x3d, 0x3d, 0xc5, 0xb8, 0x55, 0x41 } }
#define NS_MOBILE_CONNECTION_SERVICE_CONTRACTID \
  "@mozilla.org/mobileconnection/mobileconnectionservice;1"

/* starting interface:    nsIMobileConnectionService */
#define NS_IMOBILECONNECTIONSERVICE_IID_STR "eaba3c4a-0dd5-4919-b1a2-7812e49dbbcb"

#define NS_IMOBILECONNECTIONSERVICE_IID \
  {0xeaba3c4a, 0x0dd5, 0x4919, \
    { 0xb1, 0xa2, 0x78, 0x12, 0xe4, 0x9d, 0xbb, 0xcb }}

class NS_NO_VTABLE nsIMobileConnectionService : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMOBILECONNECTIONSERVICE_IID)

  /* readonly attribute unsigned long numItems; */
  NS_IMETHOD GetNumItems(uint32_t *aNumItems) = 0;

  /* nsIMobileConnection getItemByServiceId (in unsigned long serviceId); */
  NS_IMETHOD GetItemByServiceId(uint32_t serviceId, nsIMobileConnection * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMobileConnectionService, NS_IMOBILECONNECTIONSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMOBILECONNECTIONSERVICE \
  NS_IMETHOD GetNumItems(uint32_t *aNumItems) MOZ_OVERRIDE; \
  NS_IMETHOD GetItemByServiceId(uint32_t serviceId, nsIMobileConnection * *_retval) MOZ_OVERRIDE; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMOBILECONNECTIONSERVICE(_to) \
  NS_IMETHOD GetNumItems(uint32_t *aNumItems) MOZ_OVERRIDE { return _to GetNumItems(aNumItems); } \
  NS_IMETHOD GetItemByServiceId(uint32_t serviceId, nsIMobileConnection * *_retval) MOZ_OVERRIDE { return _to GetItemByServiceId(serviceId, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMOBILECONNECTIONSERVICE(_to) \
  NS_IMETHOD GetNumItems(uint32_t *aNumItems) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumItems(aNumItems); } \
  NS_IMETHOD GetItemByServiceId(uint32_t serviceId, nsIMobileConnection * *_retval) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemByServiceId(serviceId, _retval); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMobileConnectionService : public nsIMobileConnectionService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMOBILECONNECTIONSERVICE

  nsMobileConnectionService();

private:
  ~nsMobileConnectionService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMobileConnectionService, nsIMobileConnectionService)

nsMobileConnectionService::nsMobileConnectionService()
{
  /* member initializers and constructor code */
}

nsMobileConnectionService::~nsMobileConnectionService()
{
  /* destructor code */
}

/* readonly attribute unsigned long numItems; */
NS_IMETHODIMP nsMobileConnectionService::GetNumItems(uint32_t *aNumItems)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMobileConnection getItemByServiceId (in unsigned long serviceId); */
NS_IMETHODIMP nsMobileConnectionService::GetItemByServiceId(uint32_t serviceId, nsIMobileConnection * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

template<typename T> struct already_AddRefed;
already_AddRefed<nsIMobileConnectionService>
NS_CreateMobileConnectionService();

/* starting interface:    nsIMobileConnection */
#define NS_IMOBILECONNECTION_IID_STR "04db7331-54fe-4cf7-9347-b9481350f4c2"

#define NS_IMOBILECONNECTION_IID \
  {0x04db7331, 0x54fe, 0x4cf7, \
    { 0x93, 0x47, 0xb9, 0x48, 0x13, 0x50, 0xf4, 0xc2 }}

class NS_NO_VTABLE nsIMobileConnection : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMOBILECONNECTION_IID)

  enum {
    ICC_SERVICE_CLASS_VOICE = 1,
    ICC_SERVICE_CLASS_DATA = 2,
    ICC_SERVICE_CLASS_FAX = 4,
    ICC_SERVICE_CLASS_SMS = 8,
    ICC_SERVICE_CLASS_DATA_SYNC = 16,
    ICC_SERVICE_CLASS_DATA_ASYNC = 32,
    ICC_SERVICE_CLASS_PACKET = 64,
    ICC_SERVICE_CLASS_PAD = 128,
    ICC_SERVICE_CLASS_MAX = 128,
    CALL_FORWARD_ACTION_DISABLE = 0,
    CALL_FORWARD_ACTION_ENABLE = 1,
    CALL_FORWARD_ACTION_QUERY_STATUS = 2,
    CALL_FORWARD_ACTION_REGISTRATION = 3,
    CALL_FORWARD_ACTION_ERASURE = 4,
    CALL_FORWARD_REASON_UNCONDITIONAL = 0,
    CALL_FORWARD_REASON_MOBILE_BUSY = 1,
    CALL_FORWARD_REASON_NO_REPLY = 2,
    CALL_FORWARD_REASON_NOT_REACHABLE = 3,
    CALL_FORWARD_REASON_ALL_CALL_FORWARDING = 4,
    CALL_FORWARD_REASON_ALL_CONDITIONAL_CALL_FORWARDING = 5,
    CALL_BARRING_PROGRAM_ALL_OUTGOING = 0,
    CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL = 1,
    CALL_BARRING_PROGRAM_OUTGOING_INTERNATIONAL_EXCEPT_HOME = 2,
    CALL_BARRING_PROGRAM_ALL_INCOMING = 3,
    CALL_BARRING_PROGRAM_INCOMING_ROAMING = 4,
    CLIR_DEFAULT = 0,
    CLIR_INVOCATION = 1,
    CLIR_SUPPRESSION = 2
  };

  /* readonly attribute unsigned long serviceId; */
  NS_IMETHOD GetServiceId(uint32_t *aServiceId) = 0;

  /* void registerListener (in nsIMobileConnectionListener listener); */
  NS_IMETHOD RegisterListener(nsIMobileConnectionListener *listener) = 0;

  /* void unregisterListener (in nsIMobileConnectionListener listener); */
  NS_IMETHOD UnregisterListener(nsIMobileConnectionListener *listener) = 0;

  /* readonly attribute DOMString lastKnownNetwork; */
  NS_IMETHOD GetLastKnownNetwork(nsAString & aLastKnownNetwork) = 0;

  /* readonly attribute DOMString lastKnownHomeNetwork; */
  NS_IMETHOD GetLastKnownHomeNetwork(nsAString & aLastKnownHomeNetwork) = 0;

  /* readonly attribute nsIMobileConnectionInfo voice; */
  NS_IMETHOD GetVoice(nsIMobileConnectionInfo * *aVoice) = 0;

  /* readonly attribute nsIMobileConnectionInfo data; */
  NS_IMETHOD GetData(nsIMobileConnectionInfo * *aData) = 0;

  /* readonly attribute DOMString iccId; */
  NS_IMETHOD GetIccId(nsAString & aIccId) = 0;

  /* readonly attribute DOMString networkSelectionMode; */
  NS_IMETHOD GetNetworkSelectionMode(nsAString & aNetworkSelectionMode) = 0;

  /* readonly attribute DOMString radioState; */
  NS_IMETHOD GetRadioState(nsAString & aRadioState) = 0;

  /* void getSupportedNetworkTypes ([array, size_is (length)] out wstring types, [retval] out unsigned long length); */
  NS_IMETHOD GetSupportedNetworkTypes(char16_t * **types, uint32_t *length) = 0;

  /* void getNetworks (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetNetworks(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void selectNetwork (in nsIMobileNetworkInfo network, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SelectNetwork(nsIMobileNetworkInfo *network, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void selectNetworkAutomatically (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SelectNetworkAutomatically(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setPreferredNetworkType (in DOMString type, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetPreferredNetworkType(const nsAString & type, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getPreferredNetworkType (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetPreferredNetworkType(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setRoamingPreference (in DOMString mode, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetRoamingPreference(const nsAString & mode, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getRoamingPreference (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetRoamingPreference(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setVoicePrivacyMode (in bool enabled, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetVoicePrivacyMode(bool enabled, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getVoicePrivacyMode (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetVoicePrivacyMode(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void sendMMI (in DOMString mmi, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SendMMI(const nsAString & mmi, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void cancelMMI (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD CancelMMI(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getCallForwarding (in unsigned short reason, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetCallForwarding(uint16_t reason, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setCallForwarding (in jsval options, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetCallForwarding(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getCallBarring (in jsval options, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setCallBarring (in jsval options, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void changeCallBarringPassword (in jsval options, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD ChangeCallBarringPassword(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setCallWaiting (in bool enabled, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetCallWaiting(bool enabled, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getCallWaiting (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetCallWaiting(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setCallingLineIdRestriction (in unsigned short clirMode, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetCallingLineIdRestriction(uint16_t clirMode, nsIMobileConnectionCallback *requestCallback) = 0;

  /* void getCallingLineIdRestriction (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD GetCallingLineIdRestriction(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void exitEmergencyCbMode (in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD ExitEmergencyCbMode(nsIMobileConnectionCallback *requestCallback) = 0;

  /* void setRadioEnabled (in bool enabled, in nsIMobileConnectionCallback requestCallback); */
  NS_IMETHOD SetRadioEnabled(bool enabled, nsIMobileConnectionCallback *requestCallback) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMobileConnection, NS_IMOBILECONNECTION_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMOBILECONNECTION \
  NS_IMETHOD GetServiceId(uint32_t *aServiceId) MOZ_OVERRIDE; \
  NS_IMETHOD RegisterListener(nsIMobileConnectionListener *listener) MOZ_OVERRIDE; \
  NS_IMETHOD UnregisterListener(nsIMobileConnectionListener *listener) MOZ_OVERRIDE; \
  NS_IMETHOD GetLastKnownNetwork(nsAString & aLastKnownNetwork) MOZ_OVERRIDE; \
  NS_IMETHOD GetLastKnownHomeNetwork(nsAString & aLastKnownHomeNetwork) MOZ_OVERRIDE; \
  NS_IMETHOD GetVoice(nsIMobileConnectionInfo * *aVoice) MOZ_OVERRIDE; \
  NS_IMETHOD GetData(nsIMobileConnectionInfo * *aData) MOZ_OVERRIDE; \
  NS_IMETHOD GetIccId(nsAString & aIccId) MOZ_OVERRIDE; \
  NS_IMETHOD GetNetworkSelectionMode(nsAString & aNetworkSelectionMode) MOZ_OVERRIDE; \
  NS_IMETHOD GetRadioState(nsAString & aRadioState) MOZ_OVERRIDE; \
  NS_IMETHOD GetSupportedNetworkTypes(char16_t * **types, uint32_t *length) MOZ_OVERRIDE; \
  NS_IMETHOD GetNetworks(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SelectNetwork(nsIMobileNetworkInfo *network, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SelectNetworkAutomatically(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetPreferredNetworkType(const nsAString & type, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetPreferredNetworkType(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetRoamingPreference(const nsAString & mode, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetRoamingPreference(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetVoicePrivacyMode(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetVoicePrivacyMode(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SendMMI(const nsAString & mmi, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD CancelMMI(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetCallForwarding(uint16_t reason, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetCallForwarding(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD ChangeCallBarringPassword(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetCallWaiting(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetCallWaiting(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetCallingLineIdRestriction(uint16_t clirMode, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD GetCallingLineIdRestriction(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD ExitEmergencyCbMode(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; \
  NS_IMETHOD SetRadioEnabled(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMOBILECONNECTION(_to) \
  NS_IMETHOD GetServiceId(uint32_t *aServiceId) MOZ_OVERRIDE { return _to GetServiceId(aServiceId); } \
  NS_IMETHOD RegisterListener(nsIMobileConnectionListener *listener) MOZ_OVERRIDE { return _to RegisterListener(listener); } \
  NS_IMETHOD UnregisterListener(nsIMobileConnectionListener *listener) MOZ_OVERRIDE { return _to UnregisterListener(listener); } \
  NS_IMETHOD GetLastKnownNetwork(nsAString & aLastKnownNetwork) MOZ_OVERRIDE { return _to GetLastKnownNetwork(aLastKnownNetwork); } \
  NS_IMETHOD GetLastKnownHomeNetwork(nsAString & aLastKnownHomeNetwork) MOZ_OVERRIDE { return _to GetLastKnownHomeNetwork(aLastKnownHomeNetwork); } \
  NS_IMETHOD GetVoice(nsIMobileConnectionInfo * *aVoice) MOZ_OVERRIDE { return _to GetVoice(aVoice); } \
  NS_IMETHOD GetData(nsIMobileConnectionInfo * *aData) MOZ_OVERRIDE { return _to GetData(aData); } \
  NS_IMETHOD GetIccId(nsAString & aIccId) MOZ_OVERRIDE { return _to GetIccId(aIccId); } \
  NS_IMETHOD GetNetworkSelectionMode(nsAString & aNetworkSelectionMode) MOZ_OVERRIDE { return _to GetNetworkSelectionMode(aNetworkSelectionMode); } \
  NS_IMETHOD GetRadioState(nsAString & aRadioState) MOZ_OVERRIDE { return _to GetRadioState(aRadioState); } \
  NS_IMETHOD GetSupportedNetworkTypes(char16_t * **types, uint32_t *length) MOZ_OVERRIDE { return _to GetSupportedNetworkTypes(types, length); } \
  NS_IMETHOD GetNetworks(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetNetworks(requestCallback); } \
  NS_IMETHOD SelectNetwork(nsIMobileNetworkInfo *network, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SelectNetwork(network, requestCallback); } \
  NS_IMETHOD SelectNetworkAutomatically(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SelectNetworkAutomatically(requestCallback); } \
  NS_IMETHOD SetPreferredNetworkType(const nsAString & type, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetPreferredNetworkType(type, requestCallback); } \
  NS_IMETHOD GetPreferredNetworkType(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetPreferredNetworkType(requestCallback); } \
  NS_IMETHOD SetRoamingPreference(const nsAString & mode, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetRoamingPreference(mode, requestCallback); } \
  NS_IMETHOD GetRoamingPreference(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetRoamingPreference(requestCallback); } \
  NS_IMETHOD SetVoicePrivacyMode(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetVoicePrivacyMode(enabled, requestCallback); } \
  NS_IMETHOD GetVoicePrivacyMode(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetVoicePrivacyMode(requestCallback); } \
  NS_IMETHOD SendMMI(const nsAString & mmi, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SendMMI(mmi, requestCallback); } \
  NS_IMETHOD CancelMMI(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to CancelMMI(requestCallback); } \
  NS_IMETHOD GetCallForwarding(uint16_t reason, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetCallForwarding(reason, requestCallback); } \
  NS_IMETHOD SetCallForwarding(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetCallForwarding(options, requestCallback); } \
  NS_IMETHOD GetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetCallBarring(options, requestCallback); } \
  NS_IMETHOD SetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetCallBarring(options, requestCallback); } \
  NS_IMETHOD ChangeCallBarringPassword(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to ChangeCallBarringPassword(options, requestCallback); } \
  NS_IMETHOD SetCallWaiting(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetCallWaiting(enabled, requestCallback); } \
  NS_IMETHOD GetCallWaiting(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetCallWaiting(requestCallback); } \
  NS_IMETHOD SetCallingLineIdRestriction(uint16_t clirMode, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetCallingLineIdRestriction(clirMode, requestCallback); } \
  NS_IMETHOD GetCallingLineIdRestriction(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to GetCallingLineIdRestriction(requestCallback); } \
  NS_IMETHOD ExitEmergencyCbMode(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to ExitEmergencyCbMode(requestCallback); } \
  NS_IMETHOD SetRadioEnabled(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return _to SetRadioEnabled(enabled, requestCallback); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMOBILECONNECTION(_to) \
  NS_IMETHOD GetServiceId(uint32_t *aServiceId) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServiceId(aServiceId); } \
  NS_IMETHOD RegisterListener(nsIMobileConnectionListener *listener) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterListener(listener); } \
  NS_IMETHOD UnregisterListener(nsIMobileConnectionListener *listener) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterListener(listener); } \
  NS_IMETHOD GetLastKnownNetwork(nsAString & aLastKnownNetwork) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastKnownNetwork(aLastKnownNetwork); } \
  NS_IMETHOD GetLastKnownHomeNetwork(nsAString & aLastKnownHomeNetwork) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastKnownHomeNetwork(aLastKnownHomeNetwork); } \
  NS_IMETHOD GetVoice(nsIMobileConnectionInfo * *aVoice) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVoice(aVoice); } \
  NS_IMETHOD GetData(nsIMobileConnectionInfo * *aData) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetData(aData); } \
  NS_IMETHOD GetIccId(nsAString & aIccId) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIccId(aIccId); } \
  NS_IMETHOD GetNetworkSelectionMode(nsAString & aNetworkSelectionMode) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkSelectionMode(aNetworkSelectionMode); } \
  NS_IMETHOD GetRadioState(nsAString & aRadioState) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRadioState(aRadioState); } \
  NS_IMETHOD GetSupportedNetworkTypes(char16_t * **types, uint32_t *length) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportedNetworkTypes(types, length); } \
  NS_IMETHOD GetNetworks(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworks(requestCallback); } \
  NS_IMETHOD SelectNetwork(nsIMobileNetworkInfo *network, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectNetwork(network, requestCallback); } \
  NS_IMETHOD SelectNetworkAutomatically(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectNetworkAutomatically(requestCallback); } \
  NS_IMETHOD SetPreferredNetworkType(const nsAString & type, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPreferredNetworkType(type, requestCallback); } \
  NS_IMETHOD GetPreferredNetworkType(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPreferredNetworkType(requestCallback); } \
  NS_IMETHOD SetRoamingPreference(const nsAString & mode, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRoamingPreference(mode, requestCallback); } \
  NS_IMETHOD GetRoamingPreference(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRoamingPreference(requestCallback); } \
  NS_IMETHOD SetVoicePrivacyMode(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVoicePrivacyMode(enabled, requestCallback); } \
  NS_IMETHOD GetVoicePrivacyMode(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVoicePrivacyMode(requestCallback); } \
  NS_IMETHOD SendMMI(const nsAString & mmi, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SendMMI(mmi, requestCallback); } \
  NS_IMETHOD CancelMMI(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->CancelMMI(requestCallback); } \
  NS_IMETHOD GetCallForwarding(uint16_t reason, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallForwarding(reason, requestCallback); } \
  NS_IMETHOD SetCallForwarding(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCallForwarding(options, requestCallback); } \
  NS_IMETHOD GetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallBarring(options, requestCallback); } \
  NS_IMETHOD SetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCallBarring(options, requestCallback); } \
  NS_IMETHOD ChangeCallBarringPassword(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeCallBarringPassword(options, requestCallback); } \
  NS_IMETHOD SetCallWaiting(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCallWaiting(enabled, requestCallback); } \
  NS_IMETHOD GetCallWaiting(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallWaiting(requestCallback); } \
  NS_IMETHOD SetCallingLineIdRestriction(uint16_t clirMode, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCallingLineIdRestriction(clirMode, requestCallback); } \
  NS_IMETHOD GetCallingLineIdRestriction(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallingLineIdRestriction(requestCallback); } \
  NS_IMETHOD ExitEmergencyCbMode(nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->ExitEmergencyCbMode(requestCallback); } \
  NS_IMETHOD SetRadioEnabled(bool enabled, nsIMobileConnectionCallback *requestCallback) MOZ_OVERRIDE { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRadioEnabled(enabled, requestCallback); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMobileConnection : public nsIMobileConnection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMOBILECONNECTION

  nsMobileConnection();

private:
  ~nsMobileConnection();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMobileConnection, nsIMobileConnection)

nsMobileConnection::nsMobileConnection()
{
  /* member initializers and constructor code */
}

nsMobileConnection::~nsMobileConnection()
{
  /* destructor code */
}

/* readonly attribute unsigned long serviceId; */
NS_IMETHODIMP nsMobileConnection::GetServiceId(uint32_t *aServiceId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerListener (in nsIMobileConnectionListener listener); */
NS_IMETHODIMP nsMobileConnection::RegisterListener(nsIMobileConnectionListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterListener (in nsIMobileConnectionListener listener); */
NS_IMETHODIMP nsMobileConnection::UnregisterListener(nsIMobileConnectionListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute DOMString lastKnownNetwork; */
NS_IMETHODIMP nsMobileConnection::GetLastKnownNetwork(nsAString & aLastKnownNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute DOMString lastKnownHomeNetwork; */
NS_IMETHODIMP nsMobileConnection::GetLastKnownHomeNetwork(nsAString & aLastKnownHomeNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMobileConnectionInfo voice; */
NS_IMETHODIMP nsMobileConnection::GetVoice(nsIMobileConnectionInfo * *aVoice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMobileConnectionInfo data; */
NS_IMETHODIMP nsMobileConnection::GetData(nsIMobileConnectionInfo * *aData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute DOMString iccId; */
NS_IMETHODIMP nsMobileConnection::GetIccId(nsAString & aIccId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute DOMString networkSelectionMode; */
NS_IMETHODIMP nsMobileConnection::GetNetworkSelectionMode(nsAString & aNetworkSelectionMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute DOMString radioState; */
NS_IMETHODIMP nsMobileConnection::GetRadioState(nsAString & aRadioState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSupportedNetworkTypes ([array, size_is (length)] out wstring types, [retval] out unsigned long length); */
NS_IMETHODIMP nsMobileConnection::GetSupportedNetworkTypes(char16_t * **types, uint32_t *length)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworks (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetNetworks(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectNetwork (in nsIMobileNetworkInfo network, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SelectNetwork(nsIMobileNetworkInfo *network, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectNetworkAutomatically (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SelectNetworkAutomatically(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPreferredNetworkType (in DOMString type, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetPreferredNetworkType(const nsAString & type, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPreferredNetworkType (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetPreferredNetworkType(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setRoamingPreference (in DOMString mode, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetRoamingPreference(const nsAString & mode, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRoamingPreference (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetRoamingPreference(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setVoicePrivacyMode (in bool enabled, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetVoicePrivacyMode(bool enabled, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVoicePrivacyMode (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetVoicePrivacyMode(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sendMMI (in DOMString mmi, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SendMMI(const nsAString & mmi, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cancelMMI (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::CancelMMI(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCallForwarding (in unsigned short reason, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetCallForwarding(uint16_t reason, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCallForwarding (in jsval options, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetCallForwarding(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCallBarring (in jsval options, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCallBarring (in jsval options, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetCallBarring(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changeCallBarringPassword (in jsval options, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::ChangeCallBarringPassword(JS::HandleValue options, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCallWaiting (in bool enabled, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetCallWaiting(bool enabled, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCallWaiting (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetCallWaiting(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCallingLineIdRestriction (in unsigned short clirMode, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetCallingLineIdRestriction(uint16_t clirMode, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCallingLineIdRestriction (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::GetCallingLineIdRestriction(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void exitEmergencyCbMode (in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::ExitEmergencyCbMode(nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setRadioEnabled (in bool enabled, in nsIMobileConnectionCallback requestCallback); */
NS_IMETHODIMP nsMobileConnection::SetRadioEnabled(bool enabled, nsIMobileConnectionCallback *requestCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIMobileConnectionService_h__ */
