Title: [115796] trunk
Revision
115796
Author
[email protected]
Date
2012-05-01 22:54:44 -0700 (Tue, 01 May 2012)

Log Message

Add <iframe seamless> navigation code (and pass all the navigation tests)
https://bugs.webkit.org/show_bug.cgi?id=85340

Reviewed by Adam Barth.

Source/WebCore:

This code was primarily written by Adam Barth and then submitted to my
GitHub branch via a pull request:
https://github.com/eseidel/webkit/compare/master...seamless
https://github.com/eseidel/webkit/pull/2
https://github.com/eseidel/webkit/pull/3

I rewrote parts of it to use Docment::shouldDisplaySeamlesslyWithParent.

Other parts of the original change have already been committed to WebKit by Adam
as part of prep-work for making the loader seamless-ready.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::findFrameForNavigation):

LayoutTests:

Update results now that we pass all the navigation tests.

* fast/frames/seamless/seamless-form-get-expected.txt:
* fast/frames/seamless/seamless-form-get-named-expected.txt:
* fast/frames/seamless/seamless-form-post-expected.txt:
* fast/frames/seamless/seamless-form-post-named-expected.txt:
* fast/frames/seamless/seamless-hyperlink-expected.txt:
* fast/frames/seamless/seamless-hyperlink-named-expected.txt:
* fast/frames/seamless/seamless-window-location-expected.txt:
* fast/frames/seamless/seamless-window-location-href-expected.txt:
* fast/frames/seamless/seamless-window-location-sandbox-expected.txt:
* fast/frames/seamless/seamless-window-open-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (115795 => 115796)


--- trunk/LayoutTests/ChangeLog	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/ChangeLog	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,3 +1,23 @@
+2012-05-01  Eric Seidel  <[email protected]>
+
+        Add <iframe seamless> navigation code (and pass all the navigation tests)
+        https://bugs.webkit.org/show_bug.cgi?id=85340
+
+        Reviewed by Adam Barth.
+
+        Update results now that we pass all the navigation tests.
+
+        * fast/frames/seamless/seamless-form-get-expected.txt:
+        * fast/frames/seamless/seamless-form-get-named-expected.txt:
+        * fast/frames/seamless/seamless-form-post-expected.txt:
+        * fast/frames/seamless/seamless-form-post-named-expected.txt:
+        * fast/frames/seamless/seamless-hyperlink-expected.txt:
+        * fast/frames/seamless/seamless-hyperlink-named-expected.txt:
+        * fast/frames/seamless/seamless-window-location-expected.txt:
+        * fast/frames/seamless/seamless-window-location-href-expected.txt:
+        * fast/frames/seamless/seamless-window-location-sandbox-expected.txt:
+        * fast/frames/seamless/seamless-window-open-expected.txt:
+
 2012-05-01  Kent Tamura  <[email protected]>
 
         [Chromium] Move date-input-visible-strings-expected.txt to the correct place.

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-form-get-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-form-get-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-form-get-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,10 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-        window._onload_=function() {
-            frames[0].document.getElementsByTagName('form')[0].submit();
-        }
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-form-get-named-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-form-get-named-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-form-get-named-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,10 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-        window._onload_=function() {
-            frames[0].document.getElementsByTagName('form')[0].submit();
-        }
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-form-post-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-form-post-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-form-post-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,10 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-        window._onload_=function() {
-            frames[0].document.getElementsByTagName('form')[0].submit();
-        }
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-form-post-named-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-form-post-named-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-form-post-named-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,10 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-        window._onload_=function() {
-            frames[0].document.getElementsByTagName('form')[0].submit();
-        }
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-hyperlink-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-hyperlink-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-hyperlink-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,10 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-        window._onload_ = function() {
-            frames[0].document.getElementsByTagName('a')[0].click();
-        }
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-hyperlink-named-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-hyperlink-named-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-hyperlink-named-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,10 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-        window._onload_=function() {
-            frames[0].document.getElementsByTagName('a')[0].click();
-        }
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-window-location-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-window-location-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-window-location-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,6 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-window-location-href-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-window-location-href-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-window-location-href-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,6 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-window-location-sandbox-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-window-location-sandbox-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-window-location-sandbox-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,3 +1,5 @@
+CONSOLE MESSAGE: Unsafe _javascript_ attempt to initiate a navigation change for frame with URL about:srcdoc from frame with URL about:srcdoc.
+
 This test should not cause any navigation. 
 
 --------
@@ -8,4 +10,4 @@
 --------
 Frame: '<!--framePath //<!--frame0-->/<!--frame0-->-->'
 --------
-
+PASS

Modified: trunk/LayoutTests/fast/frames/seamless/seamless-window-open-expected.txt (115795 => 115796)


--- trunk/LayoutTests/fast/frames/seamless/seamless-window-open-expected.txt	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/LayoutTests/fast/frames/seamless/seamless-window-open-expected.txt	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,6 +1,2 @@
-FAIL frames[0].document.body.textContent should be DONE
-. Was Waiting...
-    
-    
-.
+PASS frames[0].document.body.textContent is "DONE\n"
 

Modified: trunk/Source/WebCore/ChangeLog (115795 => 115796)


--- trunk/Source/WebCore/ChangeLog	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/Source/WebCore/ChangeLog	2012-05-02 05:54:44 UTC (rev 115796)
@@ -1,3 +1,24 @@
+2012-05-01  Eric Seidel  <[email protected]>
+
+        Add <iframe seamless> navigation code (and pass all the navigation tests)
+        https://bugs.webkit.org/show_bug.cgi?id=85340
+
+        Reviewed by Adam Barth.
+
+        This code was primarily written by Adam Barth and then submitted to my
+        GitHub branch via a pull request:
+        https://github.com/eseidel/webkit/compare/master...seamless
+        https://github.com/eseidel/webkit/pull/2
+        https://github.com/eseidel/webkit/pull/3
+
+        I rewrote parts of it to use Docment::shouldDisplaySeamlesslyWithParent.
+
+        Other parts of the original change have already been committed to WebKit by Adam
+        as part of prep-work for making the loader seamless-ready.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::findFrameForNavigation):
+
 2012-05-01  Vincent Scheib  <[email protected]>
 
         Fullscreen pop-up logic restored to using processingUserGesture.

Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (115795 => 115796)


--- trunk/Source/WebCore/loader/FrameLoader.cpp	2012-05-02 05:12:58 UTC (rev 115795)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp	2012-05-02 05:54:44 UTC (rev 115796)
@@ -2921,6 +2921,25 @@
 {
     Frame* frame = m_frame->tree()->find(name);
 
+    // From http://www.whatwg.org/specs/web-apps/current-work/#seamlessLinks:
+    //
+    // If the source browsing context is the same as the browsing context
+    // being navigated, and this browsing context has its seamless browsing
+    // context flag set, and the browsing context being navigated was not
+    // chosen using an explicit self-navigation override, then find the
+    // nearest ancestor browsing context that does not have its seamless
+    // browsing context flag set, and continue these steps as if that
+    // browsing context was the one that was going to be navigated instead.
+    if (frame == m_frame && name != "_self" && m_frame->document()->shouldDisplaySeamlesslyWithParent()) {
+        for (Frame* ancestor = m_frame; ancestor; ancestor = ancestor->tree()->parent(true)) {
+            if (!ancestor->document()->shouldDisplaySeamlesslyWithParent()) {
+                frame = ancestor;
+                break;
+            }
+        }
+        ASSERT(frame != m_frame);
+    }
+
     if (activeDocument) {
         if (!activeDocument->canNavigate(frame))
             return 0;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to