Regression(r191652): Colloquy doesn’t render any chat content
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 4 Nov 2015 08:10:09 +0000 (08:10 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 4 Nov 2015 08:10:09 +0000 (08:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=150861
<rdar://problem/23381007>

Reviewed by Antti Koivisto.

Source/WebCore:

Do a partial revert of r191652 as this web-exposed behavior change
broke Colloquy app. This only reverts the code change, the tests
are left as is so that they don't rely of the frame ID setting the
Window name.

* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::parseAttribute):
(WebCore::HTMLFrameElementBase::setNameAndOpenURL):

LayoutTests:

Update / rebaseline a couple of tests as this patch restores the
pre-r191652 behavior.

* fast/dom/Window/window-special-properties-expected.txt:
* fast/frames/iframe-no-name-expected.txt:
* fast/frames/iframe-no-name.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@192016 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/dom/Window/window-special-properties-expected.txt
LayoutTests/fast/frames/iframe-no-name-expected.txt
LayoutTests/fast/frames/iframe-no-name.html
Source/WebCore/ChangeLog
Source/WebCore/html/HTMLFrameElementBase.cpp

index ba40b6b37b83e36ea7e37468397bf742131d3f2f..039d68afffbd648f80818123c196ebbffb58e7d6 100644 (file)
@@ -1,3 +1,18 @@
+2015-11-04  Chris Dumez  <cdumez@apple.com>
+
+        Regression(r191652): Colloquy doesn’t render any chat content
+        https://bugs.webkit.org/show_bug.cgi?id=150861
+        <rdar://problem/23381007>
+
+        Reviewed by Antti Koivisto.
+
+        Update / rebaseline a couple of tests as this patch restores the
+        pre-r191652 behavior.
+
+        * fast/dom/Window/window-special-properties-expected.txt:
+        * fast/frames/iframe-no-name-expected.txt:
+        * fast/frames/iframe-no-name.html:
+
 2015-11-03  Brady Eidson  <beidson@apple.com>
 
         Modern IDB: Fill out IDBIndex, create MemoryIndex in backing store.
index b0ff6a83edf169284f46c8a495d6b071b2ec175c..4bbe4b972683c614f36cd5de51e3617274a44ede 100644 (file)
@@ -42,8 +42,8 @@ Embed by id/name mixed: collection(4) EMBED(id) EMBED(name) EMBED(name) EMBED(id
 Nonexistent iframe name: undefined
 Iframe by name (unique): single WINDOW
 Iframe by name (multiple): single WINDOW
-Iframe by id (unique): single IFRAME(id)
-Iframe by id (multiple): collection(2) IFRAME(id) IFRAME(id)
+Iframe by id (unique): single WINDOW
+Iframe by id (multiple): single WINDOW
 Iframe by id/name mixed: single WINDOW
 
 Nonexistent span name: undefined
@@ -53,7 +53,7 @@ Span by id (unique): single SPAN(id)
 Span by id (multiple): collection(2) SPAN(id) SPAN(id)
 Span by id/name mixed: collection(2) SPAN(id) SPAN(id)
 
-Mixed by id: collection(7) IMG(id) FORM(id) APPLET(id) EMBED(id) OBJECT(id) IFRAME(id) SPAN(id)
+Mixed by id: single WINDOW
 Mixed by name: single WINDOW
 Mixed by id (no iframe): collection(6) IMG(id) FORM(id) APPLET(id) EMBED(id) OBJECT(id) SPAN(id)
 Mixed by name (no iframe): collection(5) IMG(name) FORM(name) APPLET(name) EMBED(name) OBJECT(name)
index 33c066fb0620ad97a7fec735fd7ad9b8409cb2d5..45a3a33260fb8245d247700cc2b1970fbb447b93 100644 (file)
@@ -3,10 +3,11 @@ Checks that the id of an iframe does not set the contentWindow's name if the ifr
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS frames[0].name is ""
+PASS frames[0].name is "id"
 PASS frames[1].name is "name"
 PASS frames[2].name is "name"
+PASS frames[3].name is "name"
 PASS successfullyParsed is true
 
 TEST COMPLETE
-  
+   
index db506c4764af2c253ff45a0c01ef1f5b4f80c9b4..5692dee6ca4ba6ca0c59f488b60acfd7e1da84a9 100644 (file)
@@ -8,11 +8,13 @@
 <iframe id="id"></iframe>
 <iframe name="name"></iframe>
 <iframe id="id" name="name"></iframe>
+<iframe name="name" id="id"></iframe>
 <script>
 description("Checks that the id of an iframe does not set the contentWindow's name if the iframe's name is not set.");
-shouldBeEqualToString("frames[0].name", "");
+shouldBeEqualToString("frames[0].name", "id");
 shouldBeEqualToString("frames[1].name", "name");
 shouldBeEqualToString("frames[2].name", "name");
+shouldBeEqualToString("frames[3].name", "name");
 </script>
 </body>
 </html>
index 233471291d61b9c8e23d77b6552c3b3fcebe619c..77e0464867e0b835194be6dd0c56462affe75c3a 100644 (file)
@@ -1,3 +1,20 @@
+2015-11-04  Chris Dumez  <cdumez@apple.com>
+
+        Regression(r191652): Colloquy doesn’t render any chat content
+        https://bugs.webkit.org/show_bug.cgi?id=150861
+        <rdar://problem/23381007>
+
+        Reviewed by Antti Koivisto.
+
+        Do a partial revert of r191652 as this web-exposed behavior change
+        broke Colloquy app. This only reverts the code change, the tests
+        are left as is so that they don't rely of the frame ID setting the
+        Window name.
+
+        * html/HTMLFrameElementBase.cpp:
+        (WebCore::HTMLFrameElementBase::parseAttribute):
+        (WebCore::HTMLFrameElementBase::setNameAndOpenURL):
+
 2015-11-03  Brady Eidson  <beidson@apple.com>
 
         Modern IDB: Fill out IDBIndex, create MemoryIndex in backing store.
index c71ec0d927e876d55b118d68c4f7a7e404717bb1..ea326bc6f3826d5bbb926ed059a32615cea5ac27 100644 (file)
@@ -96,7 +96,12 @@ void HTMLFrameElementBase::parseAttribute(const QualifiedName& name, const Atomi
         setLocation("about:srcdoc");
     else if (name == srcAttr && !fastHasAttribute(srcdocAttr))
         setLocation(stripLeadingAndTrailingHTMLSpaces(value));
-    else if (name == nameAttr) {
+    else if (name == idAttr) {
+        HTMLFrameOwnerElement::parseAttribute(name, value);
+        // Falling back to using the 'id' attribute is not standard but some content relies on this behavior.
+        if (!hasAttribute(nameAttr))
+            m_frameName = value;
+    } else if (name == nameAttr) {
         m_frameName = value;
         // FIXME: If we are already attached, this doesn't actually change the frame's name.
         // FIXME: If we are already attached, this doesn't check for frame name
@@ -121,6 +126,9 @@ void HTMLFrameElementBase::parseAttribute(const QualifiedName& name, const Atomi
 void HTMLFrameElementBase::setNameAndOpenURL()
 {
     m_frameName = getNameAttribute();
+    // Falling back to using the 'id' attribute is not standard but some content relies on this behavior.
+    if (m_frameName.isNull())
+        m_frameName = getIdAttribute();
     openURL();
 }