mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 03:24:47 +00:00
mshtml: Implement performance.timing.unloadEventStart & unloadEventEnd.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
This commit is contained in:
parent
5db7d0d0ea
commit
020a020df1
|
@ -4125,6 +4125,9 @@ HRESULT create_outer_window(GeckoBrowser *browser, mozIDOMWindowProxy *mozwindow
|
|||
return hres;
|
||||
}
|
||||
|
||||
/* Initial empty doc does not have unload events or timings */
|
||||
window->base.inner_window->doc->unload_sent = TRUE;
|
||||
|
||||
if(parent) {
|
||||
IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
|
||||
|
||||
|
|
|
@ -510,6 +510,8 @@ typedef struct {
|
|||
LONG ref;
|
||||
|
||||
ULONGLONG navigation_start_time;
|
||||
ULONGLONG unload_event_start_time;
|
||||
ULONGLONG unload_event_end_time;
|
||||
ULONGLONG redirect_time;
|
||||
} HTMLPerformanceTiming;
|
||||
|
||||
|
|
|
@ -384,6 +384,7 @@ static nsresult NSAPI handle_unload(nsIDOMEventListener *iface, nsIDOMEvent *nse
|
|||
{
|
||||
nsEventListener *This = impl_from_nsIDOMEventListener(iface);
|
||||
HTMLDocumentNode *doc = This->This->doc;
|
||||
HTMLPerformanceTiming *timing = NULL;
|
||||
HTMLInnerWindow *window;
|
||||
DOMEvent *event;
|
||||
HRESULT hres;
|
||||
|
@ -392,12 +393,21 @@ static nsresult NSAPI handle_unload(nsIDOMEventListener *iface, nsIDOMEvent *nse
|
|||
return NS_OK;
|
||||
doc->unload_sent = TRUE;
|
||||
|
||||
if(window->base.outer_window->pending_window)
|
||||
timing = window->base.outer_window->pending_window->performance_timing;
|
||||
|
||||
if(timing)
|
||||
timing->unload_event_start_time = get_time_stamp();
|
||||
|
||||
hres = create_event_from_nsevent(nsevent, dispex_compat_mode(&doc->node.event_target.dispex), &event);
|
||||
if(SUCCEEDED(hres)) {
|
||||
dispatch_event(&window->event_target, event);
|
||||
IDOMEvent_Release(&event->IDOMEvent_iface);
|
||||
}
|
||||
|
||||
if(timing)
|
||||
timing->unload_event_end_time = get_time_stamp();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -1601,9 +1601,9 @@ static HRESULT WINAPI HTMLPerformanceTiming_get_unloadEventStart(IHTMLPerformanc
|
|||
{
|
||||
HTMLPerformanceTiming *This = impl_from_IHTMLPerformanceTiming(iface);
|
||||
|
||||
FIXME("(%p)->(%p) returning fake value\n", This, p);
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
*p = TIMING_FAKE_TIMESTAMP;
|
||||
*p = This->unload_event_start_time;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -1611,9 +1611,9 @@ static HRESULT WINAPI HTMLPerformanceTiming_get_unloadEventEnd(IHTMLPerformanceT
|
|||
{
|
||||
HTMLPerformanceTiming *This = impl_from_IHTMLPerformanceTiming(iface);
|
||||
|
||||
FIXME("(%p)->(%p) returning fake value\n", This, p);
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
*p = TIMING_FAKE_TIMESTAMP;
|
||||
*p = This->unload_event_end_time;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ var compat_version;
|
|||
var tests = [];
|
||||
|
||||
ok(performance.timing.navigationStart > 0, "navigationStart <= 0");
|
||||
ok(performance.timing.unloadEventStart === 0, "unloadEventStart != 0");
|
||||
ok(performance.timing.unloadEventEnd === 0, "unloadEventEnd != 0");
|
||||
ok(performance.timing.redirectStart === 0, "redirectStart != 0");
|
||||
|
||||
var pageshow_fired = false, pagehide_fired = false;
|
||||
|
|
Loading…
Reference in a new issue