mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-02 20:20:00 +00:00
Bug 452834 - Add geolocation to the cycle collector. r/sr=dbaron
This commit is contained in:
parent
6cc200565f
commit
a02192e467
@ -166,15 +166,16 @@ nsGeolocationRequest::Init()
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsGeolocationRequest)
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGeolocationRequest)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIGeolocationRequest)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIGeolocationRequest)
|
||||
NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_ADDREF(nsGeolocationRequest)
|
||||
NS_IMPL_RELEASE(nsGeolocationRequest)
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsGeolocationRequest)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsGeolocationRequest)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_3(nsGeolocationRequest, mCallback, mErrorCallback, mOptions)
|
||||
|
||||
|
||||
void
|
||||
@ -528,14 +529,29 @@ nsGeolocationService::RemoveLocator(nsGeolocation* aLocator)
|
||||
// nsGeolocation
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsGeolocation)
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGeolocation)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMGeoGeolocation)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMGeoGeolocation)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(GeoGeolocation)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_ADDREF(nsGeolocation)
|
||||
NS_IMPL_RELEASE(nsGeolocation)
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsGeolocation)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsGeolocation)
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(nsGeolocation)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsGeolocation)
|
||||
tmp->mPendingCallbacks.Clear();
|
||||
tmp->mWatchingCallbacks.Clear();
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsGeolocation)
|
||||
PRUint32 i;
|
||||
for (i = 0; i < tmp->mPendingCallbacks.Length(); ++i)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR_AMBIGUOUS(mPendingCallbacks[i], nsIGeolocationRequest)
|
||||
|
||||
for (i = 0; i < tmp->mWatchingCallbacks.Length(); ++i)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR_AMBIGUOUS(mWatchingCallbacks[i], nsIGeolocationRequest)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
nsGeolocation::nsGeolocation(nsIDOMWindow* aContentDom)
|
||||
: mUpdateInProgress(PR_FALSE)
|
||||
|
@ -43,6 +43,8 @@
|
||||
#include "nsIObserver.h"
|
||||
#include "nsIURI.h"
|
||||
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
|
||||
#include "nsIDOMGeoGeolocation.h"
|
||||
#include "nsIDOMGeoPosition.h"
|
||||
#include "nsIDOMGeoPositionError.h"
|
||||
@ -61,10 +63,12 @@ class nsGeolocation;
|
||||
class nsGeolocationRequest : public nsIGeolocationRequest, public nsITimerCallback
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_NSIGEOLOCATIONREQUEST
|
||||
NS_DECL_NSITIMERCALLBACK
|
||||
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsGeolocationRequest, nsIGeolocationRequest)
|
||||
|
||||
nsGeolocationRequest(nsGeolocation* locator,
|
||||
nsIDOMGeoPositionCallback* callback,
|
||||
nsIDOMGeoPositionErrorCallback* errorCallback,
|
||||
@ -164,9 +168,11 @@ class nsGeolocation : public nsIDOMGeoGeolocation
|
||||
{
|
||||
public:
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_NSIDOMGEOGEOLOCATION
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(nsGeolocation)
|
||||
|
||||
nsGeolocation(nsIDOMWindow* contentDom);
|
||||
|
||||
// Called by the geolocation device to notify that a location has changed.
|
||||
|
Loading…
x
Reference in New Issue
Block a user