зеркало из https://github.com/mozilla/gecko-dev.git
Bug 973905. setTimeout/setInterval with a string first arg but more than two arguments should still work (and ignore the extra arguments). r=smaug
This commit is contained in:
Родитель
7ee245a69d
Коммит
022c86a654
|
@ -11426,7 +11426,9 @@ nsGlobalWindow::SetTimeout(JSContext* aCx, Function& aFunction,
|
|||
|
||||
int32_t
|
||||
nsGlobalWindow::SetTimeout(JSContext* aCx, const nsAString& aHandler,
|
||||
int32_t aTimeout, ErrorResult& aError)
|
||||
int32_t aTimeout,
|
||||
const Sequence<JS::Value>& /* unused */,
|
||||
ErrorResult& aError)
|
||||
{
|
||||
return SetTimeoutOrInterval(aCx, aHandler, aTimeout, false, aError);
|
||||
}
|
||||
|
@ -11460,6 +11462,7 @@ nsGlobalWindow::SetInterval(JSContext* aCx, Function& aFunction,
|
|||
int32_t
|
||||
nsGlobalWindow::SetInterval(JSContext* aCx, const nsAString& aHandler,
|
||||
const Optional<int32_t>& aTimeout,
|
||||
const Sequence<JS::Value>& /* unused */,
|
||||
ErrorResult& aError)
|
||||
{
|
||||
int32_t timeout;
|
||||
|
|
|
@ -834,7 +834,9 @@ public:
|
|||
const mozilla::dom::Sequence<JS::Value>& aArguments,
|
||||
mozilla::ErrorResult& aError);
|
||||
int32_t SetTimeout(JSContext* aCx, const nsAString& aHandler,
|
||||
int32_t aTimeout, mozilla::ErrorResult& aError);
|
||||
int32_t aTimeout,
|
||||
const mozilla::dom::Sequence<JS::Value>& /* unused */,
|
||||
mozilla::ErrorResult& aError);
|
||||
void ClearTimeout(int32_t aHandle, mozilla::ErrorResult& aError);
|
||||
int32_t SetInterval(JSContext* aCx, mozilla::dom::Function& aFunction,
|
||||
const mozilla::dom::Optional<int32_t>& aTimeout,
|
||||
|
@ -842,6 +844,7 @@ public:
|
|||
mozilla::ErrorResult& aError);
|
||||
int32_t SetInterval(JSContext* aCx, const nsAString& aHandler,
|
||||
const mozilla::dom::Optional<int32_t>& aTimeout,
|
||||
const mozilla::dom::Sequence<JS::Value>& /* unused */,
|
||||
mozilla::ErrorResult& aError);
|
||||
void ClearInterval(int32_t aHandle, mozilla::ErrorResult& aError);
|
||||
void Atob(const nsAString& aAsciiBase64String, nsAString& aBinaryData,
|
||||
|
|
|
@ -36,6 +36,7 @@ support-files =
|
|||
[test_openDialogChromeOnly.html]
|
||||
[test_postMessage_solidus.html]
|
||||
[test_screen_orientation.html]
|
||||
[test_settimeout_extra_arguments.html]
|
||||
[test_settimeout_inner.html]
|
||||
[test_setting_opener.html]
|
||||
[test_url.html]
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Test for setTimeout with a string argument and more than 2 arguments</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
t1 = async_test("setTimeout with more than 2 arguments, first argument a string, should work");
|
||||
t2 = async_test("setInterval with more than 2 arguments, first argument a string, should work");
|
||||
setTimeout("t1.done()", 0, {});
|
||||
var interval = setInterval("clearInterval(interval); t2.done()", 0, {});
|
||||
</script>
|
|
@ -1523,7 +1523,6 @@ DOMInterfaces = {
|
|||
# from ChromeWindow.
|
||||
'hasXPConnectImpls': True,
|
||||
'register': False,
|
||||
'implicitJSContext': [ 'setInterval', 'setTimeout' ],
|
||||
'binaryNames': {
|
||||
'postMessage': 'postMessageMoz',
|
||||
},
|
||||
|
|
|
@ -87,10 +87,10 @@ Window implements WindowEventHandlers;
|
|||
[NoInterfaceObject]
|
||||
interface WindowTimers {
|
||||
[Throws] long setTimeout(Function handler, optional long timeout = 0, any... arguments);
|
||||
[Throws] long setTimeout(DOMString handler, optional long timeout = 0);
|
||||
[Throws] long setTimeout(DOMString handler, optional long timeout = 0, any... unused);
|
||||
[Throws] void clearTimeout(long handle);
|
||||
[Throws] long setInterval(Function handler, optional long timeout, any... arguments);
|
||||
[Throws] long setInterval(DOMString handler, optional long timeout);
|
||||
[Throws] long setInterval(DOMString handler, optional long timeout, any... unused);
|
||||
[Throws] void clearInterval(long handle);
|
||||
};
|
||||
Window implements WindowTimers;
|
||||
|
|
|
@ -180,8 +180,10 @@ WorkerGlobalScope::SetTimeout(JSContext* aCx,
|
|||
}
|
||||
|
||||
int32_t
|
||||
WorkerGlobalScope::SetTimeout(const nsAString& aHandler,
|
||||
WorkerGlobalScope::SetTimeout(JSContext* /* unused */,
|
||||
const nsAString& aHandler,
|
||||
const int32_t aTimeout,
|
||||
const Sequence<JS::Value>& /* unused */,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
mWorkerPrivate->AssertIsOnWorkerThread();
|
||||
|
@ -213,8 +215,10 @@ WorkerGlobalScope::SetInterval(JSContext* aCx,
|
|||
}
|
||||
|
||||
int32_t
|
||||
WorkerGlobalScope::SetInterval(const nsAString& aHandler,
|
||||
WorkerGlobalScope::SetInterval(JSContext* /* unused */,
|
||||
const nsAString& aHandler,
|
||||
const Optional<int32_t>& aTimeout,
|
||||
const Sequence<JS::Value>& /* unused */,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
mWorkerPrivate->AssertIsOnWorkerThread();
|
||||
|
|
|
@ -88,7 +88,8 @@ public:
|
|||
SetTimeout(JSContext* aCx, Function& aHandler, const int32_t aTimeout,
|
||||
const Sequence<JS::Value>& aArguments, ErrorResult& aRv);
|
||||
int32_t
|
||||
SetTimeout(const nsAString& aHandler, const int32_t aTimeout,
|
||||
SetTimeout(JSContext* /* unused */, const nsAString& aHandler,
|
||||
const int32_t aTimeout, const Sequence<JS::Value>& /* unused */,
|
||||
ErrorResult& aRv);
|
||||
void
|
||||
ClearTimeout(int32_t aHandle, ErrorResult& aRv);
|
||||
|
@ -97,8 +98,9 @@ public:
|
|||
const Optional<int32_t>& aTimeout,
|
||||
const Sequence<JS::Value>& aArguments, ErrorResult& aRv);
|
||||
int32_t
|
||||
SetInterval(const nsAString& aHandler, const Optional<int32_t>& aTimeout,
|
||||
ErrorResult& aRv);
|
||||
SetInterval(JSContext* /* unused */, const nsAString& aHandler,
|
||||
const Optional<int32_t>& aTimeout,
|
||||
const Sequence<JS::Value>& /* unused */, ErrorResult& aRv);
|
||||
void
|
||||
ClearInterval(int32_t aHandle, ErrorResult& aRv);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче