Bug 1466213 part 2. Remove nsIDOMGeoPositionError. r=qdot

This commit is contained in:
Boris Zbarsky 2018-06-01 22:35:44 -04:00
Родитель 01f73b98d9
Коммит c53f7f15b1
13 изменённых файлов: 45 добавлений и 85 удалений

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

@ -11,15 +11,10 @@
namespace mozilla { namespace mozilla {
namespace dom { namespace dom {
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(PositionError)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMGeoPositionError)
NS_INTERFACE_MAP_ENTRY(nsIDOMGeoPositionError)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(PositionError, mParent) NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(PositionError, mParent)
NS_IMPL_CYCLE_COLLECTING_ADDREF(PositionError) NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(PositionError, AddRef)
NS_IMPL_CYCLE_COLLECTING_RELEASE(PositionError) NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(PositionError, Release)
PositionError::PositionError(Geolocation* aParent, int16_t aCode) PositionError::PositionError(Geolocation* aParent, int16_t aCode)
: mCode(aCode) : mCode(aCode)
@ -29,33 +24,23 @@ PositionError::PositionError(Geolocation* aParent, int16_t aCode)
PositionError::~PositionError() = default; PositionError::~PositionError() = default;
void
NS_IMETHODIMP PositionError::GetMessage(nsAString& aMessage) const
PositionError::GetCode(int16_t *aCode)
{
NS_ENSURE_ARG_POINTER(aCode);
*aCode = Code();
return NS_OK;
}
NS_IMETHODIMP
PositionError::GetMessage(nsAString& aMessage)
{ {
switch (mCode) switch (mCode)
{ {
case nsIDOMGeoPositionError::PERMISSION_DENIED: case PositionErrorBinding::PERMISSION_DENIED:
aMessage = NS_LITERAL_STRING("User denied geolocation prompt"); aMessage = NS_LITERAL_STRING("User denied geolocation prompt");
break; break;
case nsIDOMGeoPositionError::POSITION_UNAVAILABLE: case PositionErrorBinding::POSITION_UNAVAILABLE:
aMessage = NS_LITERAL_STRING("Unknown error acquiring position"); aMessage = NS_LITERAL_STRING("Unknown error acquiring position");
break; break;
case nsIDOMGeoPositionError::TIMEOUT: case PositionErrorBinding::TIMEOUT:
aMessage = NS_LITERAL_STRING("Position acquisition timed out"); aMessage = NS_LITERAL_STRING("Position acquisition timed out");
break; break;
default: default:
break; break;
} }
return NS_OK;
} }
nsWrapperCache* nsWrapperCache*

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

@ -7,7 +7,6 @@
#ifndef mozilla_dom_PositionError_h #ifndef mozilla_dom_PositionError_h
#define mozilla_dom_PositionError_h #define mozilla_dom_PositionError_h
#include "nsIDOMGeoPositionError.h"
#include "nsWrapperCache.h" #include "nsWrapperCache.h"
#include "nsISupportsImpl.h" #include "nsISupportsImpl.h"
#include "nsCycleCollectionParticipant.h" #include "nsCycleCollectionParticipant.h"
@ -21,14 +20,11 @@ class PositionErrorCallback;
class Geolocation; class Geolocation;
typedef CallbackObjectHolder<PositionErrorCallback, nsIDOMGeoPositionErrorCallback> GeoPositionErrorCallback; typedef CallbackObjectHolder<PositionErrorCallback, nsIDOMGeoPositionErrorCallback> GeoPositionErrorCallback;
class PositionError final : public nsIDOMGeoPositionError, class PositionError final : public nsWrapperCache
public nsWrapperCache
{ {
public: public:
NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(PositionError)
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(PositionError) NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(PositionError)
NS_DECL_NSIDOMGEOPOSITIONERROR
PositionError(Geolocation* aParent, int16_t aCode); PositionError(Geolocation* aParent, int16_t aCode);
@ -40,6 +36,8 @@ public:
return mCode; return mCode;
} }
void GetMessage(nsAString& aMessage) const;
void NotifyCallback(const GeoPositionErrorCallback& callback); void NotifyCallback(const GeoPositionErrorCallback& callback);
private: private:
~PositionError(); ~PositionError();

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

@ -10,6 +10,7 @@
#include "mozilla/dom/ContentChild.h" #include "mozilla/dom/ContentChild.h"
#include "mozilla/dom/PermissionMessageUtils.h" #include "mozilla/dom/PermissionMessageUtils.h"
#include "mozilla/dom/PositionError.h" #include "mozilla/dom/PositionError.h"
#include "mozilla/dom/PositionErrorBinding.h"
#include "mozilla/Preferences.h" #include "mozilla/Preferences.h"
#include "mozilla/Services.h" #include "mozilla/Services.h"
#include "mozilla/Telemetry.h" #include "mozilla/Telemetry.h"
@ -22,7 +23,6 @@
#include "nsContentUtils.h" #include "nsContentUtils.h"
#include "nsGlobalWindow.h" #include "nsGlobalWindow.h"
#include "nsIDocument.h" #include "nsIDocument.h"
#include "nsIDOMGeoPositionError.h"
#include "nsINamed.h" #include "nsINamed.h"
#include "nsIObserverService.h" #include "nsIObserverService.h"
#include "nsIScriptError.h" #include "nsIScriptError.h"
@ -270,7 +270,7 @@ void
nsGeolocationRequest::Notify() nsGeolocationRequest::Notify()
{ {
SetTimeoutTimer(); SetTimeoutTimer();
NotifyErrorAndShutdown(nsIDOMGeoPositionError::TIMEOUT); NotifyErrorAndShutdown(PositionErrorBinding::TIMEOUT);
} }
void void
@ -346,7 +346,7 @@ nsGeolocationRequest::Cancel()
return NS_OK; return NS_OK;
} }
NotifyError(nsIDOMGeoPositionError::PERMISSION_DENIED); NotifyError(PositionErrorBinding::PERMISSION_DENIED);
return NS_OK; return NS_OK;
} }
@ -414,7 +414,7 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices)
// if it is not a watch request and timeout is 0, // if it is not a watch request and timeout is 0,
// invoke the errorCallback (if present) with TIMEOUT code // invoke the errorCallback (if present) with TIMEOUT code
if (mOptions && mOptions->mTimeout == 0 && !mIsWatchPositionRequest) { if (mOptions && mOptions->mTimeout == 0 && !mIsWatchPositionRequest) {
NotifyError(nsIDOMGeoPositionError::TIMEOUT); NotifyError(PositionErrorBinding::TIMEOUT);
return NS_OK; return NS_OK;
} }
@ -425,7 +425,7 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices)
if (NS_FAILED(rv)) { if (NS_FAILED(rv)) {
// Location provider error // Location provider error
NotifyError(nsIDOMGeoPositionError::POSITION_UNAVAILABLE); NotifyError(PositionErrorBinding::POSITION_UNAVAILABLE);
return NS_OK; return NS_OK;
} }
@ -504,7 +504,7 @@ nsGeolocationRequest::SendLocation(nsIDOMGeoPosition* aPosition)
} }
if (!wrapped) { if (!wrapped) {
NotifyError(nsIDOMGeoPositionError::POSITION_UNAVAILABLE); NotifyError(PositionErrorBinding::POSITION_UNAVAILABLE);
return; return;
} }
@ -789,7 +789,7 @@ nsGeolocationService::StartDevice(nsIPrincipal *aPrincipal)
if (NS_FAILED(rv = mProvider->Startup()) || if (NS_FAILED(rv = mProvider->Startup()) ||
NS_FAILED(rv = mProvider->Watch(this))) { NS_FAILED(rv = mProvider->Watch(this))) {
NotifyError(nsIDOMGeoPositionError::POSITION_UNAVAILABLE); NotifyError(PositionErrorBinding::POSITION_UNAVAILABLE);
return rv; return rv;
} }

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

