Reviewed by Geoff and Oliver.
Add test for <rdar://problem/
5267870>
Mangleme: Reproducible assertion failure in -[WebCoreFrameBridge installInFrame:]
* http/tests/misc/embedCrasher-expected.txt: Added.
* http/tests/misc/embedCrasher.html: Added.
WebCore:
Reviewed by Geoff and Oliver.
Fix for <rdar://problem/
5267870>
Mangleme: Reproducible assertion failure in -[WebCoreFrameBridge installInFrame:]
- Change embed/plugin code path to detach the frame on willRemove instead of detach.
This matches what frame and iframe do.
Test: http/tests/misc/embedCrasher.html
* html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::willRemove):
* html/HTMLPlugInElement.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@25087
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2007-08-14 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoff and Oliver.
+
+ Add test for <rdar://problem/5267870>
+ Mangleme: Reproducible assertion failure in -[WebCoreFrameBridge installInFrame:]
+
+ * http/tests/misc/embedCrasher-expected.txt: Added.
+ * http/tests/misc/embedCrasher.html: Added.
+
2007-08-14 Adele Peterson <adele@apple.com>
Reviewed by Maciej.
--- /dev/null
+ALERT: PASS: If you see this and the test did not crash the test has passed. (rdar://problem/5267870)
+
--- /dev/null
+<embed src='doesnotexist'>
+<script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+ alert("PASS: If you see this and the test did not crash the test has passed. (rdar://problem/5267870)");
+</script>
+<frameset>
+<frame>
+2007-08-14 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoff and Oliver.
+
+ Fix for <rdar://problem/5267870>
+ Mangleme: Reproducible assertion failure in -[WebCoreFrameBridge installInFrame:]
+
+ - Change embed/plugin code path to detach the frame on willRemove instead of detach.
+ This matches what frame and iframe do.
+
+ Test: http/tests/misc/embedCrasher.html
+
+ * html/HTMLPlugInElement.cpp:
+ (WebCore::HTMLPlugInElement::willRemove):
+ * html/HTMLPlugInElement.h:
+
2007-08-14 Adele Peterson <adele@apple.com>
Reviewed by Maciej.
#include "CSSPropertyNames.h"
#include "Document.h"
#include "Frame.h"
+#include "FrameLoader.h"
#include "FrameTree.h"
#include "HTMLNames.h"
#include "Page.h"
return newChild->hasTagName(paramTag) || HTMLFrameOwnerElement::checkDTD(newChild);
}
-void HTMLPlugInElement::detach()
+void HTMLPlugInElement::willRemove()
{
if (Frame* parentFrame = document()->frame()) {
- Frame* contentFrame = parentFrame->tree()->child(m_frameName);
- if (contentFrame)
+ if (Frame* contentFrame = parentFrame->tree()->child(m_frameName)) {
contentFrame->disconnectOwnerElement();
+ contentFrame->loader()->frameDetached();
+ }
}
-
- HTMLFrameOwnerElement::detach();
+
+ HTMLFrameOwnerElement::willRemove();
}
void HTMLPlugInElement::defaultEventHandler(Event* event)
virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
virtual void parseMappedAttribute(MappedAttribute*);
- virtual void detach();
-
+ virtual void willRemove();
+
virtual HTMLTagStatus endTagRequirement() const { return TagStatusRequired; }
virtual bool checkDTD(const Node* newChild);