Bug 909768 - Replace idl::GeoPositionOptions with dom::PositionOptions. r=jdm

This commit is contained in:
Michael Harrison 2013-09-06 16:44:26 -04:00
parent fdd9e3f2a6
commit 107bcf1f66
5 changed files with 36 additions and 43 deletions

View File

@ -8,26 +8,23 @@ interface nsIDOMGeoPositionCallback;
interface nsIDOMGeoPositionErrorCallback; interface nsIDOMGeoPositionErrorCallback;
%{C++ %{C++
#include "DictionaryHelpers.h" namespace mozilla {
namespace dom {
class PositionOptions;
}
}
%} %}
dictionary GeoPositionOptions [ptr] native NamespacedPositionOptions(mozilla::dom::PositionOptions);
{
boolean enableHighAccuracy;
long timeout;
long maximumAge;
};
[ptr] native NamespacedGeoPositionOptions(mozilla::idl::GeoPositionOptions);
[builtinclass, uuid(1bc7d103-c7ae-4467-881c-21a8dfa17938)] [builtinclass, uuid(1bc7d103-c7ae-4467-881c-21a8dfa17938)]
interface nsIDOMGeoGeolocation : nsISupports interface nsIDOMGeoGeolocation : nsISupports
{ {
int32_t watchPosition(in nsIDOMGeoPositionCallback callback, int32_t watchPosition(in nsIDOMGeoPositionCallback callback,
in nsIDOMGeoPositionErrorCallback errorCallback, in nsIDOMGeoPositionErrorCallback errorCallback,
in NamespacedGeoPositionOptions options); in NamespacedPositionOptions options);
void getCurrentPosition(in nsIDOMGeoPositionCallback callback, void getCurrentPosition(in nsIDOMGeoPositionCallback callback,
in nsIDOMGeoPositionErrorCallback errorCallback, in nsIDOMGeoPositionErrorCallback errorCallback,
in NamespacedGeoPositionOptions options); in NamespacedPositionOptions options);
void clearWatch(in long watchId); void clearWatch(in long watchId);
}; };

View File

@ -34,6 +34,7 @@
#include "mozilla/dom/bluetooth/PBluetoothParent.h" #include "mozilla/dom/bluetooth/PBluetoothParent.h"
#include "mozilla/dom/PFMRadioParent.h" #include "mozilla/dom/PFMRadioParent.h"
#include "mozilla/dom/devicestorage/DeviceStorageRequestParent.h" #include "mozilla/dom/devicestorage/DeviceStorageRequestParent.h"
#include "mozilla/dom/GeolocationBinding.h"
#include "mozilla/dom/telephony/TelephonyParent.h" #include "mozilla/dom/telephony/TelephonyParent.h"
#include "SmsParent.h" #include "SmsParent.h"
#include "mozilla/Hal.h" #include "mozilla/Hal.h"
@ -150,7 +151,6 @@ using namespace mozilla::dom::power;
using namespace mozilla::dom::mobilemessage; using namespace mozilla::dom::mobilemessage;
using namespace mozilla::dom::telephony; using namespace mozilla::dom::telephony;
using namespace mozilla::hal; using namespace mozilla::hal;
using namespace mozilla::idl;
using namespace mozilla::ipc; using namespace mozilla::ipc;
using namespace mozilla::layers; using namespace mozilla::layers;
using namespace mozilla::net; using namespace mozilla::net;
@ -2642,8 +2642,8 @@ AddGeolocationListener(nsIDOMGeoPositionCallback* watcher, bool highAccuracy)
return -1; return -1;
} }
GeoPositionOptions* options = new GeoPositionOptions(); PositionOptions* options = new PositionOptions();
options->enableHighAccuracy = highAccuracy; options->mEnableHighAccuracy = highAccuracy;
int32_t retval = 1; int32_t retval = 1;
geo->WatchPosition(watcher, nullptr, options, &retval); geo->WatchPosition(watcher, nullptr, options, &retval);
return retval; return retval;