@ -12,7 +12,6 @@ XPIDL_SOURCES += [
'nsIDOMGeoPosition.idl', 'nsIDOMGeoPosition.idl',
'nsIDOMGeoPositionCallback.idl', 'nsIDOMGeoPositionCallback.idl',
'nsIDOMGeoPositionCoords.idl', 'nsIDOMGeoPositionCoords.idl',
'nsIDOMGeoPositionError.idl',
'nsIDOMGeoPositionErrorCallback.idl', 'nsIDOMGeoPositionErrorCallback.idl',
] ]

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

@ -1,24 +0,0 @@
/* 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/. */
#include "domstubs.idl"
// undef the GetMessage macro defined in winuser.h from the MS Platform SDK
%{C++
#ifdef GetMessage
#undef GetMessage
#endif
%}
[shim(PositionError), uuid(85255CC3-07BA-49FD-BC9B-18D2963DAF7F)]
interface nsIDOMGeoPositionError : nsISupports
{
const unsigned short PERMISSION_DENIED = 1;
const unsigned short POSITION_UNAVAILABLE = 2;
const unsigned short TIMEOUT = 3;
readonly attribute short code;
readonly attribute AString message;
};

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

@ -5,9 +5,9 @@
#include "domstubs.idl" #include "domstubs.idl"
interface nsIDOMGeoPositionError; webidl PositionError;
[scriptable, function, uuid(7D9B09D9-4843-43EB-A7A7-67F7DDA6B3C4)] [scriptable, function, uuid(7D9B09D9-4843-43EB-A7A7-67F7DDA6B3C4)]
interface nsIDOMGeoPositionErrorCallback : nsISupports { interface nsIDOMGeoPositionErrorCallback : nsISupports {
void handleEvent(in nsIDOMGeoPositionError positionError); void handleEvent(in PositionError positionError);
}; };

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

