Title: [134350] trunk/Source/WebCore
- Revision
- 134350
- Author
- [email protected]
- Date
- 2012-11-12 20:44:20 -0800 (Mon, 12 Nov 2012)
Log Message
Make Frames and HTMLFrameOwnerElement less friendly
https://bugs.webkit.org/show_bug.cgi?id=102003
Patch by Elliott Sprehn <[email protected]> on 2012-11-12
Reviewed by Ojan Vafai.
Frame used to assign HTMLFrameOwnerElement's m_contentFrame directly
this patch makes it go through a method to allow future hooks when frames
are associated with owners.
No new tests, this is just a refactor.
* html/HTMLFrameOwnerElement.cpp:
(WebCore::HTMLFrameOwnerElement::setContentFrame):
* html/HTMLFrameOwnerElement.h:
(HTMLFrameOwnerElement):
(WebCore::HTMLFrameOwnerElement::clearContentFrame):
* page/Frame.cpp:
(WebCore::Frame::Frame): Use new methods.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (134349 => 134350)
--- trunk/Source/WebCore/ChangeLog 2012-11-13 04:40:53 UTC (rev 134349)
+++ trunk/Source/WebCore/ChangeLog 2012-11-13 04:44:20 UTC (rev 134350)
@@ -1,3 +1,24 @@
+2012-11-12 Elliott Sprehn <[email protected]>
+
+ Make Frames and HTMLFrameOwnerElement less friendly
+ https://bugs.webkit.org/show_bug.cgi?id=102003
+
+ Reviewed by Ojan Vafai.
+
+ Frame used to assign HTMLFrameOwnerElement's m_contentFrame directly
+ this patch makes it go through a method to allow future hooks when frames
+ are associated with owners.
+
+ No new tests, this is just a refactor.
+
+ * html/HTMLFrameOwnerElement.cpp:
+ (WebCore::HTMLFrameOwnerElement::setContentFrame):
+ * html/HTMLFrameOwnerElement.h:
+ (HTMLFrameOwnerElement):
+ (WebCore::HTMLFrameOwnerElement::clearContentFrame):
+ * page/Frame.cpp:
+ (WebCore::Frame::Frame): Use new methods.
+
2012-11-12 Beth Dakin <[email protected]>
Zoomed-in scrolling is very slow when deviceScaleFactor > 1
Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp (134349 => 134350)
--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp 2012-11-13 04:40:53 UTC (rev 134349)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp 2012-11-13 04:44:20 UTC (rev 134350)
@@ -49,6 +49,16 @@
return toRenderPart(renderer());
}
+void HTMLFrameOwnerElement::setContentFrame(Frame* frame)
+{
+ // Make sure we will not end up with two frames referencing the same owner element.
+ ASSERT(!m_contentFrame || m_contentFrame->ownerElement() != this);
+ ASSERT(frame);
+ // Disconnected frames should not be allowed to load.
+ ASSERT(inDocument());
+ m_contentFrame = frame;
+}
+
void HTMLFrameOwnerElement::disconnectContentFrame()
{
ASSERT(hasCustomCallbacks());
Modified: trunk/Source/WebCore/html/HTMLFrameOwnerElement.h (134349 => 134350)
--- trunk/Source/WebCore/html/HTMLFrameOwnerElement.h 2012-11-13 04:40:53 UTC (rev 134349)
+++ trunk/Source/WebCore/html/HTMLFrameOwnerElement.h 2012-11-13 04:44:20 UTC (rev 134350)
@@ -42,6 +42,11 @@
DOMWindow* contentWindow() const;
Document* contentDocument() const;
+ void setContentFrame(Frame*);
+ void clearContentFrame() { m_contentFrame = 0; }
+
+ void disconnectContentFrame();
+
// Most subclasses use RenderPart (either RenderEmbeddedObject or RenderIFrame)
// except for HTMLObjectElement and HTMLEmbedElement which may return any
// RenderObject when using fallback content.
@@ -54,15 +59,12 @@
virtual ScrollbarMode scrollingMode() const { return ScrollbarAuto; }
SandboxFlags sandboxFlags() const { return m_sandboxFlags; }
- void disconnectContentFrame();
protected:
HTMLFrameOwnerElement(const QualifiedName& tagName, Document*);
void setSandboxFlags(SandboxFlags);
private:
- friend class Frame;
-
virtual bool isKeyboardFocusable(KeyboardEvent*) const;
virtual bool isFrameOwnerElement() const OVERRIDE { return true; }
Modified: trunk/Source/WebCore/page/Frame.cpp (134349 => 134350)
--- trunk/Source/WebCore/page/Frame.cpp 2012-11-13 04:40:53 UTC (rev 134349)
+++ trunk/Source/WebCore/page/Frame.cpp 2012-11-13 04:44:20 UTC (rev 134350)
@@ -184,11 +184,7 @@
#endif
} else {
page->incrementSubframeCount();
-
- // Make sure we will not end up with two frames referencing the same owner element.
- Frame*& contentFrameSlot = ownerElement->m_contentFrame;
- ASSERT(!contentFrameSlot || contentFrameSlot->ownerElement() != ownerElement);
- contentFrameSlot = this;
+ ownerElement->setContentFrame(this);
}
#ifndef NDEBUG
@@ -697,7 +693,7 @@
if (m_ownerElement) {
if (Document* doc = document())
doc->clearAXObjectCache();
- m_ownerElement->m_contentFrame = 0;
+ m_ownerElement->clearContentFrame();
if (m_page)
m_page->decrementSubframeCount();
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes