Bug 1114935 - Part 6.2: Migration in MobileConnection. r=echen

This commit is contained in:
Bevis Tseng 2015-01-15 18:19:01 +08:00
parent e936267e0e
commit 1f3b6c7b8b
2 changed files with 18 additions and 44 deletions

View File

@ -15,6 +15,7 @@
#include "mozilla/Preferences.h"
#include "mozilla/Services.h"
#include "nsIDOMDOMRequest.h"
#include "nsIIccInfo.h"
#include "nsIPermissionManager.h"
#include "nsIVariant.h"
#include "nsJSON.h"
@ -22,10 +23,6 @@
#include "nsRadioInterfaceLayer.h"
#include "nsServiceManagerUtils.h"
#ifdef MOZ_B2G_RIL
#include "nsIIccInfo.h"
#endif // MOZ_B2G_RIL
#define MOBILECONN_ERROR_INVALID_PARAMETER NS_LITERAL_STRING("InvalidParameter")
#define MOBILECONN_ERROR_INVALID_PASSWORD NS_LITERAL_STRING("InvalidPassword")
@ -49,18 +46,14 @@ using namespace mozilla::dom;
using namespace mozilla::dom::mobileconnection;
class MobileConnection::Listener MOZ_FINAL : public nsIMobileConnectionListener
#ifdef MOZ_B2G_RIL
, public nsIIccListener
#endif // MOZ_B2G_RIL
{
MobileConnection* mMobileConnection;
public:
NS_DECL_ISUPPORTS
NS_FORWARD_SAFE_NSIMOBILECONNECTIONLISTENER(mMobileConnection)
#ifdef MOZ_B2G_RIL
NS_FORWARD_SAFE_NSIICCLISTENER(mMobileConnection)
#endif // MOZ_B2G_RIL
explicit Listener(MobileConnection* aMobileConnection)
: mMobileConnection(aMobileConnection)
@ -81,12 +74,8 @@ private:
}
};
#ifdef MOZ_B2G_RIL
NS_IMPL_ISUPPORTS(MobileConnection::Listener, nsIMobileConnectionListener,
nsIIccListener)
#else
NS_IMPL_ISUPPORTS(MobileConnection::Listener, nsIMobileConnectionListener)
#endif // MOZ_B2G_RIL
NS_IMPL_CYCLE_COLLECTION_CLASS(MobileConnection)
@ -98,6 +87,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(MobileConnection,
// down.
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mVoice)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mData)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIccHandler)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MobileConnection,
@ -105,6 +95,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MobileConnection,
tmp->Shutdown();
NS_IMPL_CYCLE_COLLECTION_UNLINK(mVoice)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mData)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mIccHandler)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(MobileConnection)
@ -136,15 +127,15 @@ MobileConnection::MobileConnection(nsPIDOMWindow* aWindow, uint32_t aClientId)
nsresult rv = service->GetItemByServiceId(mClientId,
getter_AddRefs(mMobileConnection));
#ifdef MOZ_B2G_RIL
mIcc = do_GetService(NS_RILCONTENTHELPER_CONTRACTID);
if (NS_FAILED(rv) || !mMobileConnection || !mIcc) {
NS_WARNING("Could not acquire nsIMobileConnection or nsIIccProvider!");
#else
if (NS_FAILED(rv) || !mMobileConnection) {
NS_WARNING("Could not acquire nsIMobileConnection!");
#endif // MOZ_B2G_RIL
nsCOMPtr<nsIIccService> iccService = do_GetService(ICC_SERVICE_CONTRACTID);
if (iccService) {
iccService->GetIccByServiceId(mClientId, getter_AddRefs(mIccHandler));
}
if (NS_FAILED(rv) || !mMobileConnection || !mIccHandler) {
NS_WARNING("Could not acquire nsIMobileConnection or nsIIcc!");
return;
}
@ -159,12 +150,10 @@ MobileConnection::MobileConnection(nsPIDOMWindow* aWindow, uint32_t aClientId)
UpdateVoice();
UpdateData();
#ifdef MOZ_B2G_RIL
rv = mIcc->RegisterIccMsg(mClientId, mListener);
rv = mIccHandler->RegisterListener(mListener);
NS_WARN_IF_FALSE(NS_SUCCEEDED(rv),
"Failed registering icc messages with service");
UpdateIccId();
#endif // MOZ_B2G_RIL
}
}
@ -176,11 +165,9 @@ MobileConnection::Shutdown()
mMobileConnection->UnregisterListener(mListener);
}
#ifdef MOZ_B2G_RIL
if (mIcc) {
mIcc->UnregisterIccMsg(mClientId, mListener);
if (mIccHandler) {
mIccHandler->UnregisterListener(mListener);
}
#endif // MOZ_B2G_RIL
mListener->Disconnect();
mListener = nullptr;
@ -246,11 +233,10 @@ MobileConnection::UpdateData()
bool
MobileConnection::UpdateIccId()
{
#ifdef MOZ_B2G_RIL
nsAutoString iccId;
nsCOMPtr<nsIIccInfo> iccInfo;
if (mIcc &&
NS_SUCCEEDED(mIcc->GetIccInfo(mClientId, getter_AddRefs(iccInfo))) &&
if (mIccHandler &&
NS_SUCCEEDED(mIccHandler->GetIccInfo(getter_AddRefs(iccInfo))) &&
iccInfo) {
iccInfo->GetIccid(iccId);
} else {
@ -261,7 +247,6 @@ MobileConnection::UpdateIccId()
mIccId = iccId;
return true;
}
#endif // MOZ_B2G_RIL
return false;
}
@ -1134,7 +1119,6 @@ MobileConnection::NotifyNetworkSelectionModeChanged()
return NS_OK;
}
#ifdef MOZ_B2G_RIL
// nsIIccListener
NS_IMETHODIMP
@ -1171,4 +1155,3 @@ MobileConnection::NotifyIccInfoChanged()
return asyncDispatcher->PostDOMEvent();
}
#endif // MOZ_B2G_RIL

