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);
+}
+
+}