LayoutTests:
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Apr 2007 21:52:14 +0000 (21:52 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Apr 2007 21:52:14 +0000 (21:52 +0000)
        Reviewed by Geoff Garen and John Sullivan.

        - test changes for <rdar://problem/4671964> document property on <iframe> elements causes problems for SAP application

        * fast/dom/iframe-document-expected.txt: Added.
        * fast/dom/iframe-document.html: Added.

        * fast/dom/attr_dead_doc.html: Changed to use contentDocument instead of relying on the document property
        on HTMLIFrameElement.
        * fast/events/mouseover-mouseout.html: Ditto.
        * fast/frames/repaint-display-none-crash.html: Ditto.

WebCore:

        Reviewed by Geoff Garen and John Sullivan.

        - fix <rdar://problem/4671964> document property on <iframe> elements causes problems for SAP application

        Test: fast/dom/iframe-document.html

        * bindings/js/kjs_html.h: Removed IFrameDocument.
        * bindings/js/kjs_html.cpp: (KJS::JSHTMLElement::iFrameGetter): Ditto.

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

LayoutTests/ChangeLog
LayoutTests/fast/dom/attr_dead_doc.html
LayoutTests/fast/dom/iframe-document-expected.txt [new file with mode: 0644]
LayoutTests/fast/dom/iframe-document.html [new file with mode: 0644]
LayoutTests/fast/events/mouseover-mouseout.html
LayoutTests/fast/frames/repaint-display-none-crash.html
WebCore/ChangeLog
WebCore/bindings/js/kjs_html.cpp
WebCore/bindings/js/kjs_html.h

index 2618520..8fa000e 100644 (file)
@@ -1,3 +1,17 @@
+2007-04-20  Darin Adler  <darin@apple.com>
+
+        Reviewed by Geoff Garen and John Sullivan.
+
+        - test changes for <rdar://problem/4671964> document property on <iframe> elements causes problems for SAP application
+
+        * fast/dom/iframe-document-expected.txt: Added.
+        * fast/dom/iframe-document.html: Added.
+
+        * fast/dom/attr_dead_doc.html: Changed to use contentDocument instead of relying on the document property
+        on HTMLIFrameElement.
+        * fast/events/mouseover-mouseout.html: Ditto.
+        * fast/frames/repaint-display-none-crash.html: Ditto.
+
 2007-04-19  Mitz Pettel  <mitz@webkit.org>
 
         Rubber-stamped by Adam.
index b46c547..c8c53d1 100644 (file)
@@ -3,7 +3,7 @@
 <script>
 var im;
 function getImg() {
-    im =  document.getElementById("right").document.getElementById("img");
+    im =  document.getElementById("right").contentDocument.getElementById("img");
 }
 function setImg() {
     im.src = "resources/mozilla.gif";
diff --git a/LayoutTests/fast/dom/iframe-document-expected.txt b/LayoutTests/fast/dom/iframe-document-expected.txt
new file mode 100644 (file)
index 0000000..31b4d53
--- /dev/null
@@ -0,0 +1,5 @@
+This tests the document property on an HTMLIFrameElement. Internet Explorer and Safari have a document property on all elements that gives the document the element is in. Old versions of Safari overrode this on iframe elements to return the document inside the iframe, which created an incompatibility with at least on SAP application because it doesn't match the behavior of other browsers.
+
+TEST PASSED: The document property is returning the document the iframe element is in.
+
+
diff --git a/LayoutTests/fast/dom/iframe-document.html b/LayoutTests/fast/dom/iframe-document.html
new file mode 100644 (file)
index 0000000..4f4f055
--- /dev/null
@@ -0,0 +1,24 @@
+<script>
+function test()
+{
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+    var result;
+    if (!document.getElementById('frame').document)
+        result = "TEST PASSED: The frame has no document property, so this is probably not IE or Safari.";
+    else if (document == document.getElementById('frame').document)
+        result = "TEST PASSED: The document property is returning the document the iframe element is in.";
+    else
+        result = "TEST FAILED: The document property is returning a document other than the one the iframe element is in, probably the document inside the frame.";
+    var resultElement = document.getElementById('result');
+    resultElement.replaceChild(document.createTextNode(result), resultElement.firstChild);
+}
+</script>
+<body onload="test()">
+<p>This tests the document property on an HTMLIFrameElement.
+Internet Explorer and Safari have a document property on all elements that gives the document the element is in.
+Old versions of Safari overrode this on iframe elements to return the document inside the iframe, which created an incompatibility
+with at least on SAP application because it doesn't match the behavior of other browsers.</p>
+<p id="result">TEST NOT RUN</p>
+<iframe src="data:text/html,iframe contents" id="frame"></iframe>
+</body>
index 9ca8592..e4edcda 100644 (file)
@@ -45,9 +45,7 @@ Mouse events vs. DOM manipulation.</p>
 <div style='height: 50; width: 50; background:yellow;top:100;left:200; position:absolute;' id='t3_1' 
     onMouseOver="
         logMouseEvent(event);
-        newDoc = document.getElementById('invisible_frame').document;
-        if (!newDoc)
-            newDoc = document.getElementById('invisible_frame').contentDocument;
+        newDoc = document.getElementById('invisible_frame').contentDocument;
         try {
             newDoc.adoptNode(document.getElementById('t3_1'));
         } catch (e) {
@@ -63,9 +61,7 @@ Mouse events vs. DOM manipulation.</p>
 <div style='height: 50; width: 50; background:green;top:100;left:250; position:absolute;' id='t4_1' 
     onMouseOver="
         logMouseEvent(event);
-        newDoc = document.getElementById('invisible_frame').document;
-        if (!newDoc)
-            newDoc = document.getElementById('invisible_frame').contentDocument;
+        newDoc = document.getElementById('invisible_frame').contentDocument;
         try {
             newDoc.documentElement.appendChild(newDoc.adoptNode(document.getElementById('t4_1')));
         } catch (ex) {
index 78b8e22..4178dc6 100644 (file)
@@ -10,7 +10,7 @@
         document.body.offsetTop;
         t.style.display='none';
         t.src='about:blank';
-        t.document.body.offsetTop;
+        t.contentDocument.body.offsetTop;
         if (window.layoutTestController) {
             layoutTestController.notifyDone();
         }
index 63cde17..8e73cda 100644 (file)
@@ -1,3 +1,14 @@
+2007-04-20  Darin Adler  <darin@apple.com>
+
+        Reviewed by Geoff Garen and John Sullivan.
+
+        - fix <rdar://problem/4671964> document property on <iframe> elements causes problems for SAP application
+
+        Test: fast/dom/iframe-document.html
+
+        * bindings/js/kjs_html.h: Removed IFrameDocument.
+        * bindings/js/kjs_html.cpp: (KJS::JSHTMLElement::iFrameGetter): Ditto.
+
 2007-04-19  Alp Toker  <alp@atoker.com>
 
         Reviewed by Mark.
index 15f03e1..b870c0d 100644 (file)
@@ -646,7 +646,6 @@ rows          KJS::JSHTMLElement::FrameSetRows                  DontDelete
   align           KJS::JSHTMLElement::IFrameAlign                 DontDelete
   contentDocument KJS::JSHTMLElement::IFrameContentDocument       DontDelete|ReadOnly
   contentWindow   KJS::JSHTMLElement::IFrameContentWindow         DontDelete|ReadOnly
-  document        KJS::JSHTMLElement::IFrameDocument              DontDelete|ReadOnly
   frameBorder     KJS::JSHTMLElement::IFrameFrameBorder           DontDelete
   height          KJS::JSHTMLElement::IFrameHeight                DontDelete
   longDesc        KJS::JSHTMLElement::IFrameLongDesc              DontDelete
@@ -952,7 +951,6 @@ JSValue *JSHTMLElement::iFrameGetter(ExecState* exec, int token) const
     switch (token) {
         case IFrameAlign:                return jsString(iFrame.align());
           // ### security check ?
-        case IFrameDocument: // non-standard, mapped to contentDocument
         case IFrameContentDocument: return checkNodeSecurity(exec,iFrame.contentDocument()) ? 
                                       toJS(exec, iFrame.contentDocument()) : jsUndefined();
         case IFrameContentWindow:   return checkNodeSecurity(exec,iFrame.contentDocument()) 
index 9c9b475..1e86913 100644 (file)
@@ -142,7 +142,7 @@ namespace KJS {
            TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols,
            FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling,
            FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName, FrameContentDocument, FrameContentWindow, 
-           FrameNoResize, FrameWidth, FrameHeight, IFrameLongDesc, IFrameDocument, IFrameAlign,
+           FrameNoResize, FrameWidth, FrameHeight, IFrameLongDesc, IFrameAlign,
            IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight,
            IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth, IFrameContentDocument, IFrameContentWindow,
            MarqueeStart, MarqueeStop,