View File

@ -11,21 +11,16 @@
#include "mozilla/dom/MobileNetworkInfo.h"
#include "mozilla/dom/MozMobileConnectionBinding.h"
#include "nsCycleCollectionParticipant.h"
#include "nsIIccService.h"
#include "nsIMobileConnectionService.h"
#include "nsWeakPtr.h"
#ifdef MOZ_B2G_RIL
#include "nsIIccProvider.h"
#endif // MOZ_B2G_RIL
namespace mozilla {
namespace dom {
class MobileConnection MOZ_FINAL : public DOMEventTargetHelper
, private nsIMobileConnectionListener
#ifdef MOZ_B2G_RIL
, private nsIIccListener
#endif // MOZ_B2G_RIL
{
/**
* Class MobileConnection doesn't actually expose
@ -40,9 +35,7 @@ class MobileConnection MOZ_FINAL : public DOMEventTargetHelper
public:
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIMOBILECONNECTIONLISTENER
#ifdef MOZ_B2G_RIL
NS_DECL_NSIICCLISTENER
#endif // MOZ_B2G_RIL
NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper)
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MobileConnection,
DOMEventTargetHelper)
@ -169,9 +162,7 @@ private:
uint32_t mClientId;
nsString mIccId;
nsCOMPtr<nsIMobileConnection> mMobileConnection;
#ifdef MOZ_B2G_RIL
nsCOMPtr<nsIIccProvider> mIcc;
#endif // MOZ_B2G_RIL
nsCOMPtr<nsIIcc> mIccHandler;
nsRefPtr<Listener> mListener;
nsRefPtr<MobileConnectionInfo> mVoice;
nsRefPtr<MobileConnectionInfo> mData;