Bug 1225188. Implement window.onstorage. r=smaug

This commit is contained in:
Boris Zbarsky 2015-11-17 18:09:53 -05:00
parent ae8bbc41bb
commit 5ebefa259c
12 changed files with 13 additions and 39 deletions

View File

@ -910,6 +910,7 @@ GK_ATOM(onstatechange, "onstatechange")
GK_ATOM(onstatuschanged, "onstatuschanged")
GK_ATOM(onstkcommand, "onstkcommand")
GK_ATOM(onstksessionend, "onstksessionend")
GK_ATOM(onstorage, "onstorage")
GK_ATOM(onstorageareachanged, "onstorageareachanged")
GK_ATOM(onsubmit, "onsubmit")
GK_ATOM(onsuccess, "onsuccess")

View File

@ -527,8 +527,10 @@ WINDOW_EVENT(popstate,
eBasicEventClass)
// Not supported yet
// WINDOW_EVENT(redo)
// Not supported yet
// WINDOW_EVENT(storage)
WINDOW_EVENT(storage,
eStorage,
EventNameType_HTMLBodyOrFramesetOnly,
eBasicEventClass)
// Not supported yet
// WINDOW_EVENT(undo)
WINDOW_EVENT(unload,

View File

@ -25,7 +25,6 @@
"Window attribute: onclose": true,
"Window attribute: oncuechange": true,
"Window attribute: onmousewheel": true,
"Window attribute: onstorage": true,
"Window unforgeable attribute: window": true,
"Window unforgeable attribute: document": true,
"Window unforgeable attribute: top": true

View File

@ -134,7 +134,7 @@ interface WindowEventHandlers {
attribute EventHandler onpagehide;
attribute EventHandler onpageshow;
attribute EventHandler onpopstate;
//(Not implemented)attribute EventHandler onstorage;
attribute EventHandler onstorage;
attribute EventHandler onunload;
};

View File

@ -12,6 +12,3 @@
[Window attribute: onmousewheel]
expected: FAIL
[Window attribute: onstorage]
expected: FAIL

View File

@ -724,12 +724,6 @@
[HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type (1)]
expected: FAIL
[HTMLBodyElement interface: attribute onstorage]
expected: FAIL
[HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type (17)]
expected: FAIL
[HTMLPreElement must be primary interface of document.createElement("listing")]
expected: FAIL
@ -2026,9 +2020,6 @@
[Window interface: attribute ontoggle]
expected: FAIL
[Window interface: attribute onstorage]
expected: FAIL
[Window interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long)]
expected: FAIL
@ -2059,9 +2050,6 @@
[Window interface: window must inherit property "ontoggle" with the proper type (98)]
expected: FAIL
[Window interface: window must inherit property "onstorage" with the proper type (112)]
expected: FAIL
[Window interface: calling createImageBitmap(ImageBitmapSource,long,long,long,long) on window with too few arguments must throw TypeError]
expected: FAIL
@ -2521,12 +2509,6 @@
[HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop" with the proper type (15)]
expected: FAIL
[HTMLFrameSetElement interface: attribute onstorage]
expected: FAIL
[HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type (13)]
expected: FAIL
[Document interface: iframe.contentDocument must inherit property "styleSheetSets" with the proper type (32)]
expected: FAIL

View File

@ -1,5 +0,0 @@
[event-handler-attributes-body-window.html]
type: testharness
[storage]
expected: FAIL

View File

@ -2,9 +2,3 @@
type: testharness
disabled:
if e10s: https://bugzilla.mozilla.org/show_bug.cgi?id=1205675
[localStorage mutations fire StorageEvents that are caught by the event listener specified as an attribute on the body.]
expected: FAIL
[sessionStorage mutations fire StorageEvents that are caught by the event listener specified as an attribute on the body.]
expected: FAIL

View File

@ -4,9 +4,9 @@ document.body.appendChild(iframe);
iframe.contentWindow.document.body.textContent = "Nothing to see here.";
storageEventList = new Array();
iframe.contentWindow.addEventListener("storage", function(e) {
iframe.contentWindow.onstorage = function(e) {
window.parent.storageEventList.push(e);
});
};
function runAfterNStorageEvents(callback, expectedNumEvents)
{

View File

@ -10,6 +10,9 @@ testStorages(function(storageString) {
function step0(msg)
{
iframe.onload = t.step_func(step1);
// Null out the existing handler eventTestHarness.js set up;
// otherwise this test won't be testing much of anything useful.
iframe.contentWindow.onstorage = null;
iframe.src = "resources/event_body_handler.html";
}

View File

@ -9,6 +9,6 @@ function handleStorageEvent(e) {
</script>
</head>
<body onstorage="handleStorageEvent(window.event);">
<body onstorage="handleStorageEvent(event);">
</body>
</html>

View File

@ -98,6 +98,7 @@ NS_EVENT_MESSAGE(eHashChange)
NS_EVENT_MESSAGE(eImageAbort)
NS_EVENT_MESSAGE(eLoadError)
NS_EVENT_MESSAGE(ePopState)
NS_EVENT_MESSAGE(eStorage)
NS_EVENT_MESSAGE(eBeforeUnload)
NS_EVENT_MESSAGE(eReadyStateChange)