[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
commit-queue at webkit.org
commit-queue at webkit.org
Wed Dec 22 16:12:46 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit b0010969fd8cd9ef4ef8441273ce53e9c4030ca0
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Nov 19 18:19:30 2010 +0000
2010-11-19 James Simonsen <simonjam at chromium.org>
Reviewed by Darin Fisher.
[Web Timing] Add unloadEventStart
https://bugs.webkit.org/show_bug.cgi?id=49101
* fast/dom/Window/window-properties-performance-expected.txt:
* fast/dom/script-tests/webtiming.js:
(checkTimingBeforeLoad):
(checkTimingWhileDeferred):
(checkWebTimingWhileAsync):
(checkWebTimingOnLoad):
(checkWebTimingAfterLoad):
* fast/dom/webtiming-document-open-expected.txt:
* fast/dom/webtiming-expected.txt:
* fast/dom/webtiming-navigate-within-document-expected.txt:
2010-11-19 James Simonsen <simonjam at chromium.org>
Reviewed by Darin Fisher.
[Web Timing] Add unloadEventStart
https://bugs.webkit.org/show_bug.cgi?id=49101
* loader/DocumentLoadTiming.h:
(WebCore::DocumentLoadTiming::DocumentLoadTiming):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopLoading): Use dispatchTimedEvent().
* page/DOMWindow.cpp:
(WebCore::DOMWindow::dispatchLoadEvent): Use dispatchTimedEvent().
(WebCore::DOMWindow::dispatchTimedEvent): Added.
* page/DOMWindow.h:
* page/Timing.cpp:
(WebCore::Timing::unloadEventStart):
* page/Timing.h:
* page/Timing.idl:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72415 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 3ba054f..f82201a 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,21 @@
+2010-11-19 James Simonsen <simonjam at chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [Web Timing] Add unloadEventStart
+ https://bugs.webkit.org/show_bug.cgi?id=49101
+
+ * fast/dom/Window/window-properties-performance-expected.txt:
+ * fast/dom/script-tests/webtiming.js:
+ (checkTimingBeforeLoad):
+ (checkTimingWhileDeferred):
+ (checkWebTimingWhileAsync):
+ (checkWebTimingOnLoad):
+ (checkWebTimingAfterLoad):
+ * fast/dom/webtiming-document-open-expected.txt:
+ * fast/dom/webtiming-expected.txt:
+ * fast/dom/webtiming-navigate-within-document-expected.txt:
+
2010-11-19 'Anton Muhin' <antonm at google.com>
Not reviewed, remove a suppression for svg/dom/svglist-exception-on-out-bounds-error.html
diff --git a/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt b/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt
index 8d2229d..e6ae84a 100644
--- a/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt
+++ b/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt
@@ -30,4 +30,5 @@ window.webkitPerformance.timing.requestStart [number]
window.webkitPerformance.timing.responseEnd [number]
window.webkitPerformance.timing.responseStart [number]
window.webkitPerformance.timing.unloadEventEnd [number]
+window.webkitPerformance.timing.unloadEventStart [number]
diff --git a/LayoutTests/fast/dom/script-tests/webtiming.js b/LayoutTests/fast/dom/script-tests/webtiming.js
index 5bd58fa..29d60a5 100644
--- a/LayoutTests/fast/dom/script-tests/webtiming.js
+++ b/LayoutTests/fast/dom/script-tests/webtiming.js
@@ -19,7 +19,8 @@ function checkTimingBeforeLoad()
{
shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
- shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventStart", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.unloadEventStart");
shouldBe("timing.redirectStart", "0");
shouldBe("timing.redirectEnd", "0");
@@ -51,7 +52,8 @@ function checkTimingWhileDeferred()
{
shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
- shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventStart", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.unloadEventStart");
shouldBe("timing.redirectStart", "0");
shouldBe("timing.redirectEnd", "0");
@@ -84,7 +86,8 @@ function checkTimingWhileDeferred()
function checkWebTimingOnDOMContentLoaded() {
shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
- shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventStart", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.unloadEventStart");
shouldBe("timing.redirectStart", "0");
shouldBe("timing.redirectEnd", "0");
@@ -123,7 +126,8 @@ function checkWebTimingWhileAsync()
{
shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
- shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventStart", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.unloadEventStart");
shouldBe("timing.redirectStart", "0");
shouldBe("timing.redirectEnd", "0");
@@ -157,7 +161,8 @@ function checkWebTimingOnLoad()
{
shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
- shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventStart", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.unloadEventStart");
shouldBe("timing.redirectStart", "0");
shouldBe("timing.redirectEnd", "0");
@@ -192,7 +197,8 @@ function checkWebTimingAfterLoad()
{
shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
- shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventStart", "timing.navigationStart");
+ shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.unloadEventStart");
shouldBe("timing.redirectStart", "0");
shouldBe("timing.redirectEnd", "0");
diff --git a/LayoutTests/fast/dom/webtiming-document-open-expected.txt b/LayoutTests/fast/dom/webtiming-document-open-expected.txt
index a7d6a6a..7080cf6 100644
--- a/LayoutTests/fast/dom/webtiming-document-open-expected.txt
+++ b/LayoutTests/fast/dom/webtiming-document-open-expected.txt
@@ -22,6 +22,7 @@ PASS timing.requestStart is originalTiming.requestStart
PASS timing.responseEnd is originalTiming.responseEnd
PASS timing.responseStart is originalTiming.responseStart
PASS timing.unloadEventEnd is originalTiming.unloadEventEnd
+PASS timing.unloadEventStart is originalTiming.unloadEventStart
PASS successfullyParsed is true
TEST COMPLETE
diff --git a/LayoutTests/fast/dom/webtiming-expected.txt b/LayoutTests/fast/dom/webtiming-expected.txt
index 09c580c..67799a9 100644
--- a/LayoutTests/fast/dom/webtiming-expected.txt
+++ b/LayoutTests/fast/dom/webtiming-expected.txt
@@ -4,7 +4,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
PASS timing.navigationStart is >= oneHourAgoUTC
-PASS timing.unloadEventEnd is >= timing.navigationStart
+PASS timing.unloadEventStart is >= timing.navigationStart
+PASS timing.unloadEventEnd is >= timing.unloadEventStart
PASS timing.redirectStart is 0
PASS timing.redirectEnd is 0
PASS navigation.redirectCount is 0
@@ -23,7 +24,8 @@ PASS timing.domComplete is 0
PASS timing.loadEventStart is 0
PASS timing.loadEventEnd is 0
PASS timing.navigationStart is >= oneHourAgoUTC
-PASS timing.unloadEventEnd is >= timing.navigationStart
+PASS timing.unloadEventStart is >= timing.navigationStart
+PASS timing.unloadEventEnd is >= timing.unloadEventStart
PASS timing.redirectStart is 0
PASS timing.redirectEnd is 0
PASS navigation.redirectCount is 0
@@ -42,7 +44,8 @@ PASS timing.domComplete is 0
PASS timing.loadEventStart is 0
PASS timing.loadEventEnd is 0
PASS timing.navigationStart is >= oneHourAgoUTC
-PASS timing.unloadEventEnd is >= timing.navigationStart
+PASS timing.unloadEventStart is >= timing.navigationStart
+PASS timing.unloadEventEnd is >= timing.unloadEventStart
PASS timing.redirectStart is 0
PASS timing.redirectEnd is 0
PASS navigation.redirectCount is 0
@@ -61,7 +64,8 @@ PASS timing.domComplete is 0
PASS timing.loadEventStart is 0
PASS timing.loadEventEnd is 0
PASS timing.navigationStart is >= oneHourAgoUTC
-PASS timing.unloadEventEnd is >= timing.navigationStart
+PASS timing.unloadEventStart is >= timing.navigationStart
+PASS timing.unloadEventEnd is >= timing.unloadEventStart
PASS timing.redirectStart is 0
PASS timing.redirectEnd is 0
PASS navigation.redirectCount is 0
@@ -80,7 +84,8 @@ PASS timing.domComplete is 0
PASS timing.loadEventStart is 0
PASS timing.loadEventEnd is 0
PASS timing.navigationStart is >= oneHourAgoUTC
-PASS timing.unloadEventEnd is >= timing.navigationStart
+PASS timing.unloadEventStart is >= timing.navigationStart
+PASS timing.unloadEventEnd is >= timing.unloadEventStart
PASS timing.redirectStart is 0
PASS timing.redirectEnd is 0
PASS navigation.redirectCount is 0
@@ -100,7 +105,8 @@ PASS timing.domComplete is >= timing.domContentLoadedEnd
PASS timing.loadEventStart is >= timing.responseEnd
PASS timing.loadEventEnd is 0
PASS timing.navigationStart is >= oneHourAgoUTC
-PASS timing.unloadEventEnd is >= timing.navigationStart
+PASS timing.unloadEventStart is >= timing.navigationStart
+PASS timing.unloadEventEnd is >= timing.unloadEventStart
PASS timing.redirectStart is 0
PASS timing.redirectEnd is 0
PASS navigation.redirectCount is 0
diff --git a/LayoutTests/fast/dom/webtiming-navigate-within-document-expected.txt b/LayoutTests/fast/dom/webtiming-navigate-within-document-expected.txt
index 34cf195..d49ea0f 100644
--- a/LayoutTests/fast/dom/webtiming-navigate-within-document-expected.txt
+++ b/LayoutTests/fast/dom/webtiming-navigate-within-document-expected.txt
@@ -22,6 +22,7 @@ PASS requestStart is unchanged.
PASS responseEnd is unchanged.
PASS responseStart is unchanged.
PASS unloadEventEnd is unchanged.
+PASS unloadEventStart is unchanged.
PASS successfullyParsed is true
TEST COMPLETE
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c364415..997d6bc 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,23 @@
+2010-11-19 James Simonsen <simonjam at chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [Web Timing] Add unloadEventStart
+ https://bugs.webkit.org/show_bug.cgi?id=49101
+
+ * loader/DocumentLoadTiming.h:
+ (WebCore::DocumentLoadTiming::DocumentLoadTiming):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading): Use dispatchTimedEvent().
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::dispatchLoadEvent): Use dispatchTimedEvent().
+ (WebCore::DOMWindow::dispatchTimedEvent): Added.
+ * page/DOMWindow.h:
+ * page/Timing.cpp:
+ (WebCore::Timing::unloadEventStart):
+ * page/Timing.h:
+ * page/Timing.idl:
+
2010-11-19 Martin Robinson <mrobinson at igalia.com>
Reviewed by Daniel Bates.
diff --git a/WebCore/loader/DocumentLoadTiming.h b/WebCore/loader/DocumentLoadTiming.h
index 2d4b0fa..368004b 100644
--- a/WebCore/loader/DocumentLoadTiming.h
+++ b/WebCore/loader/DocumentLoadTiming.h
@@ -31,6 +31,7 @@ namespace WebCore {
struct DocumentLoadTiming {
DocumentLoadTiming()
: navigationStart(0.0)
+ , unloadEventStart(0.0)
, unloadEventEnd(0.0)
, redirectStart(0.0)
, redirectEnd(0.0)
@@ -43,6 +44,7 @@ struct DocumentLoadTiming {
}
double navigationStart;
+ double unloadEventStart;
double unloadEventEnd;
double redirectStart;
double redirectEnd;
diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
index 768c8e3..ee07615 100644
--- a/WebCore/loader/FrameLoader.cpp
+++ b/WebCore/loader/FrameLoader.cpp
@@ -381,15 +381,16 @@ void FrameLoader::stopLoading(UnloadEventPolicy unloadEventPolicy, DatabasePolic
if (unloadEventPolicy == UnloadEventPolicyUnloadAndPageHide)
m_frame->domWindow()->dispatchEvent(PageTransitionEvent::create(eventNames().pagehideEvent, m_frame->document()->inPageCache()), m_frame->document());
if (!m_frame->document()->inPageCache()) {
- m_frame->domWindow()->dispatchEvent(Event::create(eventNames().unloadEvent, false, false), m_frame->domWindow()->document());
-
+ RefPtr<Event> unloadEvent(Event::create(eventNames().unloadEvent, false, false));
if (m_provisionalDocumentLoader) {
DocumentLoadTiming* timing = m_provisionalDocumentLoader->timing();
ASSERT(timing->navigationStart);
+ ASSERT(!timing->unloadEventStart);
ASSERT(!timing->unloadEventEnd);
- timing->unloadEventEnd = currentTime();
- ASSERT(timing->unloadEventEnd >= timing->navigationStart);
- }
+ m_frame->domWindow()->dispatchTimedEvent(unloadEvent, m_frame->domWindow()->document(), &timing->unloadEventStart, &timing->unloadEventEnd);
+ ASSERT(timing->unloadEventStart >= timing->navigationStart);
+ } else
+ m_frame->domWindow()->dispatchEvent(unloadEvent, m_frame->domWindow()->document());
}
}
m_pageDismissalEventBeingDispatched = false;
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index 1cf2a3a..b5337f9 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -1499,11 +1499,12 @@ bool DOMWindow::removeEventListener(const AtomicString& eventType, EventListener
void DOMWindow::dispatchLoadEvent()
{
- if (DocumentLoader* documentLoader = m_frame ? m_frame->loader()->documentLoader() : 0)
- documentLoader->timing()->loadEventStart = currentTime();
- dispatchEvent(Event::create(eventNames().loadEvent, false, false), document());
- if (DocumentLoader* documentLoader = m_frame ? m_frame->loader()->documentLoader() : 0)
- documentLoader->timing()->loadEventEnd = currentTime();
+ RefPtr<Event> loadEvent(Event::create(eventNames().loadEvent, false, false));
+ if (DocumentLoader* documentLoader = m_frame ? m_frame->loader()->documentLoader() : 0) {
+ DocumentLoadTiming* timing = documentLoader->timing();
+ dispatchTimedEvent(loadEvent, document(), &timing->loadEventStart, &timing->loadEventEnd);
+ } else
+ dispatchEvent(loadEvent, document());
// For load events, send a separate load event to the enclosing frame only.
// This is a DOM extension and is independent of bubbling/capturing rules of
@@ -1542,6 +1543,16 @@ bool DOMWindow::dispatchEvent(PassRefPtr<Event> prpEvent, PassRefPtr<EventTarget
return result;
}
+void DOMWindow::dispatchTimedEvent(PassRefPtr<Event> event, Document* target, double* startTime, double* endTime)
+{
+ ASSERT(startTime);
+ ASSERT(endTime);
+ *startTime = currentTime();
+ dispatchEvent(event, target);
+ *endTime = currentTime();
+ ASSERT(*endTime >= *startTime);
+}
+
void DOMWindow::removeAllEventListeners()
{
EventTarget::removeAllEventListeners();
diff --git a/WebCore/page/DOMWindow.h b/WebCore/page/DOMWindow.h
index d87a386..cb524a0 100644
--- a/WebCore/page/DOMWindow.h
+++ b/WebCore/page/DOMWindow.h
@@ -275,6 +275,7 @@ namespace WebCore {
using EventTarget::dispatchEvent;
bool dispatchEvent(PassRefPtr<Event> prpEvent, PassRefPtr<EventTarget> prpTarget);
void dispatchLoadEvent();
+ void dispatchTimedEvent(PassRefPtr<Event> event, Document* target, double* startTime, double* endTime);
DEFINE_ATTRIBUTE_EVENT_LISTENER(abort);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforeunload);
diff --git a/WebCore/page/PerformanceTiming.cpp b/WebCore/page/PerformanceTiming.cpp
index 4fc16da..82b7027 100644
--- a/WebCore/page/PerformanceTiming.cpp
+++ b/WebCore/page/PerformanceTiming.cpp
@@ -93,6 +93,15 @@ unsigned long long PerformanceTiming::navigationStart() const
return toIntegerMilliseconds(timing->navigationStart);
}
+unsigned long long PerformanceTiming::unloadEventStart() const
+{
+ DocumentLoadTiming* timing = documentLoadTiming();
+ if (!timing)
+ return 0;
+
+ return toIntegerMilliseconds(timing->unloadEventStart);
+}
+
unsigned long long PerformanceTiming::unloadEventEnd() const
{
DocumentLoadTiming* timing = documentLoadTiming();
diff --git a/WebCore/page/PerformanceTiming.h b/WebCore/page/PerformanceTiming.h
index 5124e2b..3b5e8b4 100644
--- a/WebCore/page/PerformanceTiming.h
+++ b/WebCore/page/PerformanceTiming.h
@@ -52,6 +52,7 @@ public:
void disconnectFrame();
unsigned long long navigationStart() const;
+ unsigned long long unloadEventStart() const;
unsigned long long unloadEventEnd() const;
unsigned long long redirectStart() const;
unsigned long long redirectEnd() const;
diff --git a/WebCore/page/PerformanceTiming.idl b/WebCore/page/PerformanceTiming.idl
index 49442b0..a13b8d7 100644
--- a/WebCore/page/PerformanceTiming.idl
+++ b/WebCore/page/PerformanceTiming.idl
@@ -33,6 +33,7 @@ module window {
// See: http://dev.w3.org/2006/webapi/WebTiming/
interface [Conditional=WEB_TIMING, OmitConstructor] PerformanceTiming {
readonly attribute unsigned long long navigationStart;
+ readonly attribute unsigned long long unloadEventStart;
readonly attribute unsigned long long unloadEventEnd;
readonly attribute unsigned long long redirectStart;
readonly attribute unsigned long long redirectEnd;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list