View File

@ -71,13 +71,13 @@ class nsGeolocationRequest
nsGeolocationRequest(Geolocation* aLocator, nsGeolocationRequest(Geolocation* aLocator,
const GeoPositionCallback& aCallback, const GeoPositionCallback& aCallback,
const GeoPositionErrorCallback& aErrorCallback, const GeoPositionErrorCallback& aErrorCallback,
idl::GeoPositionOptions* aOptions, PositionOptions* aOptions,
bool aWatchPositionRequest = false, bool aWatchPositionRequest = false,
int32_t aWatchId = 0); int32_t aWatchId = 0);
void Shutdown(); void Shutdown();
void SendLocation(nsIDOMGeoPosition* location); void SendLocation(nsIDOMGeoPosition* location);
bool WantsHighAccuracy() {return mOptions && mOptions->enableHighAccuracy;} bool WantsHighAccuracy() {return mOptions && mOptions->mEnableHighAccuracy;}
void SetTimeoutTimer(); void SetTimeoutTimer();
nsIPrincipal* GetPrincipal(); nsIPrincipal* GetPrincipal();
@ -94,7 +94,7 @@ class nsGeolocationRequest
nsCOMPtr<nsITimer> mTimeoutTimer; nsCOMPtr<nsITimer> mTimeoutTimer;
GeoPositionCallback mCallback; GeoPositionCallback mCallback;
GeoPositionErrorCallback mErrorCallback; GeoPositionErrorCallback mErrorCallback;
nsAutoPtr<idl::GeoPositionOptions> mOptions; nsAutoPtr<PositionOptions> mOptions;
nsRefPtr<Geolocation> mLocator; nsRefPtr<Geolocation> mLocator;
@ -102,15 +102,14 @@ class nsGeolocationRequest
bool mShutdown; bool mShutdown;
}; };
static idl::GeoPositionOptions* static PositionOptions*
GeoPositionOptionsFromPositionOptions(const PositionOptions& aOptions) CreatePositionOptionsCopy(const PositionOptions& aOptions)
{ {
nsAutoPtr<idl::GeoPositionOptions> geoOptions( nsAutoPtr<PositionOptions> geoOptions(new PositionOptions());
new idl::GeoPositionOptions());
geoOptions->enableHighAccuracy = aOptions.mEnableHighAccuracy; geoOptions->mEnableHighAccuracy = aOptions.mEnableHighAccuracy;
geoOptions->maximumAge = aOptions.mMaximumAge; geoOptions->mMaximumAge = aOptions.mMaximumAge;
geoOptions->timeout = aOptions.mTimeout; geoOptions->mTimeout = aOptions.mTimeout;
return geoOptions.forget(); return geoOptions.forget();
} }
@ -336,7 +335,7 @@ PositionError::NotifyCallback(const GeoPositionErrorCallback& aCallback)
nsGeolocationRequest::nsGeolocationRequest(Geolocation* aLocator, nsGeolocationRequest::nsGeolocationRequest(Geolocation* aLocator,
const GeoPositionCallback& aCallback, const GeoPositionCallback& aCallback,
const GeoPositionErrorCallback& aErrorCallback, const GeoPositionErrorCallback& aErrorCallback,
idl::GeoPositionOptions* aOptions, PositionOptions* aOptions,
bool aWatchPositionRequest, bool aWatchPositionRequest,
int32_t aWatchId) int32_t aWatchId)
: mIsWatchPositionRequest(aWatchPositionRequest), : mIsWatchPositionRequest(aWatchPositionRequest),
@ -460,11 +459,11 @@ nsGeolocationRequest::Allow()
uint32_t maximumAge = 30 * PR_MSEC_PER_SEC; uint32_t maximumAge = 30 * PR_MSEC_PER_SEC;
if (mOptions) { if (mOptions) {
if (mOptions->maximumAge >= 0) { if (mOptions->mMaximumAge >= 0) {
maximumAge = mOptions->maximumAge; maximumAge = mOptions->mMaximumAge;
} }
} }
gs->SetHigherAccuracy(mOptions && mOptions->enableHighAccuracy); gs->SetHigherAccuracy(mOptions && mOptions->mEnableHighAccuracy);
bool canUseCache = lastPosition && maximumAge > 0 && bool canUseCache = lastPosition && maximumAge > 0 &&
(PRTime(PR_Now() / PR_USEC_PER_MSEC) - maximumAge <= (PRTime(PR_Now() / PR_USEC_PER_MSEC) - maximumAge <=
@ -497,7 +496,7 @@ nsGeolocationRequest::SetTimeoutTimer()
} }
int32_t timeout; int32_t timeout;
if (mOptions && (timeout = mOptions->timeout) != 0) { if (mOptions && (timeout = mOptions->mTimeout) != 0) {
if (timeout < 0) { if (timeout < 0) {
timeout = 0; timeout = 0;
@ -600,7 +599,7 @@ nsGeolocationRequest::Shutdown()
// This should happen last, to ensure that this request isn't taken into consideration // This should happen last, to ensure that this request isn't taken into consideration
// when deciding whether existing requests still require high accuracy. // when deciding whether existing requests still require high accuracy.
if (mOptions && mOptions->enableHighAccuracy) { if (mOptions && mOptions->mEnableHighAccuracy) {
nsRefPtr<nsGeolocationService> gs = nsGeolocationService::GetGeolocationService(); nsRefPtr<nsGeolocationService> gs = nsGeolocationService::GetGeolocationService();
if (gs) { if (gs) {
gs->SetHigherAccuracy(false); gs->SetHigherAccuracy(false);
@ -1200,9 +1199,8 @@ Geolocation::GetCurrentPosition(PositionCallback& aCallback,
GeoPositionCallback successCallback(&aCallback); GeoPositionCallback successCallback(&aCallback);
GeoPositionErrorCallback errorCallback(aErrorCallback); GeoPositionErrorCallback errorCallback(aErrorCallback);
nsresult rv = nsresult rv = GetCurrentPosition(successCallback, errorCallback,
GetCurrentPosition(successCallback, errorCallback, CreatePositionOptionsCopy(aOptions));
GeoPositionOptionsFromPositionOptions(aOptions));
if (NS_FAILED(rv)) { if (NS_FAILED(rv)) {
aRv.Throw(rv); aRv.Throw(rv);
@ -1214,7 +1212,7 @@ Geolocation::GetCurrentPosition(PositionCallback& aCallback,
NS_IMETHODIMP NS_IMETHODIMP
Geolocation::GetCurrentPosition(nsIDOMGeoPositionCallback* aCallback, Geolocation::GetCurrentPosition(nsIDOMGeoPositionCallback* aCallback,
nsIDOMGeoPositionErrorCallback* aErrorCallback, nsIDOMGeoPositionErrorCallback* aErrorCallback,
idl::GeoPositionOptions* aOptions) PositionOptions* aOptions)
{ {
NS_ENSURE_ARG_POINTER(aCallback); NS_ENSURE_ARG_POINTER(aCallback);
@ -1227,7 +1225,7 @@ Geolocation::GetCurrentPosition(nsIDOMGeoPositionCallback* aCallback,
nsresult nsresult
Geolocation::GetCurrentPosition(GeoPositionCallback& callback, Geolocation::GetCurrentPosition(GeoPositionCallback& callback,
GeoPositionErrorCallback& errorCallback, GeoPositionErrorCallback& errorCallback,
idl::GeoPositionOptions *options) PositionOptions *options)
{ {
if (mPendingCallbacks.Length() > MAX_GEO_REQUESTS_PER_WINDOW) { if (mPendingCallbacks.Length() > MAX_GEO_REQUESTS_PER_WINDOW) {
return NS_ERROR_NOT_AVAILABLE; return NS_ERROR_NOT_AVAILABLE;
@ -1289,9 +1287,8 @@ Geolocation::WatchPosition(PositionCallback& aCallback,
GeoPositionCallback successCallback(&aCallback); GeoPositionCallback successCallback(&aCallback);
GeoPositionErrorCallback errorCallback(aErrorCallback); GeoPositionErrorCallback errorCallback(aErrorCallback);
nsresult rv = nsresult rv = WatchPosition(successCallback, errorCallback,
WatchPosition(successCallback, errorCallback, CreatePositionOptionsCopy(aOptions), &ret);
GeoPositionOptionsFromPositionOptions(aOptions), &ret);
if (NS_FAILED(rv)) { if (NS_FAILED(rv)) {
aRv.Throw(rv); aRv.Throw(rv);
@ -1303,7 +1300,7 @@ Geolocation::WatchPosition(PositionCallback& aCallback,
NS_IMETHODIMP NS_IMETHODIMP
Geolocation::WatchPosition(nsIDOMGeoPositionCallback *aCallback, Geolocation::WatchPosition(nsIDOMGeoPositionCallback *aCallback,
nsIDOMGeoPositionErrorCallback *aErrorCallback, nsIDOMGeoPositionErrorCallback *aErrorCallback,
idl::GeoPositionOptions *aOptions, PositionOptions *aOptions,
int32_t* aRv) int32_t* aRv)
{ {
NS_ENSURE_ARG_POINTER(aCallback); NS_ENSURE_ARG_POINTER(aCallback);
@ -1317,7 +1314,7 @@ Geolocation::WatchPosition(nsIDOMGeoPositionCallback *aCallback,
nsresult nsresult
Geolocation::WatchPosition(GeoPositionCallback& aCallback, Geolocation::WatchPosition(GeoPositionCallback& aCallback,
GeoPositionErrorCallback& aErrorCallback, GeoPositionErrorCallback& aErrorCallback,
idl::GeoPositionOptions* aOptions, PositionOptions* aOptions,
int32_t* aRv) int32_t* aRv)
{ {
if (mWatchingCallbacks.Length() > MAX_GEO_REQUESTS_PER_WINDOW) { if (mWatchingCallbacks.Length() > MAX_GEO_REQUESTS_PER_WINDOW) {

View File

@ -176,8 +176,8 @@ private:
~Geolocation(); ~Geolocation();
nsresult GetCurrentPosition(GeoPositionCallback& aCallback, GeoPositionErrorCallback& aErrorCallback, mozilla::idl::GeoPositionOptions* aOptions); nsresult GetCurrentPosition(GeoPositionCallback& aCallback, GeoPositionErrorCallback& aErrorCallback, PositionOptions* aOptions);
nsresult WatchPosition(GeoPositionCallback& aCallback, GeoPositionErrorCallback& aErrorCallback, mozilla::idl::GeoPositionOptions* aOptions, int32_t* aRv); nsresult WatchPosition(GeoPositionCallback& aCallback, GeoPositionErrorCallback& aErrorCallback, PositionOptions* aOptions, int32_t* aRv);
bool RegisterRequestWithPrompt(nsGeolocationRequest* request); bool RegisterRequestWithPrompt(nsGeolocationRequest* request);

View File

@ -4,7 +4,6 @@
# Dictionary interface name, interface file name # Dictionary interface name, interface file name
dictionaries = [ dictionaries = [
[ 'GeoPositionOptions', 'nsIDOMGeoGeolocation.idl' ],
[ 'DOMFileMetadataParameters', 'nsIDOMLockedFile.idl' ], [ 'DOMFileMetadataParameters', 'nsIDOMLockedFile.idl' ],
[ 'CameraSize', 'nsIDOMCameraManager.idl' ], [ 'CameraSize', 'nsIDOMCameraManager.idl' ],
[ 'CameraRegion', 'nsIDOMCameraManager.idl' ], [ 'CameraRegion', 'nsIDOMCameraManager.idl' ],