@ -51,6 +51,7 @@
#include "mozilla/dom/PContentBridgeParent.h" #include "mozilla/dom/PContentBridgeParent.h"
#include "mozilla/dom/PContentPermissionRequestParent.h" #include "mozilla/dom/PContentPermissionRequestParent.h"
#include "mozilla/dom/PCycleCollectWithLogsParent.h" #include "mozilla/dom/PCycleCollectWithLogsParent.h"
#include "mozilla/dom/PositionError.h"
#include "mozilla/dom/ServiceWorkerRegistrar.h" #include "mozilla/dom/ServiceWorkerRegistrar.h"
#include "mozilla/dom/power/PowerManagerService.h" #include "mozilla/dom/power/PowerManagerService.h"
#include "mozilla/dom/Permissions.h" #include "mozilla/dom/Permissions.h"
@ -123,7 +124,6 @@
#include "nsIDocShellTreeOwner.h" #include "nsIDocShellTreeOwner.h"
#include "nsIDocument.h" #include "nsIDocument.h"
#include "nsIDOMGeoGeolocation.h" #include "nsIDOMGeoGeolocation.h"
#include "nsIDOMGeoPositionError.h"
#include "nsIDragService.h" #include "nsIDragService.h"
#include "mozilla/dom/WakeLock.h" #include "mozilla/dom/WakeLock.h"
#include "nsIDOMWindow.h" #include "nsIDOMWindow.h"
@ -3895,13 +3895,9 @@ ContentParent::HandleEvent(nsIDOMGeoPosition* postion)
} }
NS_IMETHODIMP NS_IMETHODIMP
ContentParent::HandleEvent(nsIDOMGeoPositionError* postionError) ContentParent::HandleEvent(PositionError* positionError)
{ {
int16_t errorCode; Unused << SendGeolocationError(positionError->Code());
nsresult rv;
rv = postionError->GetCode(&errorCode);
NS_ENSURE_SUCCESS(rv,rv);
Unused << SendGeolocationError(errorCode);
return NS_OK; return NS_OK;
} }

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

@ -9,7 +9,8 @@ ChromeUtils.import("resource://gre/modules/Services.jsm");
Cu.importGlobalProperties(["XMLHttpRequest"]); Cu.importGlobalProperties(["XMLHttpRequest"]);
const POSITION_UNAVAILABLE = Ci.nsIDOMGeoPositionError.POSITION_UNAVAILABLE; // PositionError has no interface object, so we can't use that here.
const POSITION_UNAVAILABLE = 2;
var gLoggingEnabled = false; var gLoggingEnabled = false;

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

@ -11,8 +11,8 @@
#include "mozilla/Atomics.h" #include "mozilla/Atomics.h"
#include "mozilla/FloatingPoint.h" #include "mozilla/FloatingPoint.h"
#include "mozilla/LazyIdleThread.h" #include "mozilla/LazyIdleThread.h"
#include "mozilla/dom/PositionErrorBinding.h"
#include "nsGeoPosition.h" #include "nsGeoPosition.h"
#include "nsIDOMGeoPositionError.h"
#include "nsProxyRelease.h" #include "nsProxyRelease.h"
#include "nsThreadUtils.h" #include "nsThreadUtils.h"
@ -185,7 +185,7 @@ public:
err = PollLoop5(); err = PollLoop5();
break; break;
default: default:
err = nsIDOMGeoPositionError::POSITION_UNAVAILABLE; err = PositionErrorBinding::POSITION_UNAVAILABLE;
break; break;
} }
@ -301,7 +301,7 @@ protected:
return err; return err;
#else #else
return nsIDOMGeoPositionError::POSITION_UNAVAILABLE; return PositionErrorBinding::POSITION_UNAVAILABLE;
#endif // GPSD_MAJOR_API_VERSION #endif // GPSD_MAJOR_API_VERSION
} }
@ -313,13 +313,13 @@ protected:
case EPERM: case EPERM:
MOZ_FALLTHROUGH; MOZ_FALLTHROUGH;
case EROFS: case EROFS:
return nsIDOMGeoPositionError::PERMISSION_DENIED; return PositionErrorBinding::PERMISSION_DENIED;
case ETIME: case ETIME:
MOZ_FALLTHROUGH; MOZ_FALLTHROUGH;
case ETIMEDOUT: case ETIMEDOUT:
return nsIDOMGeoPositionError::TIMEOUT; return PositionErrorBinding::TIMEOUT;
default: default:
return nsIDOMGeoPositionError::POSITION_UNAVAILABLE; return PositionErrorBinding::POSITION_UNAVAILABLE;
} }
} }

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

