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
Родитель fdd9e3f2a6
Коммит 107bcf1f66
5 изменённых файлов: 36 добавлений и 43 удалений

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

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