/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_MobileConnection_h #define mozilla_dom_MobileConnection_h #include "MobileConnectionInfo.h" #include "MobileNetworkInfo.h" #include "mozilla/DOMEventTargetHelper.h" #include "mozilla/dom/DOMRequest.h" #include "mozilla/dom/MozMobileConnectionBinding.h" #include "nsCycleCollectionParticipant.h" #include "nsIMobileConnectionProvider.h" #include "nsWeakPtr.h" namespace mozilla { namespace dom { class MobileConnection MOZ_FINAL : public DOMEventTargetHelper { /** * Class MobileConnection doesn't actually inherit * nsIMobileConnectionListener. Instead, it owns an * nsIMobileConnectionListener derived instance mListener and passes it to * nsIMobileConnectionProvider. The onreceived events are first delivered to * mListener and then forwarded to its owner, MobileConnection. See also bug * 775997 comment #51. */ class Listener; public: NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSIMOBILECONNECTIONLISTENER NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper) NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MobileConnection, DOMEventTargetHelper) MobileConnection(nsPIDOMWindow *aWindow, uint32_t aClientId); void Shutdown(); nsPIDOMWindow* GetParentObject() const { return GetOwner(); } // WrapperCache virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; // WebIDL interface void GetLastKnownNetwork(nsString& aRetVal) const; void GetLastKnownHomeNetwork(nsString& aRetVal) const; MobileConnectionInfo* Voice() const; MobileConnectionInfo* Data() const; void GetIccId(nsString& aRetVal) const; Nullable GetNetworkSelectionMode() const; Nullable GetRadioState() const; void GetSupportedNetworkTypes(nsTArray& aTypes) const; already_AddRefed GetNetworks(ErrorResult& aRv); already_AddRefed SelectNetwork(MobileNetworkInfo& aNetwork, ErrorResult& aRv); already_AddRefed SelectNetworkAutomatically(ErrorResult& aRv); already_AddRefed SetPreferredNetworkType(MobilePreferredNetworkType& aType, ErrorResult& aRv); already_AddRefed GetPreferredNetworkType(ErrorResult& aRv); already_AddRefed SetRoamingPreference(MobileRoamingMode& aMode, ErrorResult& aRv); already_AddRefed GetRoamingPreference(ErrorResult& aRv); already_AddRefed SetVoicePrivacyMode(bool aEnabled, ErrorResult& aRv); already_AddRefed GetVoicePrivacyMode(ErrorResult& aRv); already_AddRefed SendMMI(const nsAString& aMmi, ErrorResult& aRv); already_AddRefed CancelMMI(ErrorResult& aRv); already_AddRefed SetCallForwardingOption(const MozCallForwardingOptions& aOptions, ErrorResult& aRv); already_AddRefed GetCallForwardingOption(uint16_t aReason, ErrorResult& aRv); already_AddRefed SetCallBarringOption(const MozCallBarringOptions& aOptions, ErrorResult& aRv); already_AddRefed GetCallBarringOption(const MozCallBarringOptions& aOptions, ErrorResult& aRv); already_AddRefed ChangeCallBarringPassword(const MozCallBarringOptions& aOptions, ErrorResult& aRv); already_AddRefed SetCallWaitingOption(bool aEnabled, ErrorResult& aRv); already_AddRefed GetCallWaitingOption(ErrorResult& aRv); already_AddRefed SetCallingLineIdRestriction(uint16_t aMode, ErrorResult& aRv); already_AddRefed GetCallingLineIdRestriction(ErrorResult& aRv); already_AddRefed ExitEmergencyCbMode(ErrorResult& aRv); already_AddRefed SetRadioEnabled(bool aEnabled, ErrorResult& aRv); IMPL_EVENT_HANDLER(voicechange) IMPL_EVENT_HANDLER(datachange) IMPL_EVENT_HANDLER(ussdreceived) IMPL_EVENT_HANDLER(dataerror) IMPL_EVENT_HANDLER(cfstatechange) IMPL_EVENT_HANDLER(emergencycbmodechange) IMPL_EVENT_HANDLER(otastatuschange) IMPL_EVENT_HANDLER(iccchange) IMPL_EVENT_HANDLER(radiostatechange) IMPL_EVENT_HANDLER(clirmodechange) private: uint32_t mClientId; nsCOMPtr mProvider; nsRefPtr mListener; nsRefPtr mVoice; nsRefPtr mData; bool CheckPermission(const char* aType) const; void UpdateVoice(); void UpdateData(); }; } // namespace dom } // namespace mozilla #endif // mozilla_dom_MobileConnection_h