[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

tonyg at chromium.org tonyg at chromium.org
Wed Dec 22 11:10:51 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit bafab901c576c7a846e3f44a30a51eb4a294cfa4
Author: tonyg at chromium.org <tonyg at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jul 14 16:45:54 2010 +0000

    2010-07-14  Tony Gentilcore  <tonyg at chromium.org>
    
            Reviewed by Darin Fisher.
    
            Implement Web Timing redirectStart, redirectEnd, redirectCount
            https://bugs.webkit.org/show_bug.cgi?id=42018
    
            Tests pass with --web-timing. Expectations set to FAIL because disabled by default.
    
            * fast/dom/script-tests/webtiming.js: Since this is not a redirect, redirect times and count should be zero.
            (checkTimingBeforeLoad):
            (checkWebTimingOnLoad):
            (checkWebTimingAfterLoad):
            * fast/dom/webtiming-expected.txt:
            * fast/js/resources/js-test-pre.js:
            (shouldBeGreaterThanOrEqual): Factored out so that other tests can share this method.
            * http/tests/misc/resources/webtiming-one-redirect.html: Added.
            * http/tests/misc/resources/webtiming-two-redirects.html: Added.
            * http/tests/misc/webtiming-one-redirect-expected.txt: Added.
            * http/tests/misc/webtiming-one-redirect.php: Added.
            * http/tests/misc/webtiming-two-redirects-expected.txt: Added.
            * http/tests/misc/webtiming-two-redirects.php: Added.
    2010-07-14  Tony Gentilcore  <tonyg at chromium.org>
    
            Reviewed by Darin Fisher.
    
            Implement Web Timing redirectStart, redirectEnd, redirectCount
            https://bugs.webkit.org/show_bug.cgi?id=42018
    
            Tests: http/tests/misc/webtiming-one-redirect.php
                   http/tests/misc/webtiming-two-redirects.php
    
            * loader/FrameLoaderTypes.h:
            (WebCore::FrameLoadTimeline::FrameLoadTimeline):
            * loader/MainResourceLoader.cpp:
            (WebCore::MainResourceLoader::willSendRequest): This method is called for each request (including server redirects). fetchStart is updated to the current time on each invocation so that it represents fetching of the final document and doesn't include redirect time. For each redirect, redirectCount is incremented and redirectStart to redirectEnd measures the cumulative fetch time for all redirects.
            * page/Navigation.cpp:
            (WebCore::Navigation::redirectCount): http://dev.w3.org/2006/webapi/WebTiming/#nt-redirect-count
            * page/Timing.cpp:
            (WebCore::Timing::redirectStart): http://dev.w3.org/2006/webapi/WebTiming/#nt-redirect-start
            (WebCore::Timing::redirectEnd): http://dev.w3.org/2006/webapi/WebTiming/#nt-redirect-end
            * page/Timing.h:
            * page/Timing.idl:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index c20bbe3..cfc609c 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,26 @@
+2010-07-14  Tony Gentilcore  <tonyg at chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Implement Web Timing redirectStart, redirectEnd, redirectCount
+        https://bugs.webkit.org/show_bug.cgi?id=42018
+
+        Tests pass with --web-timing. Expectations set to FAIL because disabled by default.
+
+        * fast/dom/script-tests/webtiming.js: Since this is not a redirect, redirect times and count should be zero.
+        (checkTimingBeforeLoad):
+        (checkWebTimingOnLoad):
+        (checkWebTimingAfterLoad):
+        * fast/dom/webtiming-expected.txt:
+        * fast/js/resources/js-test-pre.js:
+        (shouldBeGreaterThanOrEqual): Factored out so that other tests can share this method.
+        * http/tests/misc/resources/webtiming-one-redirect.html: Added.
+        * http/tests/misc/resources/webtiming-two-redirects.html: Added.
+        * http/tests/misc/webtiming-one-redirect-expected.txt: Added.
+        * http/tests/misc/webtiming-one-redirect.php: Added.
+        * http/tests/misc/webtiming-two-redirects-expected.txt: Added.
+        * http/tests/misc/webtiming-two-redirects.php: Added.
+
 2010-07-14  Eric Carlson  <eric.carlson at apple.com>
 
         Reviewed by Darin Adler.
diff --git a/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt b/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt
index 6e8e9d7..63d269e 100644
--- a/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt
+++ b/LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt
@@ -458,6 +458,7 @@ PASS typeof Object.getOwnPropertyDescriptor(window, 'sessionStorage') is 'object
 PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBe') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBeEqualToString') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBeFalse') is 'object'
+PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBeGreaterThanOrEqual') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBeNaN') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBeNonNull') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'shouldBeNonZero') is 'object'
diff --git a/LayoutTests/fast/dom/script-tests/webtiming.js b/LayoutTests/fast/dom/script-tests/webtiming.js
index cd396ba..7ffe3f3 100644
--- a/LayoutTests/fast/dom/script-tests/webtiming.js
+++ b/LayoutTests/fast/dom/script-tests/webtiming.js
@@ -1,6 +1,7 @@
 description("This test checks that all of the <a href='http://dev.w3.org/2006/webapi/WebTiming/'>Web Timing</a> attributes are available and have reasonable values in the right order.");
 
 var performance = window.webkitPerformance || {};
+var navigation = performance.navigation || {};
 var timing = performance.timing || {};
 
 // Get the order of magnitude correct without a chance for flakiness.
@@ -14,34 +15,16 @@ function sleepFiftyMilliseconds() {
 }
 window.addEventListener("load", sleepFiftyMilliseconds, false);
 
-// FIXME: Move this to js-test-pre.js if it is needed by other tests.
-function shouldBeGreaterThanOrEqual(_a, _b) {
-    if (typeof _a != "string" || typeof _b != "string")
-        debug("WARN: shouldBeGreaterThanOrEqual expects string arguments");
-
-    var exception;
-    var _av;
-    try {
-        _av = eval(_a);
-    } catch (e) {
-        exception = e;
-    }
-    var _bv = eval(_b);
-
-    if (exception)
-        testFailed(_a + " should be >= " + _b + ". Threw exception " + exception);
-    else if (typeof _av == "undefined" || _av < _bv)
-        testFailed(_a + " should be >= " + _b + ". Was " + _av + " (of type " + typeof _av + ").");
-    else
-        testPassed(_a + " is >= " + _b);
-}
-
 function checkTimingBeforeLoad()
 {
     shouldBeGreaterThanOrEqual("timing.navigationStart", "oneHourAgoUTC");
 
     shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
 
+    shouldBe("timing.redirectStart", "0");
+    shouldBe("timing.redirectEnd", "0");
+    shouldBe("navigation.redirectCount", "0");
+
     shouldBeGreaterThanOrEqual("timing.fetchStart", "timing.navigationStart");
 
     shouldBe("timing.domainLookupStart", "0");
@@ -67,6 +50,10 @@ function checkWebTimingOnLoad()
 
     shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
 
+    shouldBe("timing.redirectStart", "0");
+    shouldBe("timing.redirectEnd", "0");
+    shouldBe("navigation.redirectCount", "0");
+
     shouldBeGreaterThanOrEqual("timing.fetchStart", "timing.navigationStart");
 
     shouldBe("timing.domainLookupStart", "0");
@@ -93,6 +80,10 @@ function checkWebTimingAfterLoad()
 
     shouldBeGreaterThanOrEqual("timing.unloadEventEnd", "timing.navigationStart");
 
+    shouldBe("timing.redirectStart", "0");
+    shouldBe("timing.redirectEnd", "0");
+    shouldBe("navigation.redirectCount", "0");
+
     shouldBeGreaterThanOrEqual("timing.fetchStart", "timing.navigationStart");
 
     shouldBe("timing.domainLookupStart", "0");
diff --git a/LayoutTests/fast/dom/webtiming-expected.txt b/LayoutTests/fast/dom/webtiming-expected.txt
index 17ec659..b97e3b7 100644
--- a/LayoutTests/fast/dom/webtiming-expected.txt
+++ b/LayoutTests/fast/dom/webtiming-expected.txt
@@ -5,6 +5,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 FAIL timing.navigationStart should be >= oneHourAgoUTC. Was undefined (of type undefined).
 FAIL timing.unloadEventEnd should be >= timing.navigationStart. Was undefined (of type undefined).
+FAIL timing.redirectStart should be 0 (of type number). Was undefined (of type undefined).
+FAIL timing.redirectEnd should be 0 (of type number). Was undefined (of type undefined).
+FAIL navigation.redirectCount should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.fetchStart should be >= timing.navigationStart. Was undefined (of type undefined).
 FAIL timing.domainLookupStart should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.domainLookupEnd should be 0 (of type number). Was undefined (of type undefined).
@@ -17,6 +20,9 @@ FAIL timing.loadEventStart should be 0 (of type number). Was undefined (of type
 FAIL timing.loadEventEnd should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.navigationStart should be >= oneHourAgoUTC. Was undefined (of type undefined).
 FAIL timing.unloadEventEnd should be >= timing.navigationStart. Was undefined (of type undefined).
+FAIL timing.redirectStart should be 0 (of type number). Was undefined (of type undefined).
+FAIL timing.redirectEnd should be 0 (of type number). Was undefined (of type undefined).
+FAIL navigation.redirectCount should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.fetchStart should be >= timing.navigationStart. Was undefined (of type undefined).
 FAIL timing.domainLookupStart should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.domainLookupEnd should be 0 (of type number). Was undefined (of type undefined).
@@ -30,6 +36,9 @@ FAIL timing.loadEventStart should be >= timing.responseEnd. Was undefined (of ty
 FAIL timing.loadEventEnd should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.navigationStart should be >= oneHourAgoUTC. Was undefined (of type undefined).
 FAIL timing.unloadEventEnd should be >= timing.navigationStart. Was undefined (of type undefined).
+FAIL timing.redirectStart should be 0 (of type number). Was undefined (of type undefined).
+FAIL timing.redirectEnd should be 0 (of type number). Was undefined (of type undefined).
+FAIL navigation.redirectCount should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.fetchStart should be >= timing.navigationStart. Was undefined (of type undefined).
 FAIL timing.domainLookupStart should be 0 (of type number). Was undefined (of type undefined).
 FAIL timing.domainLookupEnd should be 0 (of type number). Was undefined (of type undefined).
diff --git a/LayoutTests/fast/js/resources/js-test-pre.js b/LayoutTests/fast/js/resources/js-test-pre.js
index 6647798..a4cc1f4 100644
--- a/LayoutTests/fast/js/resources/js-test-pre.js
+++ b/LayoutTests/fast/js/resources/js-test-pre.js
@@ -218,6 +218,26 @@ function shouldBeUndefined(_a)
     testFailed(_a + " should be undefined. Was " + _av);
 }
 
+function shouldBeGreaterThanOrEqual(_a, _b) {
+    if (typeof _a != "string" || typeof _b != "string")
+        debug("WARN: shouldBeGreaterThanOrEqual expects string arguments");
+
+    var exception;
+    var _av;
+    try {
+        _av = eval(_a);
+    } catch (e) {
+        exception = e;
+    }
+    var _bv = eval(_b);
+
+    if (exception)
+        testFailed(_a + " should be >= " + _b + ". Threw exception " + exception);
+    else if (typeof _av == "undefined" || _av < _bv)
+        testFailed(_a + " should be >= " + _b + ". Was " + _av + " (of type " + typeof _av + ").");
+    else
+        testPassed(_a + " is >= " + _b);
+}
 
 function shouldThrow(_a, _e)
 {
diff --git a/LayoutTests/http/tests/misc/resources/webtiming-one-redirect.html b/LayoutTests/http/tests/misc/resources/webtiming-one-redirect.html
new file mode 100644
index 0000000..2dfd807
--- /dev/null
+++ b/LayoutTests/http/tests/misc/resources/webtiming-one-redirect.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../js-test-resources/js-test-style.css">
+<script src="../../js-test-resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script>
+description("This test checks that Web Timing reports redirectCount correctly and has reasonable values for redirectStart and redirectCount.");
+
+var performance = window.webkitPerformance || {};
+var navigation = performance.navigation || {};
+var timing = performance.timing || {};
+
+shouldBeGreaterThanOrEqual("timing.redirectStart", "timing.navigationStart");
+shouldBeGreaterThanOrEqual("timing.redirectEnd", "timing.redirectStart");
+shouldBe("navigation.redirectCount", "1");
+
+var successfullyParsed = true;
+</script>
+<script src="../../js-test-resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/http/tests/misc/resources/webtiming-two-redirects.html b/LayoutTests/http/tests/misc/resources/webtiming-two-redirects.html
new file mode 100644
index 0000000..e4bfa04
--- /dev/null
+++ b/LayoutTests/http/tests/misc/resources/webtiming-two-redirects.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../js-test-resources/js-test-style.css">
+<script src="../../js-test-resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script>
+description("This test checks that Web Timing reports redirectCount correctly and has reasonable values for redirectStart and redirectCount.");
+
+var performance = window.webkitPerformance || {};
+var navigation = performance.navigation || {};
+var timing = performance.timing || {};
+
+shouldBeGreaterThanOrEqual("timing.redirectStart", "timing.navigationStart");
+shouldBeGreaterThanOrEqual("timing.redirectEnd", "timing.redirectStart");
+shouldBe("navigation.redirectCount", "2");
+
+var successfullyParsed = true;
+</script>
+<script src="../../js-test-resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/http/tests/misc/webtiming-one-redirect-expected.txt b/LayoutTests/http/tests/misc/webtiming-one-redirect-expected.txt
new file mode 100644
index 0000000..45db899
--- /dev/null
+++ b/LayoutTests/http/tests/misc/webtiming-one-redirect-expected.txt
@@ -0,0 +1,12 @@
+This test checks that Web Timing reports redirectCount correctly and has reasonable values for redirectStart and redirectCount.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+FAIL timing.redirectStart should be >= timing.navigationStart. Was undefined (of type undefined).
+FAIL timing.redirectEnd should be >= timing.redirectStart. Was undefined (of type undefined).
+FAIL navigation.redirectCount should be 1 (of type number). Was undefined (of type undefined).
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/http/tests/misc/webtiming-one-redirect.php b/LayoutTests/http/tests/misc/webtiming-one-redirect.php
new file mode 100644
index 0000000..6e3931c
--- /dev/null
+++ b/LayoutTests/http/tests/misc/webtiming-one-redirect.php
@@ -0,0 +1,4 @@
+<?php
+  header('Location: resources/webtiming-one-redirect.html');
+  header('HTTP/1.0 302 Found');
+?>
diff --git a/LayoutTests/http/tests/misc/webtiming-two-redirects-expected.txt b/LayoutTests/http/tests/misc/webtiming-two-redirects-expected.txt
new file mode 100644
index 0000000..bdc41e6
--- /dev/null
+++ b/LayoutTests/http/tests/misc/webtiming-two-redirects-expected.txt
@@ -0,0 +1,12 @@
+This test checks that Web Timing reports redirectCount correctly and has reasonable values for redirectStart and redirectCount.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+FAIL timing.redirectStart should be >= timing.navigationStart. Was undefined (of type undefined).
+FAIL timing.redirectEnd should be >= timing.redirectStart. Was undefined (of type undefined).
+FAIL navigation.redirectCount should be 2 (of type number). Was undefined (of type undefined).
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/http/tests/misc/webtiming-two-redirects.php b/LayoutTests/http/tests/misc/webtiming-two-redirects.php
new file mode 100644
index 0000000..8df6bac
--- /dev/null
+++ b/LayoutTests/http/tests/misc/webtiming-two-redirects.php
@@ -0,0 +1,4 @@
+<?php
+  header('Location: ../resources/redirect.php?url=../misc/resources/webtiming-two-redirects.html');
+  header('HTTP/1.0 302 Found');
+?>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c5d3f6e..90092de 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,25 @@
+2010-07-14  Tony Gentilcore  <tonyg at chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Implement Web Timing redirectStart, redirectEnd, redirectCount
+        https://bugs.webkit.org/show_bug.cgi?id=42018
+
+        Tests: http/tests/misc/webtiming-one-redirect.php
+               http/tests/misc/webtiming-two-redirects.php
+
+        * loader/FrameLoaderTypes.h:
+        (WebCore::FrameLoadTimeline::FrameLoadTimeline):
+        * loader/MainResourceLoader.cpp:
+        (WebCore::MainResourceLoader::willSendRequest): This method is called for each request (including server redirects). fetchStart is updated to the current time on each invocation so that it represents fetching of the final document and doesn't include redirect time. For each redirect, redirectCount is incremented and redirectStart to redirectEnd measures the cumulative fetch time for all redirects.
+        * page/Navigation.cpp:
+        (WebCore::Navigation::redirectCount): http://dev.w3.org/2006/webapi/WebTiming/#nt-redirect-count
+        * page/Timing.cpp:
+        (WebCore::Timing::redirectStart): http://dev.w3.org/2006/webapi/WebTiming/#nt-redirect-start
+        (WebCore::Timing::redirectEnd): http://dev.w3.org/2006/webapi/WebTiming/#nt-redirect-end
+        * page/Timing.h:
+        * page/Timing.idl:
+
 2010-07-14  Lucas De Marchi  <lucas.demarchi at profusion.mobi>
 
         Reviewed by Antonio Gomes.
diff --git a/WebCore/loader/FrameLoaderTypes.h b/WebCore/loader/FrameLoaderTypes.h
index 1ed2353..ae671ce 100644
--- a/WebCore/loader/FrameLoaderTypes.h
+++ b/WebCore/loader/FrameLoaderTypes.h
@@ -60,19 +60,26 @@ namespace WebCore {
         FrameLoadTypeBackWMLDeckNotAccessible
     };
 
+    // FIXME: Move this to a new header file.
     struct FrameLoadTimeline {
         FrameLoadTimeline()
-            : navigationStart(0)
-            , unloadEventEnd(0)
-            , fetchStart(0)
-            , responseEnd(0)
-            , loadEventStart(0)
-            , loadEventEnd(0)
+            : navigationStart(0.0)
+            , unloadEventEnd(0.0)
+            , redirectStart(0.0)
+            , redirectEnd(0.0)
+            , redirectCount(0)
+            , fetchStart(0.0)
+            , responseEnd(0.0)
+            , loadEventStart(0.0)
+            , loadEventEnd(0.0)
         {
         }
 
         double navigationStart;
         double unloadEventEnd;
+        double redirectStart;
+        double redirectEnd;
+        short redirectCount;
         double fetchStart;
         double responseEnd;
         double loadEventStart;
diff --git a/WebCore/loader/MainResourceLoader.cpp b/WebCore/loader/MainResourceLoader.cpp
index 1dde81c..97f7895 100644
--- a/WebCore/loader/MainResourceLoader.cpp
+++ b/WebCore/loader/MainResourceLoader.cpp
@@ -158,8 +158,15 @@ void MainResourceLoader::willSendRequest(ResourceRequest& newRequest, const Reso
     // The additional processing can do anything including possibly removing the last
     // reference to this object; one example of this is 3266216.
     RefPtr<MainResourceLoader> protect(this);
-    
-    frameLoader()->frameLoadTimeline()->fetchStart = currentTime();
+
+    FrameLoadTimeline* frameLoadTimeline = frameLoader()->frameLoadTimeline();
+    double fetchTime = currentTime();
+    if (double fetchStart = frameLoadTimeline->fetchStart) {
+        if (!frameLoadTimeline->redirectCount++)
+            frameLoadTimeline->redirectStart = fetchStart;
+        frameLoadTimeline->redirectEnd = fetchTime;
+    }
+    frameLoadTimeline->fetchStart = fetchTime;
 
     // Update cookie policy base URL as URL changes, except for subframes, which use the
     // URL of the main frame which doesn't change when we redirect.
diff --git a/WebCore/page/Navigation.cpp b/WebCore/page/Navigation.cpp
index efda924..114e69f 100644
--- a/WebCore/page/Navigation.cpp
+++ b/WebCore/page/Navigation.cpp
@@ -79,7 +79,7 @@ unsigned short Navigation::redirectCount() const
     if (!m_frame)
         return 0;
 
-    return 0; // FIXME
+    return m_frame->loader()->frameLoadTimeline()->redirectCount;
 }
 
 } // namespace WebCore
diff --git a/WebCore/page/Timing.cpp b/WebCore/page/Timing.cpp
index 2ef4450..54a4cc9 100644
--- a/WebCore/page/Timing.cpp
+++ b/WebCore/page/Timing.cpp
@@ -70,6 +70,22 @@ unsigned long long Timing::unloadEventEnd() const
 
     return toIntegerMilliseconds(m_frame->loader()->frameLoadTimeline()->unloadEventEnd);
 }
+    
+unsigned long long Timing::redirectStart() const
+{
+    if (!m_frame)
+        return 0;
+        
+    return toIntegerMilliseconds(m_frame->loader()->frameLoadTimeline()->redirectStart);
+}
+    
+unsigned long long Timing::redirectEnd() const
+{
+    if (!m_frame)
+        return 0;
+        
+    return toIntegerMilliseconds(m_frame->loader()->frameLoadTimeline()->redirectEnd);
+}
 
 unsigned long long Timing::fetchStart() const
 {
diff --git a/WebCore/page/Timing.h b/WebCore/page/Timing.h
index cdc9b0d..93a3804 100644
--- a/WebCore/page/Timing.h
+++ b/WebCore/page/Timing.h
@@ -50,6 +50,8 @@ public:
 
     unsigned long long navigationStart() const;
     unsigned long long unloadEventEnd() const;
+    unsigned long long redirectStart() const;
+    unsigned long long redirectEnd() const;
     unsigned long long fetchStart() const;
     unsigned long long domainLookupStart() const;
     unsigned long long domainLookupEnd() const;
diff --git a/WebCore/page/Timing.idl b/WebCore/page/Timing.idl
index 58822e0..e7e46cc 100644
--- a/WebCore/page/Timing.idl
+++ b/WebCore/page/Timing.idl
@@ -32,11 +32,10 @@ module window {
 
     // See: http://dev.w3.org/2006/webapi/WebTiming/
     interface [Conditional=WEB_TIMING, OmitConstructor] Timing {
-        // FIXME: Implement remainder of interface.
         readonly attribute unsigned long long navigationStart;
         readonly attribute unsigned long long unloadEventEnd;
-        // readonly attribute unsigned long long redirectStart;
-        // readonly attribute unsigned long long redirectEnd;
+        readonly attribute unsigned long long redirectStart;
+        readonly attribute unsigned long long redirectEnd;
         readonly attribute unsigned long long fetchStart;
         readonly attribute unsigned long long domainLookupStart;
         readonly attribute unsigned long long domainLookupEnd;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list