2006-05-12 Eric Seidel <eseidel@apple.com>
Reviewed by mjs.
Split render_frames.* render_replaced.* and html_baseimpl.* into separate files (one class per file).
http://bugzilla.opendarwin.org/show_bug.cgi?id=8878
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/kjs_html.cpp:
(KJS::JSHTMLDocumentProtoFunc::callAsFunction):
(KJS::JSHTMLDocument::namedItemGetter):
(KJS::JSHTMLDocument::getValueProperty):
(KJS::JSHTMLDocument::getOwnPropertySlot):
(KJS::JSHTMLDocument::putValueProperty):
(KJS::JSHTMLElement::formIndexGetter):
(KJS::JSHTMLElement::formNameGetter):
(KJS::JSHTMLElement::selectIndexGetter):
(KJS::JSHTMLElement::framesetNameGetter):
(KJS::JSHTMLElement::runtimeObjectGetter):
(KJS::JSHTMLElement::runtimeObjectPropertyGetter):
(KJS::JSHTMLElement::getOwnPropertySlot):
(KJS::JSHTMLElement::implementsCall):
(KJS::JSHTMLElement::callAsFunction):
(KJS::JSHTMLElement::getValueProperty):
(KJS::JSHTMLElement::toString):
(KJS::getForm):
(KJS::JSHTMLElement::pushEventHandlerScope):
(KJS::HTMLElementFunction::callAsFunction):
(KJS::JSHTMLElement::put):
(KJS::JSHTMLElement::selectSetter):
(KJS::JSHTMLElement::putValueProperty):
(KJS::toHTMLElement):
(KJS::toHTMLTableCaptionElement):
(KJS::toHTMLTableSectionElement):
(KJS::JSHTMLCollection::lengthGetter):
(KJS::JSHTMLCollection::indexGetter):
(KJS::JSHTMLCollection::nameGetter):
(KJS::JSHTMLCollection::getOwnPropertySlot):
(KJS::HTMLCollectionProtoFunc::callAsFunction):
(KJS::JSHTMLSelectCollection::selectedIndexGetter):
(KJS::JSHTMLSelectCollection::put):
(KJS::OptionConstructorImp::construct):
(KJS::getSelectHTMLCollection):
* bindings/objc/DOMHTML.mm:
* bridge/mac/FrameMac.mm:
(WebCore::FrameMac::createFrame):
* bridge/mac/WebCoreFrameBridge.mm:
(-[WebCoreFrameBridge copyRenderNode:copier:]):
* dom/Document.cpp:
(WebCore::widgetForNode):
* html/HTMLBodyElement.cpp: Added.
(WebCore::HTMLBodyElement::HTMLBodyElement):
(WebCore::HTMLBodyElement::parseMappedAttribute):
* html/HTMLBodyElement.h: Added.
* html/HTMLDocument.cpp:
* html/HTMLElementFactory.cpp:
* html/HTMLEmbedElement.cpp:
* html/HTMLFrameElement.cpp: Added.
(WebCore::HTMLFrameElement::isURLAllowed):
(WebCore::HTMLFrameElement::parseMappedAttribute):
(WebCore::HTMLFrameElement::setLocation):
* html/HTMLFrameElement.h: Added.
* html/HTMLFrameSetElement.cpp: Added.
(WebCore::HTMLFrameSetElement::HTMLFrameSetElement):
(WebCore::HTMLFrameSetElement::parseMappedAttribute):
(WebCore::HTMLFrameSetElement::attach):
(WebCore::HTMLFrameSetElement::defaultEventHandler):
(WebCore::HTMLFrameSetElement::recalcStyle):
* html/HTMLFrameSetElement.h: Added.
* html/HTMLHeadElement.cpp: Added.
(WebCore::HTMLHeadElement::HTMLHeadElement):
* html/HTMLHeadElement.h: Added.
* html/HTMLHtmlElement.cpp: Added.
(WebCore::HTMLHtmlElement::HTMLHtmlElement):
* html/HTMLHtmlElement.h: Added.
* html/HTMLIFrameElement.cpp: Added.
(WebCore::HTMLIFrameElement::HTMLIFrameElement):
* html/HTMLIFrameElement.h: Added.
* html/HTMLObjectElement.cpp:
* html/HTMLParser.cpp:
* html/html_baseimpl.cpp: Removed.
* html/html_baseimpl.h: Removed.
* kwq/WebCoreAXObject.mm:
* page/Frame.cpp:
(WebCore::isFrameElement):
(WebCore::Frame::applyEditingStyleToBodyElement):
(WebCore::Frame::removeEditingStyleFromBodyElement):
(WebCore::Frame::applyEditingStyleToElement):
(WebCore::Frame::removeEditingStyleFromElement):
(WebCore::Frame::selectionRect):
(WebCore::Frame::isFrameSet):
(WebCore::scanForForm):
(WebCore::Frame::currentForm):
(WebCore::Frame::nodeInfoAtPoint):
(WebCore::Frame::adjustPageHeight):
(WebCore::Frame::frameForWidget):
(WebCore::Frame::forceLayoutWithPageWidthRange):
(WebCore::Frame::passWidgetMouseDownEventToWidget):
* page/FrameView.cpp:
* rendering/RenderFrame.cpp: Added.
(WebCore::RenderFrame::viewCleared):
* rendering/RenderFrame.h: Added.
* rendering/RenderFrameSet.cpp: Added.
(WebCore::RenderFrameSet::RenderFrameSet):
(WebCore::RenderFrameSet::~RenderFrameSet):
(WebCore::RenderFrameSet::layout):
(WebCore::RenderFrameSet::positionFrames):
(WebCore::RenderFrameSet::userResize):
(WebCore::RenderFrameSet::canResize):
(WebCore::RenderFrameSet::dump):
* rendering/RenderFrameSet.h: Added.
* rendering/RenderImage.h:
* rendering/RenderPart.cpp: Added.
(WebCore::RenderPart::RenderPart):
* rendering/RenderPart.h: Added.
* rendering/RenderPartObject.cpp: Added.
(WebCore::isURLAllowed):
(WebCore::RenderPartObject::updateWidget):
(WebCore::RenderPartObject::viewCleared):
* rendering/RenderPartObject.h: Added.
* rendering/RenderReplaced.cpp: Added.
(WebCore::RenderReplaced::selectionColor):
* rendering/RenderReplaced.h: Added.
* rendering/RenderWidget.cpp: Added.
(WebCore::RenderWidget::deleteWidget):
* rendering/RenderWidget.h: Added.
* rendering/render_form.h:
* rendering/render_frames.cpp: Removed.
* rendering/render_frames.h: Removed.
* rendering/render_replaced.cpp: Removed.
* rendering/render_replaced.h: Removed.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@14334 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/html/HTMLFrameSetElement.cpp b/WebCore/html/HTMLFrameSetElement.cpp
new file mode 100644
index 0000000..66d533e
--- /dev/null
+++ b/WebCore/html/HTMLFrameSetElement.cpp
@@ -0,0 +1,172 @@
+/**
+ * This file is part of the DOM implementation for KDE.
+ *
+ * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
+ * (C) 1999 Antti Koivisto (koivisto@kde.org)
+ * (C) 2000 Simon Hausmann (hausmann@kde.org)
+ * (C) 2001 Dirk Mueller (mueller@kde.org)
+ * Copyright (C) 2004, 2006 Apple Computer, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#include "config.h"
+#include "HTMLFrameSetElement.h"
+
+#include "Document.h"
+#include "EventNames.h"
+#include "HTMLNames.h"
+#include "Length.h"
+#include "dom2_eventsimpl.h"
+#include "RenderFrameSet.h"
+
+namespace WebCore {
+
+using namespace EventNames;
+using namespace HTMLNames;
+
+HTMLFrameSetElement::HTMLFrameSetElement(Document *doc)
+ : HTMLElement(framesetTag, doc)
+ , m_rows(0)
+ , m_cols(0)
+ , m_totalRows(1)
+ , m_totalCols(1)
+ , m_border(4)
+ , frameborder(true)
+ , frameBorderSet(false)
+ , noresize(false)
+{
+}
+
+HTMLFrameSetElement::~HTMLFrameSetElement()
+{
+ if (m_rows)
+ delete [] m_rows;
+ if (m_cols)
+ delete [] m_cols;
+}
+
+bool HTMLFrameSetElement::checkDTD(const Node* newChild)
+{
+ // FIXME: Old code had adjacent double returns and seemed to want to do something with NOFRAMES (but didn't).
+ // What is the correct behavior?
+ return newChild->hasTagName(framesetTag) || newChild->hasTagName(frameTag);
+}
+
+void HTMLFrameSetElement::parseMappedAttribute(MappedAttribute *attr)
+{
+ if (attr->name() == rowsAttr) {
+ if (!attr->isNull()) {
+ if (m_rows) delete [] m_rows;
+ m_rows = attr->value().toLengthArray(m_totalRows);
+ setChanged();
+ }
+ } else if (attr->name() == colsAttr) {
+ if (!attr->isNull()) {
+ delete [] m_cols;
+ m_cols = attr->value().toLengthArray(m_totalCols);
+ setChanged();
+ }
+ } else if (attr->name() == frameborderAttr) {
+ // false or "no" or "0"..
+ if (attr->value().toInt() == 0) {
+ frameborder = false;
+ m_border = 0;
+ }
+ frameBorderSet = true;
+ } else if (attr->name() == noresizeAttr) {
+ noresize = true;
+ } else if (attr->name() == borderAttr) {
+ m_border = attr->value().toInt();
+ if(!m_border)
+ frameborder = false;
+ } else if (attr->name() == onloadAttr) {
+ document()->setHTMLWindowEventListener(loadEvent, attr);
+ } else if (attr->name() == onbeforeunloadAttr) {
+ document()->setHTMLWindowEventListener(beforeunloadEvent, attr);
+ } else if (attr->name() == onunloadAttr) {
+ document()->setHTMLWindowEventListener(unloadEvent, attr);
+ } else
+ HTMLElement::parseMappedAttribute(attr);
+}
+
+bool HTMLFrameSetElement::rendererIsNeeded(RenderStyle *style)
+{
+ // Ignore display: none but do pay attention if a stylesheet has caused us to delay our loading.
+ return style->isStyleAvailable();
+}
+
+RenderObject *HTMLFrameSetElement::createRenderer(RenderArena *arena, RenderStyle *style)
+{
+ return new (arena) RenderFrameSet(this);
+}
+
+void HTMLFrameSetElement::attach()
+{
+ // inherit default settings from parent frameset
+ HTMLElement* node = static_cast<HTMLElement*>(parentNode());
+ while (node) {
+ if (node->hasTagName(framesetTag)) {
+ HTMLFrameSetElement* frameset = static_cast<HTMLFrameSetElement*>(node);
+ if(!frameBorderSet) frameborder = frameset->frameBorder();
+ if(!noresize) noresize = frameset->noResize();
+ break;
+ }
+ node = static_cast<HTMLElement*>(node->parentNode());
+ }
+
+ HTMLElement::attach();
+}
+
+void HTMLFrameSetElement::defaultEventHandler(Event* evt)
+{
+ if (evt->isMouseEvent() && !noresize && renderer()) {
+ static_cast<WebCore::RenderFrameSet*>(renderer())->userResize(static_cast<MouseEvent*>(evt));
+ evt->setDefaultHandled();
+ }
+
+ HTMLElement::defaultEventHandler(evt);
+}
+
+void HTMLFrameSetElement::recalcStyle(StyleChange ch)
+{
+ if (changed() && renderer()) {
+ renderer()->setNeedsLayout(true);
+ setChanged(false);
+ }
+ HTMLElement::recalcStyle(ch);
+}
+
+String HTMLFrameSetElement::cols() const
+{
+ return getAttribute(colsAttr);
+}
+
+void HTMLFrameSetElement::setCols(const String &value)
+{
+ setAttribute(colsAttr, value);
+}
+
+String HTMLFrameSetElement::rows() const
+{
+ return getAttribute(rowsAttr);
+}
+
+void HTMLFrameSetElement::setRows(const String &value)
+{
+ setAttribute(rowsAttr, value);
+}
+
+}