@ -9,11 +9,11 @@
#include "nsGeoPosition.h" #include "nsGeoPosition.h"
#include "nsIConsoleService.h" #include "nsIConsoleService.h"
#include "nsServiceManagerUtils.h" #include "nsServiceManagerUtils.h"
#include "nsIDOMGeoPositionError.h"
#include "CoreLocationLocationProvider.h" #include "CoreLocationLocationProvider.h"
#include "nsCocoaFeatures.h" #include "nsCocoaFeatures.h"
#include "prtime.h" #include "prtime.h"
#include "mozilla/Telemetry.h" #include "mozilla/Telemetry.h"
#include "mozilla/dom/PositionErrorBinding.h"
#include "MLSFallback.h" #include "MLSFallback.h"
#include <CoreLocation/CLError.h> #include <CoreLocation/CLError.h>
@ -67,7 +67,7 @@ static const CLLocationAccuracy kDEFAULT_ACCURACY = kCLLocationAccuracyNearestTe
console->LogStringMessage(NS_ConvertUTF8toUTF16([message UTF8String]).get()); console->LogStringMessage(NS_ConvertUTF8toUTF16([message UTF8String]).get());
if ([aError code] == kCLErrorDenied) { if ([aError code] == kCLErrorDenied) {
mProvider->NotifyError(nsIDOMGeoPositionError::PERMISSION_DENIED); mProvider->NotifyError(dom::PositionErrorBinding::PERMISSION_DENIED);
return; return;
} }

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

@ -6,11 +6,11 @@
#include "WindowsLocationProvider.h" #include "WindowsLocationProvider.h"
#include "nsGeoPosition.h" #include "nsGeoPosition.h"
#include "nsIDOMGeoPositionError.h"
#include "nsComponentManagerUtils.h" #include "nsComponentManagerUtils.h"
#include "prtime.h" #include "prtime.h"
#include "MLSFallback.h" #include "MLSFallback.h"
#include "mozilla/Telemetry.h" #include "mozilla/Telemetry.h"
#include "mozilla/dom/PositionErrorBinding.h"
namespace mozilla { namespace mozilla {
namespace dom { namespace dom {
@ -129,11 +129,11 @@ LocationEvent::OnStatusChanged(REFIID aReportType,
uint16_t err; uint16_t err;
switch (aStatus) { switch (aStatus) {
case REPORT_ACCESS_DENIED: case REPORT_ACCESS_DENIED:
err = nsIDOMGeoPositionError::PERMISSION_DENIED; err = PositionErrorBinding::PERMISSION_DENIED;
break; break;
case REPORT_NOT_SUPPORTED: case REPORT_NOT_SUPPORTED:
case REPORT_ERROR: case REPORT_ERROR:
err = nsIDOMGeoPositionError::POSITION_UNAVAILABLE; err = PositionErrorBinding::POSITION_UNAVAILABLE;
break; break;
default: default:
return S_OK; return S_OK;

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

@ -30,8 +30,11 @@ function test1() {
} }
function errorCallback(error) { function errorCallback(error) {
is(error.code, // PositionError has no interface object, so we can't get constants off that.
SpecialPowers.Ci.nsIDOMGeoPositionError.POSITION_UNAVAILABLE, "Geolocation error handler fired"); is(error.code, error.POSITION_UNAVAILABLE,
"Geolocation error handler fired");
is(error.POSITION_UNAVAILABLE, 2,
"Value of POSITION_UNAVAILABLE should be correct");
SimpleTest.finish(); SimpleTest.finish();
} }

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

@ -4,7 +4,9 @@ function successCallback() {
} }
function errorCallback(err) { function errorCallback(err) {
Assert.equal(Ci.nsIDOMGeoPositionError.POSITION_UNAVAILABLE, err.code); // PositionError has no interface object, so we can't get constants off that.
Assert.equal(err.POSITION_UNAVAILABLE, err.code);
Assert.equal(2, err.code);
do_test_finished(); do_test_finished();
} }