mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 780718 - Return false from DOMRequestService is preventDefault was called on events. r=sicking
This commit is contained in:
parent
1de3573fd4
commit
48eba85f08
@ -112,7 +112,7 @@ DOMRequest::GetError(nsIDOMDOMError** aError)
|
||||
}
|
||||
|
||||
void
|
||||
DOMRequest::FireSuccess(jsval aResult)
|
||||
DOMRequest::FireSuccess(jsval aResult, bool* aDefaultActionEnabled)
|
||||
{
|
||||
NS_ASSERTION(!mDone, "mDone shouldn't have been set to true already!");
|
||||
NS_ASSERTION(!mError, "mError shouldn't have been set!");
|
||||
@ -124,11 +124,11 @@ DOMRequest::FireSuccess(jsval aResult)
|
||||
}
|
||||
mResult = aResult;
|
||||
|
||||
FireEvent(NS_LITERAL_STRING("success"), false, false);
|
||||
FireEvent(NS_LITERAL_STRING("success"), false, false, aDefaultActionEnabled);
|
||||
}
|
||||
|
||||
void
|
||||
DOMRequest::FireError(const nsAString& aError)
|
||||
DOMRequest::FireError(const nsAString& aError, bool* aDefaultActionEnabled)
|
||||
{
|
||||
NS_ASSERTION(!mDone, "mDone shouldn't have been set to true already!");
|
||||
NS_ASSERTION(!mError, "mError shouldn't have been set!");
|
||||
@ -137,11 +137,11 @@ DOMRequest::FireError(const nsAString& aError)
|
||||
mDone = true;
|
||||
mError = DOMError::CreateWithName(aError);
|
||||
|
||||
FireEvent(NS_LITERAL_STRING("error"), true, true);
|
||||
FireEvent(NS_LITERAL_STRING("error"), true, true, aDefaultActionEnabled);
|
||||
}
|
||||
|
||||
void
|
||||
DOMRequest::FireError(nsresult aError)
|
||||
DOMRequest::FireError(nsresult aError, bool* aDefaultActionEnabled)
|
||||
{
|
||||
NS_ASSERTION(!mDone, "mDone shouldn't have been set to true already!");
|
||||
NS_ASSERTION(!mError, "mError shouldn't have been set!");
|
||||
@ -150,11 +150,12 @@ DOMRequest::FireError(nsresult aError)
|
||||
mDone = true;
|
||||
mError = DOMError::CreateForNSResult(aError);
|
||||
|
||||
FireEvent(NS_LITERAL_STRING("error"), true, true);
|
||||
FireEvent(NS_LITERAL_STRING("error"), true, true, aDefaultActionEnabled);
|
||||
}
|
||||
|
||||
void
|
||||
DOMRequest::FireEvent(const nsAString& aType, bool aBubble, bool aCancelable)
|
||||
DOMRequest::FireEvent(const nsAString& aType, bool aBubble, bool aCancelable,
|
||||
bool* aDefaultActionEnabled)
|
||||
{
|
||||
if (NS_FAILED(CheckInnerWindowCorrectness())) {
|
||||
return;
|
||||
@ -171,8 +172,7 @@ DOMRequest::FireEvent(const nsAString& aType, bool aBubble, bool aCancelable)
|
||||
return;
|
||||
}
|
||||
|
||||
bool dummy;
|
||||
DispatchEvent(event, &dummy);
|
||||
DispatchEvent(event, aDefaultActionEnabled);
|
||||
}
|
||||
|
||||
void
|
||||
@ -205,20 +205,24 @@ DOMRequestService::CreateRequest(nsIDOMWindow* aWindow,
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMRequestService::FireSuccess(nsIDOMDOMRequest* aRequest,
|
||||
const jsval& aResult)
|
||||
const jsval& aResult,
|
||||
bool* aDefaultActionEnabled)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDefaultActionEnabled);
|
||||
NS_ENSURE_STATE(aRequest);
|
||||
static_cast<DOMRequest*>(aRequest)->FireSuccess(aResult);
|
||||
static_cast<DOMRequest*>(aRequest)->FireSuccess(aResult, aDefaultActionEnabled);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMRequestService::FireError(nsIDOMDOMRequest* aRequest,
|
||||
const nsAString& aError)
|
||||
const nsAString& aError,
|
||||
bool* aDefaultActionEnabled)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDefaultActionEnabled);
|
||||
NS_ENSURE_STATE(aRequest);
|
||||
static_cast<DOMRequest*>(aRequest)->FireError(aError);
|
||||
static_cast<DOMRequest*>(aRequest)->FireError(aError, aDefaultActionEnabled);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -37,9 +37,9 @@ public:
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(DOMRequest,
|
||||
nsDOMEventTargetHelper)
|
||||
|
||||
void FireSuccess(jsval aResult);
|
||||
void FireError(const nsAString& aError);
|
||||
void FireError(nsresult aError);
|
||||
void FireSuccess(jsval aResult, bool* aDefaultActionEnabled);
|
||||
void FireError(const nsAString& aError, bool* aDefaultActionEnabled);
|
||||
void FireError(nsresult aError, bool* aDefaultActionEnabled);
|
||||
|
||||
DOMRequest(nsIDOMWindow* aWindow);
|
||||
DOMRequest();
|
||||
@ -52,7 +52,8 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
void FireEvent(const nsAString& aType, bool aBubble, bool aCancelable);
|
||||
void FireEvent(const nsAString& aType, bool aBubble, bool aCancelable,
|
||||
bool* aDefaultActionEnabled);
|
||||
|
||||
virtual void RootResultVal();
|
||||
virtual void UnrootResultVal();
|
||||
|
@ -21,11 +21,11 @@ interface nsIDOMDOMRequest : nsIDOMEventTarget
|
||||
attribute nsIDOMEventListener onerror;
|
||||
};
|
||||
|
||||
[scriptable, builtinclass, uuid(eebcdf29-f8fa-4c36-bbc7-2146b1cbaf7b)]
|
||||
[scriptable, builtinclass, uuid(46afe27a-d407-4eb8-95c4-aefbd2b63540)]
|
||||
interface nsIDOMRequestService : nsISupports
|
||||
{
|
||||
nsIDOMDOMRequest createRequest(in nsIDOMWindow window);
|
||||
|
||||
void fireSuccess(in nsIDOMDOMRequest request, in jsval result);
|
||||
void fireError(in nsIDOMDOMRequest request, in DOMString error);
|
||||
bool fireSuccess(in nsIDOMDOMRequest request, in jsval result);
|
||||
bool fireError(in nsIDOMDOMRequest request, in DOMString error);
|
||||
};
|
||||
|
@ -35,7 +35,7 @@ var ev = null;
|
||||
req.onsuccess = function(e) {
|
||||
ev = e;
|
||||
}
|
||||
reqserv.fireSuccess(req, "my result");
|
||||
is(reqserv.fireSuccess(req, "my result"), true, "prevent default not detected");
|
||||
ok(ev, "got success event");
|
||||
is(ev.type, "success", "correct type during success");
|
||||
is(ev.target, req, "correct target during success");
|
||||
@ -49,7 +49,7 @@ ev = null;
|
||||
req.onerror = function(e) {
|
||||
ev = e;
|
||||
}
|
||||
reqserv.fireError(req, "OhMyError");
|
||||
is(reqserv.fireError(req, "OhMyError"), true, "prevent default not detected");
|
||||
ok(ev, "got success event");
|
||||
is(ev.type, "error", "correct type during error");
|
||||
is(ev.target, req, "correct target during error");
|
||||
@ -57,6 +57,16 @@ is(req.readyState, "done", "correct readyState after error");
|
||||
is(req.error.name, "OhMyError", "correct error after error");
|
||||
is(req.result, undefined, "correct result after error");
|
||||
|
||||
// Test calling preventDefault on events
|
||||
req.onsuccess = function(e) e.preventDefault();
|
||||
reqserv.fireSuccess(req, "my result");
|
||||
is(reqserv.fireSuccess(req, "my result"), false, "prevent default detected");
|
||||
|
||||
// fire error
|
||||
req.onerror = function(e) e.preventDefault();
|
||||
reqserv.fireError(req, "OhMyError");
|
||||
is(reqserv.fireError(req, "OhMyError"), false, "prevent default detected");
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
|
@ -36,14 +36,16 @@ DeviceStorageRequestChild::Recv__delete__(const DeviceStorageResponseValue& aVal
|
||||
case DeviceStorageResponseValue::TErrorResponse:
|
||||
{
|
||||
ErrorResponse r = aValue;
|
||||
mRequest->FireError(r.error());
|
||||
bool allowDefault;
|
||||
mRequest->FireError(r.error(), &allowDefault);
|
||||
break;
|
||||
}
|
||||
|
||||
case DeviceStorageResponseValue::TSuccessResponse:
|
||||
{
|
||||
jsval result = StringToJsval(mRequest->GetOwner(), mFile->mPath);
|
||||
mRequest->FireSuccess(result);
|
||||
bool allowDefault;
|
||||
mRequest->FireSuccess(result, &allowDefault);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -65,7 +67,8 @@ DeviceStorageRequestChild::Recv__delete__(const DeviceStorageResponseValue& aVal
|
||||
mimeType);
|
||||
|
||||
jsval result = BlobToJsval(mRequest->GetOwner(), blob);
|
||||
mRequest->FireSuccess(result);
|
||||
bool allowDefault;
|
||||
mRequest->FireSuccess(result, &allowDefault);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -537,7 +537,8 @@ public:
|
||||
{
|
||||
NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
|
||||
|
||||
mRequest->FireError(mError);
|
||||
bool allowDefault;
|
||||
mRequest->FireError(mError, &allowDefault);
|
||||
mRequest = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
@ -578,7 +579,8 @@ ContinueCursorEvent::Run() {
|
||||
cursor->mOkToCallContinue = true;
|
||||
}
|
||||
|
||||
mRequest->FireSuccess(val);
|
||||
bool allowDefault;
|
||||
mRequest->FireSuccess(val, &allowDefault);
|
||||
mRequest = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
@ -793,7 +795,8 @@ public:
|
||||
result = StringToJsval(mRequest->GetOwner(), mPath);
|
||||
}
|
||||
|
||||
mRequest->FireSuccess(result);
|
||||
bool allowDefault;
|
||||
mRequest->FireSuccess(result, &allowDefault);
|
||||
mRequest = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -88,8 +88,10 @@ ArchiveRequest::Run()
|
||||
// Register this request to the reader.
|
||||
// When the reader is ready to return data, a 'Ready()' will be called
|
||||
nsresult rv = mArchiveReader->RegisterRequest(this);
|
||||
if (NS_FAILED(rv))
|
||||
FireError(rv);
|
||||
if (NS_FAILED(rv)) {
|
||||
bool allowDefault;
|
||||
FireError(rv, &allowDefault);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -109,8 +111,9 @@ nsresult
|
||||
ArchiveRequest::ReaderReady(nsTArray<nsCOMPtr<nsIDOMFile> >& aFileList,
|
||||
nsresult aStatus)
|
||||
{
|
||||
bool allowDefault;
|
||||
if (aStatus != NS_OK) {
|
||||
FireError(aStatus);
|
||||
FireError(aStatus, &allowDefault);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -148,10 +151,10 @@ ArchiveRequest::ReaderReady(nsTArray<nsCOMPtr<nsIDOMFile> >& aFileList,
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
FireSuccess(result);
|
||||
FireSuccess(result, &allowDefault);
|
||||
}
|
||||
else {
|
||||
FireError(rv);
|
||||
FireError(rv, &allowDefault);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -62,8 +62,9 @@ FileRequest::NotifyHelperCompleted(FileHelper* aFileHelper)
|
||||
nsresult rv = aFileHelper->mResultCode;
|
||||
|
||||
// If the request failed then fire error event and return.
|
||||
bool allowDefault;
|
||||
if (NS_FAILED(rv)) {
|
||||
FireError(rv);
|
||||
FireError(rv, &allowDefault);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -93,10 +94,10 @@ FileRequest::NotifyHelperCompleted(FileHelper* aFileHelper)
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
FireSuccess(result);
|
||||
FireSuccess(result, &allowDefault);
|
||||
}
|
||||
else {
|
||||
FireError(rv);
|
||||
FireError(rv, &allowDefault);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
Loading…
Reference in New Issue
Block a user