Reviewed by Geoff.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 5 Nov 2006 22:02:23 +0000 (22:02 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 5 Nov 2006 22:02:23 +0000 (22:02 +0000)
        - more preparation for splitting up Frame into sub-pieces
        - removed unnecessary includes from Frame.h

        * page/Frame.h: Removed unneeded includes and forward declarations.
        Added additional forward declarations. Removed the constant
        NoXPosForVerticalArrowNavigation, now moved inside SelectionController.
        Created sections of functions to be moved into Chrome, Editor,
        EventHandler, FrameLoader, SelectionController, and the Platform
        directory, as well as marking one function for deletion.

        * page/FramePrivate.h: Removed the definition of the constructor and
        destructor and removed unnecessary includes.

        * page/FrameView.h: Removed unneeded forward declarations and friend
        declarations. Created a section of functions and data to be moved into
        EventHandler.

        * bridge/mac/FrameMac.h: Removed unneeded forward declarations.
        Created sections of functions and data to be moved into Chrome,
        Editor, EventHandler, FrameLoader, and the Platform directory.

        * bridge/mac/WebCoreFrameBridge.h: Removed obsolete comment.
        Removed unused methods areScrollbarsVisible,
        nextValidKeyViewOutsideWebFrameViews, and fileWrapperForURL:.

        * page/Frame.cpp:
        (WebCore::Frame::begin): Added an overload, so Frame.h doesn't have
        to include KURL.h just for the KURL default constructor.
        (WebCore::FramePrivate::FramePrivate): Moved here from FramePrivate.h.
        (WebCore::FramePrivate::~FramePrivate): Ditto.

        * page/FrameView.cpp: Removed unused scrollbarMoved and scrollingSelf
        booleans, scrollbarMoved and cleared funcitons.
        (WebCore::FrameView::clear): Moved the code from the cleared
        function in here.
        (WebCore::FrameView::scrollTo): Removed code to set scrollingSelf.

        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::FrameMac): Updated
        for changes to header.

        * editing/SelectionController.cpp:
        (WebCore::SelectionController::setSelection):
        (WebCore::SelectionController::xPosForVerticalArrowNavigation):
        Moved NoXPosForVerticalArrowNavigation into this file.

        * bindings/js/kjs_events.cpp:
        * bindings/js/kjs_html.cpp:
        * bindings/js/kjs_window.cpp:
        * bridge/mac/WebCoreAXObject.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * css/cssstyleselector.cpp:
        * dom/Document.cpp:
        * dom/Element.cpp:
        * dom/EventTargetNode.cpp:
        * dom/MouseRelatedEvent.cpp:
        * dom/XMLTokenizer.cpp:
        * html/HTMLBaseElement.cpp:
        * html/HTMLDocument.cpp:
        * html/HTMLEmbedElement.cpp:
        * html/HTMLFrameElementBase.cpp:
        * html/HTMLGenericFormElement.cpp:
        * html/HTMLObjectElement.cpp:
        * html/HTMLTokenizer.cpp:
        * loader/mac/FrameLoaderMac.mm:
        * page/PageState.cpp:
        * rendering/RenderApplet.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderLayer.cpp:
        * rendering/RenderObject.cpp:
        * rendering/RenderPartObject.cpp:
        * rendering/RenderTreeAsText.cpp:
        * xml/XSLTProcessor.cpp:
        Added includes as needed to keep compiling, since there are fewer
        includes in Frame.h.

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

37 files changed:
WebCore/ChangeLog
WebCore/bindings/js/kjs_events.cpp
WebCore/bindings/js/kjs_html.cpp
WebCore/bindings/js/kjs_window.cpp
WebCore/bridge/mac/FrameMac.h
WebCore/bridge/mac/FrameMac.mm
WebCore/bridge/mac/WebCoreAXObject.mm
WebCore/bridge/mac/WebCoreFrameBridge.h
WebCore/bridge/mac/WebCoreFrameBridge.mm
WebCore/css/cssstyleselector.cpp
WebCore/dom/Document.cpp
WebCore/dom/Element.cpp
WebCore/dom/EventTargetNode.cpp
WebCore/dom/MouseRelatedEvent.cpp
WebCore/dom/XMLTokenizer.cpp
WebCore/editing/SelectionController.cpp
WebCore/html/HTMLBaseElement.cpp
WebCore/html/HTMLDocument.cpp
WebCore/html/HTMLEmbedElement.cpp
WebCore/html/HTMLFrameElementBase.cpp
WebCore/html/HTMLGenericFormElement.cpp
WebCore/html/HTMLObjectElement.cpp
WebCore/html/HTMLTokenizer.cpp
WebCore/loader/mac/FrameLoaderMac.mm
WebCore/page/Frame.cpp
WebCore/page/Frame.h
WebCore/page/FramePrivate.h
WebCore/page/FrameView.cpp
WebCore/page/FrameView.h
WebCore/page/PageState.cpp
WebCore/rendering/RenderApplet.cpp
WebCore/rendering/RenderBlock.cpp
WebCore/rendering/RenderLayer.cpp
WebCore/rendering/RenderObject.cpp
WebCore/rendering/RenderPartObject.cpp
WebCore/rendering/RenderTreeAsText.cpp
WebCore/xml/XSLTProcessor.cpp

index 4519b2e..7a0aad1 100644 (file)
@@ -1,3 +1,82 @@
+2006-11-05  Darin Adler  <darin@apple.com>
+
+        Reviewed by Geoff.
+
+        - more preparation for splitting up Frame into sub-pieces
+        - removed unnecessary includes from Frame.h
+
+        * page/Frame.h: Removed unneeded includes and forward declarations.
+        Added additional forward declarations. Removed the constant
+        NoXPosForVerticalArrowNavigation, now moved inside SelectionController.
+        Created sections of functions to be moved into Chrome, Editor,
+        EventHandler, FrameLoader, SelectionController, and the Platform
+        directory, as well as marking one function for deletion.
+
+        * page/FramePrivate.h: Removed the definition of the constructor and
+        destructor and removed unnecessary includes.
+
+        * page/FrameView.h: Removed unneeded forward declarations and friend
+        declarations. Created a section of functions and data to be moved into
+        EventHandler.
+
+        * bridge/mac/FrameMac.h: Removed unneeded forward declarations.
+        Created sections of functions and data to be moved into Chrome,
+        Editor, EventHandler, FrameLoader, and the Platform directory.
+
+        * bridge/mac/WebCoreFrameBridge.h: Removed obsolete comment.
+        Removed unused methods areScrollbarsVisible,
+        nextValidKeyViewOutsideWebFrameViews, and fileWrapperForURL:.
+
+        * page/Frame.cpp:
+        (WebCore::Frame::begin): Added an overload, so Frame.h doesn't have
+        to include KURL.h just for the KURL default constructor.
+        (WebCore::FramePrivate::FramePrivate): Moved here from FramePrivate.h.
+        (WebCore::FramePrivate::~FramePrivate): Ditto.
+
+        * page/FrameView.cpp: Removed unused scrollbarMoved and scrollingSelf
+        booleans, scrollbarMoved and cleared funcitons.
+        (WebCore::FrameView::clear): Moved the code from the cleared
+        function in here.
+        (WebCore::FrameView::scrollTo): Removed code to set scrollingSelf.
+
+        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::FrameMac): Updated
+        for changes to header.
+
+        * editing/SelectionController.cpp:
+        (WebCore::SelectionController::setSelection):
+        (WebCore::SelectionController::xPosForVerticalArrowNavigation):
+        Moved NoXPosForVerticalArrowNavigation into this file.
+
+        * bindings/js/kjs_events.cpp:
+        * bindings/js/kjs_html.cpp:
+        * bindings/js/kjs_window.cpp:
+        * bridge/mac/WebCoreAXObject.mm:
+        * bridge/mac/WebCoreFrameBridge.mm:
+        * css/cssstyleselector.cpp:
+        * dom/Document.cpp:
+        * dom/Element.cpp:
+        * dom/EventTargetNode.cpp:
+        * dom/MouseRelatedEvent.cpp:
+        * dom/XMLTokenizer.cpp:
+        * html/HTMLBaseElement.cpp:
+        * html/HTMLDocument.cpp:
+        * html/HTMLEmbedElement.cpp:
+        * html/HTMLFrameElementBase.cpp:
+        * html/HTMLGenericFormElement.cpp:
+        * html/HTMLObjectElement.cpp:
+        * html/HTMLTokenizer.cpp:
+        * loader/mac/FrameLoaderMac.mm:
+        * page/PageState.cpp:
+        * rendering/RenderApplet.cpp:
+        * rendering/RenderBlock.cpp:
+        * rendering/RenderLayer.cpp:
+        * rendering/RenderObject.cpp:
+        * rendering/RenderPartObject.cpp:
+        * rendering/RenderTreeAsText.cpp:
+        * xml/XSLTProcessor.cpp:
+        Added includes as needed to keep compiling, since there are fewer
+        includes in Frame.h.
+
 2006-11-05  Alexey Proskuryakov  <ap@nypop.com>
 
         Reviewed by Dave Harrison.
index daad9e9..9b68f29 100644 (file)
@@ -21,9 +21,9 @@
 #include "config.h"
 #include "kjs_events.h"
 
+#include "CString.h"
 #include "Clipboard.h"
 #include "ClipboardEvent.h"
-#include "CString.h"
 #include "Document.h"
 #include "Event.h"
 #include "EventNames.h"
@@ -36,6 +36,7 @@
 #include "JSMutationEvent.h"
 #include "JSOverflowEvent.h"
 #include "JSWheelEvent.h"
+#include "KURL.h"
 #include "KeyboardEvent.h"
 #include "MouseEvent.h"
 #include "MutationEvent.h"
index 9999be4..02af3df 100644 (file)
@@ -25,6 +25,7 @@
 #include "DocLoader.h"
 #include "EventNames.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLAppletElement.h"
 #include "HTMLAreaElement.h"
 #include "HTMLBRElement.h"
index 267d0a1..a03d039 100644 (file)
@@ -34,6 +34,7 @@
 #include "FrameLoadRequest.h"
 #include "FrameLoader.h"
 #include "FrameTree.h"
+#include "FrameView.h"
 #include "HTMLDocument.h"
 #include "JSCSSRule.h"
 #include "JSCSSValue.h"
index 10e3628..c2b6142 100644 (file)
@@ -44,10 +44,8 @@ namespace KJS {
 #ifdef __OBJC__
 
 @class NSArray;
-@class NSAttributedString;
 @class NSDictionary;
 @class NSEvent;
-@class NSFileWrapper;
 @class NSFont;
 @class NSImage;
 @class NSMenu;
@@ -60,10 +58,8 @@ namespace KJS {
 #else
 
 class NSArray;
-class NSAttributedString;
 class NSDictionary;
 class NSEvent;
-class NSFileWrapper;
 class NSFont;
 class NSImage;
 class NSMenu;
@@ -90,56 +86,62 @@ enum SelectionDirection {
     SelectingPrevious
 };
 
-class FrameMac : public Frame
-{
+class FrameMac : public Frame {
+    friend class Frame;
+
 public:
     FrameMac(Page*, Element*, PassRefPtr<EditorClient>);
     ~FrameMac();
 
-    // FIXME: Merge these and move them into FrameLoader.
-    virtual void urlSelected(const FrameLoadRequest&, Event*);
-    virtual Frame* createFrame(const KURL&, const String& name, Element* ownerElement, const String& referrer);
-    virtual void submitForm(const FrameLoadRequest&, Event*);
-
-    virtual Plugin* createPlugin(Element*, const KURL&,
-        const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType);
+    void setBridge(WebCoreFrameBridge*);
+    WebCoreFrameBridge* bridge() const { return _bridge; }
 
-    virtual void clear(bool clearWindowProperties = true);
+private:    
+    WebCoreFrameBridge* _bridge;
 
-    void setBridge(WebCoreFrameBridge* p);
-    WebCoreFrameBridge* bridge() const { return _bridge; }
+// === undecided, may or may not belong here
 
+public:
     virtual void setView(FrameView*);
-    virtual void frameDetached();
+    
+    static WebCoreFrameBridge* bridgeForWidget(const Widget*);
 
-    void advanceToNextMisspelling(bool startBeforeSelection = false);
+    NSString* searchForLabelsAboveCell(RegularExpression*, HTMLTableCellElement*);
+    NSString* searchForLabelsBeforeElement(NSArray* labels, Element*);
+    NSString* matchLabelsAgainstElement(NSArray* labels, Element*);
+
+    virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
+    virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
+    virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
+    virtual KJS::Bindings::RootObject* bindingRootObject();
+
+    void addPluginRootObject(KJS::Bindings::RootObject*);
     
-    virtual void setTitle(const String&);
-    virtual void setStatusBarText(const String&);
+    KJS::Bindings::RootObject* executionContextForDOM();
+    
+    WebScriptObject* windowScriptObject();
+    NPObject* windowScriptNPObject();
+    
+    NSMutableDictionary* dashboardRegionsDictionary();
+    void dashboardRegionsChanged();
 
-    virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
-    virtual void redirectDataToPlugin(Widget* pluginWidget);
+    void willPopupMenu(NSMenu *);
 
-    virtual void scheduleClose();
+private:    
+    KJS::Bindings::RootObject* _bindingRoot; // The root object used for objects bound outside the context of a plugin.
+    Vector<KJS::Bindings::RootObject*> m_rootObjects;
+    WebScriptObject* _windowScriptObject;
+    NPObject* _windowScriptNPObject;
+
+// === to be moved into Chrome
+
+public:
+    virtual void setStatusBarText(const String&);
 
     virtual void focusWindow();
     virtual void unfocusWindow();
 
-    virtual void saveDocumentState();
-    virtual void restoreDocumentState();
-    
-    virtual void addMessageToConsole(const String& message,  unsigned int lineNumber, const String& sourceID);
-    
-    NSView* nextKeyView(Node* startingPoint, SelectionDirection);
-    NSView* nextKeyViewInFrameHierarchy(Node* startingPoint, SelectionDirection);
-    static NSView* nextKeyViewForWidget(Widget* startingPoint, SelectionDirection);
-    static bool currentEventIsKeyboardOptionTab();
-    static bool handleKeyboardOptionTabInView(NSView* view);
-    
-    virtual bool tabsToLinks() const;
-    virtual bool tabsToAllControls() const;
-    
-    static bool currentEventIsMouseDownInWidget(Widget* candidate);
+    virtual void addMessageToConsole(const String& message, unsigned int lineNumber, const String& sourceID);
     
     virtual void runJavaScriptAlert(const String&);
     virtual bool runJavaScriptConfirm(const String&);
@@ -151,20 +153,15 @@ public:
     virtual bool statusbarVisible();
     virtual bool toolbarVisible();
 
-    bool shouldClose();
-
-    virtual void createEmptyDocument();
-
-    static WebCoreFrameBridge* bridgeForWidget(const Widget*);
-    
-    virtual String userAgent() const;
+    FloatRect customHighlightLineRect(const AtomicString& type, const FloatRect& lineRect);
+    void paintCustomHighlight(const AtomicString& type, const FloatRect& boxRect, const FloatRect& lineRect, bool text, bool line);
 
-    virtual String mimeTypeForFileName(const String&) const;
+    virtual void print();
 
-    NSImage* selectionImage(bool forceWhiteText = false) const;
-    NSImage* snapshotDragImage(Node* node, NSRect* imageRect, NSRect* elementRect) const;
+// === to be moved into Editor
 
-    bool dispatchDragSrcEvent(const AtomicString &eventType, const PlatformMouseEvent&) const;
+public:
+    void advanceToNextMisspelling(bool startBeforeSelection = false);
 
     NSFont* fontForSelection(bool* hasMultipleFonts) const;
     NSDictionary* fontAttributesForSelectionStart() const;
@@ -174,23 +171,6 @@ public:
     virtual void markMisspellingsInAdjacentWords(const VisiblePosition&);
     virtual void markMisspellings(const Selection&);
 
-    void mouseDown(NSEvent*);
-    void mouseDragged(NSEvent*);
-    void mouseUp(NSEvent*);
-    void mouseMoved(NSEvent*);
-    bool keyEvent(NSEvent*);
-    bool wheelEvent(NSEvent*);
-
-    void sendFakeEventsAfterWidgetTracking(NSEvent* initiatingEvent);
-
-    virtual bool lastEventIsMouseUp() const;
-    void setActivationEventNumber(int num) { _activationEventNumber = num; }
-
-    bool dragHysteresisExceeded(float dragLocationX, float dragLocationY) const;
-    bool eventMayStartDrag(NSEvent*) const;
-    void dragSourceMovedTo(const PlatformMouseEvent&);
-    void dragSourceEndedAt(const PlatformMouseEvent&, NSDragOperation);
-
     bool canDHTMLCut();
     bool canDHTMLCopy();
     bool canDHTMLPaste();
@@ -198,35 +178,6 @@ public:
     bool tryDHTMLCopy();
     bool tryDHTMLPaste();
     
-    bool sendContextMenuEvent(NSEvent*);
-
-    bool passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults&);
-    bool passWidgetMouseDownEventToWidget(RenderWidget*);
-    bool passMouseDownEventToWidget(Widget*);
-    bool passSubframeEventToSubframe(MouseEventWithHitTestResults&, Frame* subframePart);
-    bool passWheelEventToWidget(Widget*);
-    
-    NSString* searchForLabelsAboveCell(RegularExpression*, HTMLTableCellElement*);
-    NSString* searchForLabelsBeforeElement(NSArray* labels, Element* element);
-    NSString* matchLabelsAgainstElement(NSArray* labels, Element* element);
-
-    virtual void tokenizerProcessedData();
-
-    virtual String overrideMediaType() const;
-    
-    WebCoreKeyboardUIMode keyboardUIMode() const;
-
-    void didTellBridgeAboutLoad(const String& URL);
-    bool haveToldBridgeAboutLoad(const String& URL);
-
-    virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
-    virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
-    virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
-    virtual KJS::Bindings::RootObject* bindingRootObject();
-    virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>& args);
-
-    void addPluginRootObject(KJS::Bindings::RootObject* root);
-    
     virtual void registerCommandForUndo(PassRefPtr<EditCommand>);
     virtual void registerCommandForRedo(PassRefPtr<EditCommand>);
     virtual void clearUndoRedoOperations();
@@ -247,65 +198,87 @@ public:
     virtual void didBeginEditing() const;
     virtual void didEndEditing() const;
     
-    virtual void textFieldDidBeginEditing(Element*);
-    virtual void textFieldDidEndEditing(Element*);
-    virtual void textDidChangeInTextField(Element*);
-    virtual bool doTextFieldCommandFromEvent(Element*, const PlatformKeyboardEvent*);
-    virtual void textWillBeDeletedInTextField(Element*);
-    virtual void textDidChangeInTextArea(Element*);
-    
-    virtual bool inputManagerHasMarkedText() const;
-    
     virtual void setSecureKeyboardEntry(bool);
     virtual bool isSecureKeyboardEntry();
 
-    KJS::Bindings::RootObject* executionContextForDOM();
+    void setMarkedTextRange(const Range* , NSArray* attributes, NSArray* ranges);
+    virtual Range* markedTextRange() const { return m_markedTextRange.get(); }
+
+private:
+    bool dispatchCPPEvent(const AtomicString &eventType, ClipboardAccessPolicy policy);
+
+    void freeClipboard();
+
+    void registerCommandForUndoOrRedo(PassRefPtr<EditCommand>, bool isRedo);
+
+    bool _haveUndoRedoOperations;
+    RefPtr<Range> m_markedTextRange;
     
-    WebScriptObject* windowScriptObject();
-    NPObject* windowScriptNPObject();
+// === to be moved into EventHandler
+
+public:
+    NSView* nextKeyView(Node* startingPoint, SelectionDirection);
+    NSView* nextKeyViewInFrameHierarchy(Node* startingPoint, SelectionDirection);
+    static NSView* nextKeyViewForWidget(Widget* startingPoint, SelectionDirection);
+    static bool currentEventIsKeyboardOptionTab();
+    static bool handleKeyboardOptionTabInView(NSView* view);
     
-    virtual void partClearedInBegin();
+    virtual bool tabsToLinks() const;
+    virtual bool tabsToAllControls() const;
     
-    // Implementation of CSS property -webkit-user-drag == auto
-    virtual bool shouldDragAutoNode(Node*, const IntPoint&) const;
+    static bool currentEventIsMouseDownInWidget(Widget* candidate);
 
-    void setMarkedTextRange(const Range* , NSArray* attributes, NSArray* ranges);
-    virtual Range* markedTextRange() const { return m_markedTextRange.get(); }
+    NSImage* selectionImage(bool forceWhiteText = false) const;
+    NSImage* snapshotDragImage(Node* node, NSRect* imageRect, NSRect* elementRect) const;
 
-    virtual void didFirstLayout();
-    
-    NSMutableDictionary* dashboardRegionsDictionary();
-    void dashboardRegionsChanged();
+    bool dispatchDragSrcEvent(const AtomicString &eventType, const PlatformMouseEvent&) const;
 
-    void willPopupMenu(NSMenu *);
+    void mouseDown(NSEvent*);
+    void mouseDragged(NSEvent*);
+    void mouseUp(NSEvent*);
+    void mouseMoved(NSEvent*);
+    bool keyEvent(NSEvent*);
+    bool wheelEvent(NSEvent*);
+
+    void sendFakeEventsAfterWidgetTracking(NSEvent* initiatingEvent);
+
+    virtual bool lastEventIsMouseUp() const;
+    void setActivationEventNumber(int num) { _activationEventNumber = num; }
+
+    bool dragHysteresisExceeded(float dragLocationX, float dragLocationY) const;
+    bool eventMayStartDrag(NSEvent*) const;
+    void dragSourceMovedTo(const PlatformMouseEvent&);
+    void dragSourceEndedAt(const PlatformMouseEvent&, NSDragOperation);
+
+    bool sendContextMenuEvent(NSEvent*);
+
+    bool passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults&);
+    bool passWidgetMouseDownEventToWidget(RenderWidget*);
+    bool passMouseDownEventToWidget(Widget*);
+    bool passSubframeEventToSubframe(MouseEventWithHitTestResults&, Frame* subframePart);
+    bool passWheelEventToWidget(Widget*);
     
-    virtual bool isCharacterSmartReplaceExempt(UChar, bool);
+    WebCoreKeyboardUIMode keyboardUIMode() const;
+
+    virtual void textFieldDidBeginEditing(Element*);
+    virtual void textFieldDidEndEditing(Element*);
+    virtual void textDidChangeInTextField(Element*);
+    virtual bool doTextFieldCommandFromEvent(Element*, const PlatformKeyboardEvent*);
+    virtual void textWillBeDeletedInTextField(Element*);
+    virtual void textDidChangeInTextArea(Element*);
     
-    virtual bool mouseDownMayStartSelect() const { return _mouseDownMayStartSelect; }
+    virtual bool inputManagerHasMarkedText() const;
     
-    virtual void handledOnloadEvents();
+    // Implementation of CSS property -webkit-user-drag == auto
+    virtual bool shouldDragAutoNode(Node*, const IntPoint&) const;
 
     virtual bool canRedo() const;
     virtual bool canUndo() const;
-    virtual void print();
 
-    FloatRect customHighlightLineRect(const AtomicString& type, const FloatRect& lineRect);
-    void paintCustomHighlight(const AtomicString& type, const FloatRect& boxRect, const FloatRect& lineRect, bool text, bool line);
+    virtual bool mouseDownMayStartSelect() const { return _mouseDownMayStartSelect; }
     
     NSEvent* currentEvent() { return _currentEvent; }
-    virtual KURL originalRequestURL() const;
-
-    virtual bool canGoBackOrForward(int distance) const;
-    virtual void goBackOrForward(int distance);
-    virtual int getHistoryLength();
-    virtual KURL historyURL(int distance);
 
-protected:
-    virtual void startRedirectionTimer();
-    virtual void stopRedirectionTimer();
-    virtual void cleanupPluginObjects();
-    virtual bool isLoadTypeReload();
-    
 private:
     virtual void handleMousePressEvent(const MouseEventWithHitTestResults&);
     virtual void handleMouseMoveEvent(const MouseEventWithHitTestResults&);
@@ -315,17 +288,9 @@ private:
 
     NSView* nextKeyViewInFrame(Node* startingPoint, SelectionDirection, bool* focusCallResultedInViewBeingCreated = 0);
     static NSView* documentViewForNode(Node*);
-    
-    bool dispatchCPPEvent(const AtomicString &eventType, ClipboardAccessPolicy policy);
 
     NSImage* imageFromRect(NSRect) const;
 
-    void freeClipboard();
-
-    void registerCommandForUndoOrRedo(PassRefPtr<EditCommand>, bool isRedo);
-
-    WebCoreFrameBridge* _bridge;
-    
     NSView* _mouseDownView;
     bool _mouseDownWasInSubframe;
     bool _sendingEventToSubview;
@@ -338,19 +303,72 @@ private:
     
     static NSEvent* _currentEvent;
 
-    bool _haveUndoRedoOperations;
+// === to be moved into FrameLoader
+
+public:
+    virtual void urlSelected(const FrameLoadRequest&, Event*);
+    virtual Frame* createFrame(const KURL&, const String& name, Element* ownerElement, const String& referrer);
+    virtual void submitForm(const FrameLoadRequest&, Event*);
+
+    virtual Plugin* createPlugin(Element*, const KURL&,
+        const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType);
+
+    virtual void clear(bool clearWindowProperties = true);
+
+    virtual void frameDetached();
+
+    virtual void setTitle(const String&);
+
+    virtual void scheduleClose();
+
+    virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
+    virtual void redirectDataToPlugin(Widget* pluginWidget);
+
+    virtual void saveDocumentState();
+    virtual void restoreDocumentState();
     
-    HashSet<String> urlsBridgeKnowsAbout;
+    bool shouldClose();
 
-    friend class Frame;
+    virtual void createEmptyDocument();
 
-    KJS::Bindings::RootObject* _bindingRoot;  // The root object used for objects
-                                            // bound outside the context of a plugin.
-    Vector<KJS::Bindings::RootObject*> m_rootObjects;
-    WebScriptObject* _windowScriptObject;
-    NPObject* _windowScriptNPObject;
+    virtual String userAgent() const;
 
-    RefPtr<Range> m_markedTextRange;
+    virtual void tokenizerProcessedData();
+
+    virtual String overrideMediaType() const;
+    
+    void didTellBridgeAboutLoad(const String& URL);
+    bool haveToldBridgeAboutLoad(const String& URL);
+
+    virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>& args);
+
+    virtual void partClearedInBegin();
+    
+    virtual void didFirstLayout();
+
+    virtual void handledOnloadEvents();
+
+    virtual KURL originalRequestURL() const;
+
+    virtual bool canGoBackOrForward(int distance) const;
+    virtual void goBackOrForward(int distance);
+    virtual int getHistoryLength();
+    virtual KURL historyURL(int distance);
+
+private:
+    virtual void startRedirectionTimer();
+    virtual void stopRedirectionTimer();
+    virtual void cleanupPluginObjects();
+    virtual bool isLoadTypeReload();
+
+    HashSet<String> urlsBridgeKnowsAbout;
+
+// === to be moved into the Platform directory
+
+public:
+    virtual String mimeTypeForFileName(const String&) const;
+    virtual bool isCharacterSmartReplaceExempt(UChar, bool);
+    
 };
 
 inline FrameMac* Mac(Frame* frame) { return static_cast<FrameMac*>(frame); }
index fdc64f2..624bb57 100644 (file)
@@ -37,6 +37,8 @@
 #import "Cursor.h"
 #import "DOMInternal.h"
 #import "DocumentLoader.h"
+#import "EditCommand.h"
+#import "EditorClient.h"
 #import "Event.h"
 #import "EventNames.h"
 #import "FloatRect.h"
@@ -47,6 +49,7 @@
 #import "FrameLoaderClient.h"
 #import "FrameLoaderTypes.h"
 #import "FramePrivate.h"
+#import "FrameView.h"
 #import "GraphicsContext.h"
 #import "HTMLDocument.h"
 #import "HTMLFormElement.h"
@@ -83,6 +86,7 @@
 #import "WebScriptObjectPrivate.h"
 #import "csshelper.h"
 #import "htmlediting.h"
+#import "kjs_proxy.h"
 #import "kjs_window.h"
 #import "visible_units.h"
 #import <Carbon/Carbon.h>
@@ -160,13 +164,13 @@ static SEL selectorForKeyEvent(const PlatformKeyboardEvent* event)
 FrameMac::FrameMac(Page* page, Element* ownerElement, PassRefPtr<EditorClient> client)
     : Frame(page, ownerElement, client)
     , _bridge(nil)
+    , _bindingRoot(0)
+    , _windowScriptObject(0)
+    , _windowScriptNPObject(0)
     , _mouseDownView(nil)
     , _sendingEventToSubview(false)
     , _mouseDownMayStartSelect(false)
     , _activationEventNumber(0)
-    , _bindingRoot(0)
-    , _windowScriptObject(0)
-    , _windowScriptNPObject(0)
 {
      if (!sharedDragInfo)
          sharedDragInfo = new FrameMacDragInfo;
index b1e995d..07b8ef5 100644 (file)
 #import "EventNames.h"
 #import "FontData.h"
 #import "FrameMac.h"
+#import "FrameView.h"
 #import "HTMLAreaElement.h"
 #import "HTMLCollection.h"
-#import "HTMLTextAreaElement.h"
-#import "htmlediting.h"
 #import "HTMLFrameElement.h"
 #import "HTMLInputElement.h"
 #import "HTMLLabelElement.h"
 #import "HTMLMapElement.h"
 #import "HTMLNames.h"
 #import "HTMLSelectElement.h"
+#import "HTMLTextAreaElement.h"
 #import "HitTestRequest.h"
 #import "HitTestResult.h"
 #import "RenderImage.h"
@@ -55,6 +55,7 @@
 #import "WebCoreFrameBridge.h"
 #import "WebCoreFrameView.h"
 #import "WebCoreViewFactory.h"
+#import "htmlediting.h"
 #import "kjs_html.h"
 #import "visible_units.h"
 #include <mach-o/dyld.h>
index ec86c63..7ce2b3c 100644 (file)
@@ -370,9 +370,6 @@ typedef enum {
 
 // The WebCoreFrameBridge protocol contains methods for use by the WebCore side of the bridge.
 
-// In NSArray objects for post data, NSData objects represent literal data, and NSString objects represent encoded files.
-// The encoding is the standard form encoding for uploading files.
-
 @protocol WebCoreFrameBridge
 
 - (NSView *)documentView;
@@ -384,16 +381,15 @@ typedef enum {
 
 - (WebCoreFrameBridge *)createChildFrameNamed:(NSString *)frameName withURL:(NSURL *)URL referrer:(const WebCore::String&)referrer ownerElement:(WebCoreElement *)ownerElement allowsScrolling:(BOOL)allowsScrolling marginWidth:(int)width marginHeight:(int)height;
 
-- (BOOL)areToolbarsVisible;
+- (NSWindow *)window;
+
 - (void)setToolbarsVisible:(BOOL)visible;
-- (BOOL)isStatusbarVisible;
 - (void)setStatusbarVisible:(BOOL)visible;
-- (BOOL)areScrollbarsVisible;
 - (void)setScrollbarsVisible:(BOOL)visible;
-- (NSWindow *)window;
-
 - (void)setWindowIsResizable:(BOOL)resizable;
-- (BOOL)windowIsResizable;
+
+- (BOOL)areToolbarsVisible;
+- (BOOL)isStatusbarVisible;
 
 - (NSResponder *)firstResponder;
 - (void)makeFirstResponder:(NSResponder *)responder;
@@ -419,7 +415,6 @@ typedef enum {
 - (void)formControlIsResigningFirstResponder:(NSView *)formControl;
 
 - (NSView *)nextKeyViewOutsideWebFrameViews;
-- (NSView *)nextValidKeyViewOutsideWebFrameViews;
 - (NSView *)previousKeyViewOutsideWebFrameViews;
 
 - (void)saveDocumentState:(NSArray *)documentState;
@@ -467,8 +462,6 @@ typedef enum {
 
 - (void)setHasBorder:(BOOL)hasBorder;
 
-- (NSFileWrapper *)fileWrapperForURL:(NSURL *)URL;
-
 - (void)print;
 
 - (jobject)getAppletInView:(NSView *)view;
@@ -508,7 +501,6 @@ typedef enum {
 
 - (NSString*)imageTitleForFilename:(NSString*)filename size:(NSSize)size;
 
-
 @end
 
 // This interface definition allows those who hold a WebCoreFrameBridge * to call all the methods
@@ -518,9 +510,8 @@ typedef enum {
 @interface WebCoreFrameBridge (SubclassResponsibility) <WebCoreFrameBridge>
 @end
 
-// Protocols that make up part of the interaces above.
+// Protocols that make up part of the interfaces above.
 
 @protocol WebCoreRenderTreeCopier <NSObject>
 - (NSObject *)nodeWithName:(NSString *)name position:(NSPoint)p rect:(NSRect)rect view:(NSView *)view children:(NSArray *)children;
 @end
-
index c2f4159..127878c 100644 (file)
@@ -44,6 +44,7 @@
 #import "FrameLoaderClient.h"
 #import "FrameMac.h"
 #import "FrameTree.h"
+#import "FrameView.h"
 #import "GraphicsContext.h"
 #import "HTMLDocument.h"
 #import "HTMLFormElement.h"
index 9532ec6..83aaaf9 100644 (file)
@@ -44,6 +44,7 @@
 #include "FontFamilyValue.h"
 #include "FontValue.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLDocument.h"
 #include "HTMLElement.h"
 #include "HTMLInputElement.h"
index 7a980f1..9c158f6 100644 (file)
 #include "EventNames.h"
 #include "ExceptionCode.h"
 #include "Frame.h"
-#if PLATFORM(MAC)
 #include "FrameLoader.h"
-#endif
 #include "FrameTree.h"
+#include "FrameView.h"
 #include "HTMLBodyElement.h"
 #include "HTMLDocument.h"
 #include "HTMLElementFactory.h"
index 7edbf68..89e5600 100644 (file)
@@ -22,6 +22,7 @@
  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
+
 #include "config.h"
 #include "Element.h"
 
@@ -29,6 +30,7 @@
 #include "Document.h"
 #include "ExceptionCode.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLNames.h"
 #include "NamedAttrMap.h"
 #include "RenderBlock.h"
index ae94e39..ced9e7b 100644 (file)
@@ -32,6 +32,7 @@
 #include "EventListener.h"
 #include "EventNames.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLNames.h"
 #include "TextStream.h"
 #include "KeyboardEvent.h"
index 7dd5460..38ca04a 100644 (file)
@@ -28,6 +28,7 @@
 #include "DOMWindow.h"
 #include "Document.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "Node.h"
 #include "RenderLayer.h"
 #include "RenderObject.h"
index 92b01e4..6e584d7 100644 (file)
@@ -35,6 +35,7 @@
 #include "DocumentType.h"
 #include "EventNames.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLNames.h"
 #include "HTMLScriptElement.h"
 #include "HTMLTableSectionElement.h"
index a222ef4..e9fb021 100644 (file)
@@ -33,6 +33,7 @@
 #include "EventNames.h"
 #include "Frame.h"
 #include "FrameTree.h"
+#include "FrameView.h"
 #include "GraphicsContext.h"
 #include "HTMLInputElement.h"
 #include "HTMLNames.h"
@@ -51,6 +52,8 @@ namespace WebCore {
 using namespace EventNames;
 using namespace HTMLNames;
 
+const int NoXPosForVerticalArrowNavigation = INT_MIN;
+
 SelectionController::SelectionController(Frame* frame, bool isDragCaretController)
     : m_needsLayout(true)
     , m_modifyBiasSet(false)
@@ -124,7 +127,7 @@ void SelectionController::setSelection(const Selection& s, bool closeTyping, boo
     m_frame->selectionLayoutChanged();
     // Always clear the x position used for vertical arrow navigation.
     // It will be restored by the vertical arrow navigation code if necessary.
-    m_frame->setXPosForVerticalArrowNavigation(Frame::NoXPosForVerticalArrowNavigation);
+    m_frame->setXPosForVerticalArrowNavigation(NoXPosForVerticalArrowNavigation);
     selectFrameElementInParentIfFullySelected();
     m_frame->notifyRendererOfSelectionChange(userTriggered);
     m_frame->respondToChangedSelection(oldSelection, closeTyping);
@@ -644,7 +647,7 @@ int SelectionController::xPosForVerticalArrowNavigation(EPositionType type, bool
     if (!frame)
         return x;
         
-    if (recalc || frame->xPosForVerticalArrowNavigation() == Frame::NoXPosForVerticalArrowNavigation) {
+    if (recalc || frame->xPosForVerticalArrowNavigation() == NoXPosForVerticalArrowNavigation) {
         pos = VisiblePosition(pos, m_sel.affinity()).deepEquivalent();
         x = pos.node()->renderer()->caretRect(pos.offset(), m_sel.affinity()).x();
         frame->setXPosForVerticalArrowNavigation(x);
index 8739fde..b510b59 100644 (file)
  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
+
 #include "config.h"
 #include "HTMLBaseElement.h"
 
 #include "Document.h"
 #include "Frame.h"
 #include "HTMLNames.h"
+#include "KURL.h"
 #include "csshelper.h"
 
 namespace WebCore {
index 13924a9..cef8df3 100644 (file)
@@ -65,6 +65,7 @@
 #include "HTMLElementFactory.h"
 #include "HTMLNames.h"
 #include "HTMLTokenizer.h"
+#include "KURL.h"
 #include "cssstyleselector.h"
 
 #include "DocTypeStrings.cpp"
index 90025d7..fd277d0 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "CSSPropertyNames.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLDocument.h"
 #include "HTMLNames.h"
 #include "csshelper.h"
index 900c2c8..323b57d 100644 (file)
@@ -33,6 +33,7 @@
 #include "FrameView.h"
 #include "HTMLNames.h"
 #include "HTMLFrameSetElement.h"
+#include "KURL.h"
 #include "Page.h"
 #include "RenderFrame.h"
 
index b71642a..8da2900 100644 (file)
 #include "EventNames.h"
 #include "Frame.h"
 #include "HTMLFormElement.h"
+#include "HTMLNames.h"
 #include "RenderTheme.h"
 #include "RenderWidget.h"
-#include "HTMLNames.h"
+#include "Widget.h"
 
 namespace WebCore {
 
index 1f397a0..327145f 100644 (file)
@@ -27,6 +27,7 @@
 #include "EventNames.h"
 #include "ExceptionCode.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLFormElement.h"
 #include "HTMLDocument.h"
 #include "HTMLImageLoader.h"
index fb7de99..60873aa 100644 (file)
@@ -34,6 +34,7 @@
 #include "DocumentFragment.h"
 #include "EventNames.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLViewSourceDocument.h"
 #include "HTMLElement.h"
 #include "SystemTime.h"
index b2da977..89a5f6d 100644 (file)
@@ -53,6 +53,7 @@
 #import "ResourceResponse.h"
 #import "ResourceResponseMac.h"
 #import "SubresourceLoader.h"
+#import "TextResourceDecoder.h"
 #import "WebCoreFrameBridge.h"
 #import "WebCoreIconDatabaseBridge.h"
 #import "WebCorePageBridge.h"
index d20c493..7f92982 100644 (file)
 #include "Cache.h"
 #include "CachedCSSStyleSheet.h"
 #include "DOMImplementation.h"
+#include "DOMWindow.h"
 #include "DocLoader.h"
 #include "DocumentType.h"
 #include "EditingText.h"
+#include "EditorClient.h"
 #include "Event.h"
 #include "EventNames.h"
 #include "FloatRect.h"
 #include "Frame.h"
+#include "FrameLoader.h"
 #include "FrameLoadRequest.h"
+#include "FrameView.h"
 #include "GraphicsContext.h"
 #include "HTMLFormElement.h"
 #include "HTMLFrameElement.h"
@@ -80,6 +84,7 @@
 #include "XMLTokenizer.h"
 #include "cssstyleselector.h"
 #include "htmlediting.h"
+#include "kjs_proxy.h"
 #include "kjs_window.h"
 #include "markup.h"
 #include "visible_units.h"
@@ -845,6 +850,11 @@ const String& Frame::responseMIMEType() const
     return d->m_responseMIMEType;
 }
 
+void Frame::begin()
+{
+    begin(KURL());
+}
+
 void Frame::begin(const KURL& url)
 {
   if (d->m_workingURL.isEmpty())
@@ -3553,4 +3563,69 @@ void Frame::setProhibitsScrolling(const bool prohibit)
     d->m_prohibitsScrolling = prohibit;
 }
 
+FramePrivate::FramePrivate(Page* page, Frame* parent, Frame* thisFrame, Element* ownerElement, PassRefPtr<EditorClient> client)
+    : m_page(page)
+    , m_treeNode(thisFrame, parent)
+    , m_ownerElement(ownerElement)
+    , m_jscript(0)
+    , m_runningScripts(0)
+    , m_bJScriptEnabled(true)
+    , m_bJavaEnabled(true)
+    , m_bPluginsEnabled(true)
+    , m_settings(0)
+    , m_bComplete(true)
+    , m_bLoadingMainResource(false)
+    , m_bLoadEventEmitted(true)
+    , m_bUnloadEventEmitted(true)
+    , m_haveEncoding(false)
+    , m_bHTTPRefresh(false)
+    , m_redirectLockHistory(false)
+    , m_redirectUserGesture(false)
+    , m_cachePolicy(CachePolicyVerify)
+    , m_redirectionTimer(thisFrame, &Frame::redirectionTimerFired)
+    , m_scheduledRedirection(noRedirectionScheduled)
+    , m_delayRedirect(0)
+    , m_zoomFactor(parent ? parent->d->m_zoomFactor : 100)
+    , m_submitForm(0)
+    , m_bMousePressed(false)
+    , m_beganSelectingText(false)
+    , m_selectionController(thisFrame)
+    , m_caretBlinkTimer(thisFrame, &Frame::caretBlinkTimerFired)
+    , m_editor(thisFrame, client)
+    , m_command(thisFrame)
+    , m_caretVisible(false)
+    , m_caretPaint(true)
+    , m_bFirstData(true)
+    , m_bCleared(true)
+    , m_isActive(false)
+    , m_opener(0)
+    , m_openedByJS(false)
+    , m_bPendingChildRedirection(false)
+    , m_executingJavaScriptFormAction(false)
+    , m_cancelWithLoadInProgress(false)
+    , m_lifeSupportTimer(thisFrame, &Frame::lifeSupportTimerFired)
+    , m_loader(new FrameLoader(thisFrame))
+    , m_userStyleSheetLoader(0)
+    , m_iconLoader(0)
+    , m_autoscrollTimer(thisFrame, &Frame::autoscrollTimerFired)
+    , m_autoscrollRenderer(0)
+    , m_mouseDownMayStartAutoscroll(false)
+    , m_mouseDownMayStartDrag(false)
+    , m_paintRestriction(PaintRestrictionNone)
+    , m_markedTextUsesUnderlines(false)
+    , m_highlightTextMatches(false)
+    , m_windowHasFocus(false)
+    , m_inViewSourceMode(false)
+    , frameCount(0)
+    , m_prohibitsScrolling(false)
+{
+}
+
+FramePrivate::~FramePrivate()
+{
+    delete m_jscript;
+    delete m_loader;
+    delete m_iconLoader;
+}
+
 } // namespace WebCore
index cec4aeb..c73b28f 100644 (file)
@@ -1,4 +1,4 @@
-// -*- c-basic-offset: 2 -*-
+// -*- c-basic-offset: 4 -*-
  /* This file is part of the KDE project
  *
  * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
 
 #include "Color.h"
 #include "EditAction.h"
-#include "FrameView.h"
-#include "KURL.h"
-#include "Node.h"
 #include "RenderLayer.h"
-#include "ScrollBar.h"
 #include "TextAffinity.h"
 #include "TextGranularity.h"
+#include "UChar.h"
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace KJS {
@@ -53,32 +51,46 @@ namespace KJS {
 
 namespace WebCore {
 
-class CommandByName;
 class CSSComputedStyleDeclaration;
 class CSSMutableStyleDeclaration;
 class CSSStyleDeclaration;
-class DrawContentsEvent;
+class CommandByName;
 class DOMWindow;
+class Document;
+class DrawContentsEvent;
 class EditCommand;
 class Editor;
 class EditorClient;
+class Element;
+class FloatRect;
 class FormData;
-class FramePrivate;
 class FrameLoader;
+class FramePrivate;
 class FrameTree;
+class FrameView;
+class GraphicsContext;
+class HTMLFormElement;
+class HitTestResult;
+class IntRect;
 class KJSProxy;
+class KURL;
+class MouseEventWithHitTestResults;
+class Node;
 class Page;
+class PlatformKeyboardEvent;
 class Plugin;
-class MouseEventWithHitTestResults;
-class HitTestResult;
 class Range;
 class RenderLayer;
 class RenderObject;
+class RenderPart;
+class RenderStyle;
+class RenderWidget;
 class ResourceRequest;
 class Selection;
 class SelectionController;
 class Settings;
 class VisiblePosition;
+class Widget;
 
 struct FrameLoadRequest;
 
@@ -104,688 +116,511 @@ enum ObjectContentType {
 
 class Frame : public Shared<Frame> {
 public:
-  enum { NoXPosForVerticalArrowNavigation = INT_MIN };
+    Frame(Page*, Element*, PassRefPtr<EditorClient>);
+    void pageDestroyed();
+    virtual ~Frame();
+
+    virtual void setView(FrameView*);
+
+    Page* page() const;
+    Document* document() const;
+    FrameView* view() const;
+    RenderObject* renderer() const; // root renderer for the document contained in this frame
+
+    Element* ownerElement();
+    RenderPart* ownerRenderer(); // renderer for the element that contains this frame
+
+    FrameTree* tree() const;
+    SelectionController* selectionController() const;
+    DOMWindow* domWindow() const;
+    Editor* editor() const;
+    CommandByName* command() const;
+    FrameLoader* loader() const;
+    const Settings* settings() const;
+
+    friend class FrameGdk;
+    friend class FrameLoader;
+    friend class FrameMac;
+    friend class FramePrivate;
+    friend class FrameQt;
+    friend class FrameWin;
 
-  Frame(Page*, Element*, PassRefPtr<EditorClient>);
-  virtual ~Frame();
+private:
+    FramePrivate* d;
 
-  // FIXME: Merge these methods and move them into FrameLoader.
-  void changeLocation(const DeprecatedString& URL, const String& referrer, bool lockHistory = true, bool userGesture = false);
-  void urlSelected(const ResourceRequest&, const String& target, Event*, bool lockHistory = false);
-  virtual void urlSelected(const FrameLoadRequest&, Event*) = 0;
-  
-  bool requestFrame(Element* ownerElement, const String& url, const AtomicString& frameName);
-  virtual Frame* createFrame(const KURL& url, const String& name, Element* ownerElement, const String& referrer) = 0;
-  Frame* loadSubframe(Element* ownerElement, const KURL& url, const String& name, const String& referrer);
+// === undecided, may or may not belong here
+
+public:
+    bool javaScriptEnabled() const;
+    bool javaEnabled() const;
+    bool pluginsEnabled() const;
+
+    void paint(GraphicsContext*, const IntRect&);
+
+    void setUserStyleSheetLocation(const KURL&);
+    void setUserStyleSheet(const String& styleSheetData);
+
+    void setStandardFont(const String& name);
+    void setFixedFont(const String& name);
+
+    void setZoomFactor(int percent);
+    int zoomFactor() const;
+
+    bool inViewSourceMode() const;
+    void setInViewSourceMode(bool = true) const;
 
-  void submitForm(const char* action, const String& URL, const FormData&, const String& target, const String& contentType, const String& boundary, Event*);
-  void submitFormAgain();
-  virtual void submitForm(const FrameLoadRequest&, Event*) = 0;
+    void setJSStatusBarText(const String&);
+    void setJSDefaultStatusBarText(const String&);
+    String jsStatusBarText() const;
+    String jsDefaultStatusBarText() const;
+
+    virtual void setupRootForPrinting(bool onOrOff) { }
+    virtual Vector<IntRect> computePageRects(const IntRect& printRect, float userScaleFactor) { return Vector<IntRect>(); }
+
+    void keepAlive(); // Used to keep the frame alive when running a script that might destroy it.
+    static void endAllLifeSupport();
+
+    virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*) = 0;
+    virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*) = 0;
+    virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*) = 0;
+    virtual KJS::Bindings::RootObject* bindingRootObject() = 0;
+
+    void setDocument(Document*);
+
+    KJSProxy* scriptProxy();
+
+    void setSettings(Settings*);
+
+    bool isFrameSet() const;
+
+    bool scrollOverflow(ScrollDirection, ScrollGranularity);
+
+    void adjustPageHeight(float* newBottom, float oldTop, float oldBottom, float bottomLimit);
+
+    static void clearDocumentFocus(Widget*);
+
+    void forceLayout();
+    void forceLayoutWithPageWidthRange(float minPageWidth, float maxPageWidth);
+
+    void sendResizeEvent();
+    void sendScrollEvent();
+    bool scrollbarsVisible();
+    bool canMouseDownStartSelect(Node*);
+
+    void clearTimers();
+    static void clearTimers(FrameView*);
+
+    bool isActive() const;
+    virtual void setIsActive(bool flag);
+    void setWindowHasFocus(bool flag);
+
+    // Convenience, to avoid repeating the code to dig down to get this.
+    UChar backslashAsCurrencySymbol() const;
+
+    void setNeedsReapplyStyles();
+    String documentTypeString() const;
+
+protected:
+    virtual void cleanupPluginObjects() { }
 
-  void stop();
-  void stopLoading(bool sendUnload = false);
-  virtual bool closeURL();
 private:
-  void cancelRedirection(bool newLoadInProgress = false);
+    void lifeSupportTimerFired(Timer<Frame>*);
+    void endLifeSupport();
+
+// === to be moved into Chrome
 
 public:
-  void didExplicitOpen();
+    virtual void addMessageToConsole(const String& message,  unsigned int lineNumber, const String& sourceID) = 0;
+
+    virtual void runJavaScriptAlert(const String& message) = 0;
+    virtual bool runJavaScriptConfirm(const String& message) = 0;
+    virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result) = 0;  
+    virtual bool shouldInterruptJavaScript() = 0;
+    virtual bool locationbarVisible() = 0;
+    virtual bool menubarVisible() = 0;
+    virtual bool personalbarVisible() = 0;
+    virtual bool statusbarVisible() = 0;
+    virtual bool toolbarVisible() = 0;
+    virtual void scheduleClose() = 0;
+    virtual void focusWindow() = 0;
+    virtual void unfocusWindow() = 0;
+    virtual void print() = 0;
 
-  KURL iconURL();
-  void commitIconURLToIconDatabase();
-  
-  Page* page() const;
-  void pageDestroyed();
-  
-  FrameView* view() const;
-  virtual void setView(FrameView*);
-
-  /**
-   * Returns @p true if Javascript is enabled, @p false otherwise.
-   */
-  bool javaScriptEnabled() const;
-
-  /**
-   * Returns true if Java is enabled, false otherwise.
-   */
-  bool javaEnabled() const;
-  
-  /**
-   * Returns true if plugins are enabled, false otherwise.
-   */
-  bool pluginsEnabled() const;
-
-  /**
-   * Execute the specified snippet of JavaScript code.
-   */
-  KJS::JSValue* executeScript(Node*, const String& script, bool forceUserGesture = false);
-
-  /**
-   * Implementation of CSS property -webkit-user-drag == auto
-   */
-  virtual bool shouldDragAutoNode(Node*, const IntPoint&) const;
-  
-  /**
-   * Specifies whether images contained in the document should be loaded
-   * automatically or not.
-   *
-   * @note Request will be ignored if called before @ref begin().
-   */
-  void setAutoLoadImages(bool enable);
-  /**
-   * Returns whether images contained in the document are loaded automatically
-   * or not.
-   * @note that the returned information is unreliable as long as no begin()
-   * was called.
-   */
-  bool autoLoadImages() const;
-
-  KURL baseURL() const;
-  String baseTarget() const;
-
-  /**
-   * Schedules a redirection after @p delay seconds.
-   */
-  void scheduleRedirection(double delay, const DeprecatedString& url, bool lockHistory = true);
-
-  /**
-   * Make a location change, or schedule one for later.
-   * These are used for JavaScript-triggered location changes.
-   */
-  void scheduleLocationChange(const DeprecatedString& url, const String& referrer, bool lockHistory = true, bool userGesture = false);
-  void scheduleRefresh(bool userGesture = false);
-  bool isScheduledLocationChangePending() const;
-
-  /**
-   * Schedules a history navigation operation (go forward, go back, etc.).
-   * This is used for JavaScript-triggered location changes.
-   */
-  void scheduleHistoryNavigation(int steps);
-
-  virtual bool canGoBackOrForward(int distance) const = 0;
-  virtual void goBackOrForward(int distance) = 0;
-  virtual int getHistoryLength() = 0;
-  virtual KURL historyURL(int distance) = 0;
-
-  /**
-   * Clears the widget and prepares it for new content.
-   *
-   * If you want @ref url() to return
-   * for example "file:/tmp/test.html", you can use the following code:
-   * <PRE>
-   * view->begin(KURL("file:/tmp/test.html"));
-   * </PRE>
-   *
-   * @param url is the url of the document to be displayed.  Even if you
-   * are generating the HTML on the fly, it may be useful to specify
-   * a directory so that any images are found.
-   *
-   * All child frames and the old document are removed if you call
-   * this method.
-   */
-  virtual void begin(const KURL& url = KURL());
-
-  /**
-   * Writes another part of the HTML code to the widget.
-   *
-   * You may call
-   * this function many times in sequence. But remember: The fewer calls
-   * you make, the faster the widget will be.
-   *
-   * The HTML code is sent through a decoder which decodes the stream to
-   * Unicode.
-   *
-   * The @p len parameter is needed for streams encoded in utf-16,
-   * since these can have \0 chars in them. In case the encoding
-   * you're using isn't utf-16, you can safely leave out the length
-   * parameter.
-   *
-   * Attention: Don't mix calls to @ref write(const char*) with calls
-   * to @ref write(const String&).
-   *
-   * The result might not be what you want.
-   */
-  virtual void write(const char* str, int len = -1);
-
-  /**
-   * Writes another part of the HTML code to the widget.
-   *
-   * You may call
-   * this function many times in sequence. But remember: The fewer calls
-   * you make, the faster the widget will be.
-   */
-  virtual void write(const String&);
-
-  /**
-   * Call this after your last call to @ref write().
-   */
-  virtual void end();
-
-  void endIfNotLoading();
-
-  void paint(GraphicsContext*, const IntRect&);
-
-  void setEncoding(const String& encoding, bool userChosen);
-  String encoding() const;
-
-  /**
-   * Sets a user defined style sheet to be used on top of the HTML4,
-   * SVG and printing default style sheets.
-   */
-  void setUserStyleSheetLocation(const KURL&);
-  void setUserStyleSheet(const String& styleSheetData);
-  
-  /**
-   * Sets the standard font style.
-   *
-   * @param name The font name to use for standard text.
-   */
-  void setStandardFont(const String& name);
-
-  /**
-   * Sets the fixed font style.
-   *
-   * @param name The font name to use for fixed text, e.g.
-   * the <tt>&lt;pre&gt;</tt> tag.
-   */
-  void setFixedFont(const String& name);
-
-  /**
-   * Finds the anchor named @p name.
-   *
-   * If the anchor is found, the widget
-   * scrolls to the closest position. Returns @p if the anchor has
-   * been found.
-   */
-  bool gotoAnchor(const String& name);
-
-  /**
-   * Sets the Zoom factor. The value is given in percent, larger values mean a
-   * generally larger font and larger page contents. It is not guaranteed that
-   * all parts of the page are scaled with the same factor though.
-   *
-   * The given value should be in the range of 20..300, values outside that
-   * range are not guaranteed to work. A value of 100 will disable all zooming
-   * and show the page with the sizes determined via the given lengths in the
-   * stylesheets.
-   */
-  void setZoomFactor(int percent);
-
-  /**
-   * Returns the current zoom factor.
-   */
-  int zoomFactor() const;
-
-  /**
-   * Returns the text the user has marked.
-   */
-  virtual String selectedText() const;
-  
-  bool findString(const String&, bool, bool, bool);
+private:
+    virtual void setStatusBarText(const String&);
 
-  /**
-   * Returns the granularity of the selection (character, word, line, paragraph).
-   */
-  TextGranularity selectionGranularity() const;
-  
-  /**
-   * Sets the granularity of the selection (character, word, line, paragraph).
-   */
-  void setSelectionGranularity(TextGranularity granularity) const;
-
-  // FIXME: Replace these with functions on the selection controller.
-  bool shouldChangeSelection(const Selection&) const;
-  virtual bool shouldDeleteSelection(const Selection&) const;
-  void clearCaretRectIfNeeded();
-  void setFocusNodeIfNeeded();
-  void selectionLayoutChanged();
-  void notifyRendererOfSelectionChange(bool userTriggered);
-
-  /**
-   * Returns a mark, to be used as emacs uses it.
-   */
-  const Selection& mark() const;
-  void setMark(const Selection&);
-  
-  /**
-   * Transposes characters either side of caret selection.
-   */
-  void transpose();
-  
-  /**
-   * Invalidates the current selection.
-   */
-  void invalidateSelection();
-
-  void setCaretVisible(bool flag = true);
-  void paintCaret(GraphicsContext*, const IntRect&) const;  
-  void paintDragCaret(GraphicsContext*, const IntRect&) const;
-
-  /**
-   * Set info for vertical arrow navigation.
-   */
-  void setXPosForVerticalArrowNavigation(int x);
-
-  /**
-   * Get info for vertical arrow navigation.
-   */
-  int xPosForVerticalArrowNavigation() const;
-
-  /**
-   * Returns whether editing should end in the given range
-   */
-  virtual bool shouldBeginEditing(const Range*) const;
-
-  /**
-   * Returns whether editing should end in the given range
-   */
-  virtual bool shouldEndEditing(const Range*) const;
-
-  /**
-   * Called when editing has begun.
-   */
-  virtual void didBeginEditing() const {};
-   
-  /**
-   * Called when editing has ended.
-   */
-  virtual void didEndEditing() const {};
-    
-  /**
-   * Returns the contentEditable "override" value for the part
-   */
-  virtual bool isContentEditable() const;
-
-  virtual void textFieldDidBeginEditing(Element*);
-  virtual void textFieldDidEndEditing(Element*);
-  virtual void textDidChangeInTextField(Element*);
-  virtual bool doTextFieldCommandFromEvent(Element*, const PlatformKeyboardEvent*);
-  virtual void textWillBeDeletedInTextField(Element* input);
-  virtual void textDidChangeInTextArea(Element*);
-
-  virtual bool inputManagerHasMarkedText() const { return false; }
-  
-  virtual void setSecureKeyboardEntry(bool) {};
-  virtual bool isSecureKeyboardEntry() { return false; }
+// === to be moved into Editor
+
+public:
+    virtual String selectedText() const;  
+    bool findString(const String&, bool, bool, bool);
+
+    const Selection& mark() const; // Mark, to be used as emacs uses it.
+    void setMark(const Selection&);
+
+    void transpose();
+
+    virtual bool shouldBeginEditing(const Range*) const;
+    virtual bool shouldEndEditing(const Range*) const;
+
+    virtual void didBeginEditing() const {}
+    virtual void didEndEditing() const {}
+
+    void copyToPasteboard();
+    void cutToPasteboard();
+    void pasteFromPasteboard();
+    void pasteAndMatchStyle();
+    void redo();
+    void undo();
+    virtual bool canRedo() const = 0;
+    virtual bool canUndo() const = 0;
+    void computeAndSetTypingStyle(CSSStyleDeclaration* , EditAction = EditActionUnspecified);
+    void applyStyle(CSSStyleDeclaration* , EditAction = EditActionUnspecified);
+    void applyParagraphStyle(CSSStyleDeclaration* , EditAction = EditActionUnspecified);
+    void indent();
+    void outdent();
+    enum TriState { falseTriState, trueTriState, mixedTriState };
+    TriState selectionHasStyle(CSSStyleDeclaration*) const;
+    bool selectionStartHasStyle(CSSStyleDeclaration*) const;
+    String selectionStartStylePropertyValue(int stylePropertyID) const;
+    void applyEditingStyleToBodyElement() const;
+    void removeEditingStyleFromBodyElement() const;
+    void applyEditingStyleToElement(Element*) const;
+    void removeEditingStyleFromElement(Element*) const;
+
+    virtual void markMisspellingsInAdjacentWords(const VisiblePosition&) = 0;
+    virtual void markMisspellings(const Selection&) = 0;
+    virtual Range* markedTextRange() const = 0;
+    virtual void registerCommandForUndo(PassRefPtr<EditCommand>) = 0;
+    virtual void registerCommandForRedo(PassRefPtr<EditCommand>) = 0;
+    virtual void clearUndoRedoOperations() = 0;
+    virtual void issueUndoCommand() = 0;
+    virtual void issueRedoCommand() = 0;
+    virtual void issueCutCommand() = 0;
+    virtual void issueCopyCommand() = 0;
+    virtual void issuePasteCommand() = 0;
+    virtual void issuePasteAndMatchStyleCommand() = 0;
+    virtual void issueTransposeCommand() = 0;
+    virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping) = 0;
+    virtual void respondToChangedContents(const Selection& endingSelection) = 0;
+    virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity, bool stillSelecting) const = 0;
+
+    void caretBlinkTimerFired(Timer<Frame>*);
+
+    RenderStyle* styleForSelectionStart(Node* &nodeToRemove) const;
+
+    const Vector<MarkedTextUnderline>& markedTextUnderlines() const;  
+    bool markedTextUsesUnderlines() const;
   
-  /**
-   * Called when editing has been applied.
-   */
-  void appliedEditing(PassRefPtr<EditCommand>);
-
-  /**
-   * Called when editing has been unapplied.
-   */
-  void unappliedEditing(PassRefPtr<EditCommand>);
-
-  /**
-   * Called when editing has been reapplied.
-   */
-  void reappliedEditing(PassRefPtr<EditCommand>);
-
-  /**
-   * Returns the typing style for the document.
-   */
-  CSSMutableStyleDeclaration* typingStyle() const;
-
-  /**
-   * Sets the typing style for the document.
-   */
-  void setTypingStyle(CSSMutableStyleDeclaration*);
-
-  /**
-   * Clears the typing style for the document.
-   */
-  void clearTypingStyle();
-
-  virtual void tokenizerProcessedData() {}
-
-  bool inViewSourceMode() const;
-  void setInViewSourceMode(bool = true) const;
-
-  const Settings* settings() const;
-
-  void setJSStatusBarText(const String&);
-  void setJSDefaultStatusBarText(const String&);
-  String jsStatusBarText() const;
-  String jsDefaultStatusBarText() const;
-
-  /**
-   * Referrer used for links in this page.
-   */
-  String referrer() const;
-
-  /**
-   * Last-modified date (in raw string format), if received in the [HTTP] headers.
-   */
-  String lastModified() const;
-
-  virtual bool tabsToLinks() const;
-  virtual bool tabsToAllControls() const;
-
-  // Editing operations.
-  enum TriState { falseTriState, trueTriState, mixedTriState };
-  void copyToPasteboard();
-  void cutToPasteboard();
-  void pasteFromPasteboard();
-  void pasteAndMatchStyle();
-  void redo();
-  void undo();
-  virtual bool canRedo() const = 0;
-  virtual bool canUndo() const = 0;
-  void computeAndSetTypingStyle(CSSStyleDeclaration* , EditAction editingAction=EditActionUnspecified);
-  void applyStyle(CSSStyleDeclaration* , EditAction editingAction=EditActionUnspecified);
-  void applyParagraphStyle(CSSStyleDeclaration* , EditAction editingAction=EditActionUnspecified);
-  void indent();
-  void outdent();
-  TriState selectionHasStyle(CSSStyleDeclaration*) const;
-  bool selectionStartHasStyle(CSSStyleDeclaration*) const;
-  String selectionStartStylePropertyValue(int stylePropertyID) const;
-  void applyEditingStyleToBodyElement() const;
-  void removeEditingStyleFromBodyElement() const;
-  void applyEditingStyleToElement(Element*) const;
-  void removeEditingStyleFromElement(Element*) const;
-  virtual void print() = 0;
-  virtual bool isCharacterSmartReplaceExempt(UChar, bool);
-
-  // Used to keep the part alive when running a script that might destroy it.
-  void keepAlive();
-
-  static void endAllLifeSupport();
-
-  /**
-   * returns a KURL object for the given url. Use when
-   * you know what you're doing.
-   */
-  KURL completeURL(const DeprecatedString& url);
-
-  virtual void handleMousePressEvent(const MouseEventWithHitTestResults&);
-  virtual void handleMouseMoveEvent(const MouseEventWithHitTestResults&);
-  virtual void handleMouseReleaseEvent(const MouseEventWithHitTestResults&);
+    unsigned markAllMatchesForText(const String&, bool caseFlag, unsigned limit);
+    bool markedTextMatchesAreHighlighted() const;
+    void setMarkedTextMatchesAreHighlighted(bool flag);
   
-  void updateSelectionForMouseDragOverPosition(const VisiblePosition&);
-
-  void selectClosestWordFromMouseEvent(const PlatformMouseEvent&, Node* innerNode);
-
-  // Methods with platform-specific overrides (and no base class implementation).
-  virtual void setTitle(const String&) = 0;
-  virtual void handledOnloadEvents() = 0;
-  virtual String userAgent() const = 0;
-  virtual String mimeTypeForFileName(const String&) const = 0;
-  virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*) = 0;
-  virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*) = 0;
-  virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*) = 0;
-  virtual KJS::Bindings::RootObject* bindingRootObject() = 0;
-  virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>& args) = 0;
+    CSSComputedStyleDeclaration* selectionComputedStyle(Node*& nodeToRemove) const;
+
+// === to be moved into EventHandler
+
+public:
+    virtual bool shouldDragAutoNode(Node*, const IntPoint&) const; // -webkit-user-drag == auto
+
+    virtual bool lastEventIsMouseUp() const = 0;
+
+    virtual bool tabsToLinks() const;
+    virtual bool tabsToAllControls() const;
+    virtual void handleMousePressEvent(const MouseEventWithHitTestResults&);
+    virtual void handleMouseMoveEvent(const MouseEventWithHitTestResults&);
+    virtual void handleMouseReleaseEvent(const MouseEventWithHitTestResults&);
+
+    void updateSelectionForMouseDragOverPosition(const VisiblePosition&);
+
+    void selectClosestWordFromMouseEvent(const PlatformMouseEvent&, Node* innerNode);
+
+    virtual bool mouseDownMayStartSelect() const { return true; }
+    bool mouseDownMayStartAutoscroll() const;
+    void setMouseDownMayStartAutoscroll(bool b);
+
+    bool mouseDownMayStartDrag() const;
+    void setMouseDownMayStartDrag(bool b);
+
+    static Frame* frameForWidget(const Widget*);
+    static Node* nodeForWidget(const Widget*);
+    static Frame* frameForNode(Node*);
+
+    // Call this method before handling a new user action, like on a mouse down or key down.
+    // Currently, all this does is clear the "don't submit form twice" data member.
+    void prepareForUserAction();
+    Node* mousePressNode();
+
+    void stopAutoscrollTimer(bool rendererIsBeingDestroyed = false);
+    RenderObject* autoscrollRenderer() const;
+
+    HitTestResult hitTestResultAtPoint(const IntPoint&, bool allowShadowContent);
+
+    bool prohibitsScrolling() const;
+    void setProhibitsScrolling(const bool);
   
-  virtual void markMisspellingsInAdjacentWords(const VisiblePosition&) = 0;
-  virtual void markMisspellings(const Selection&) = 0;
-  virtual void addMessageToConsole(const String& message,  unsigned int lineNumber, const String& sourceID) = 0;
-  virtual void runJavaScriptAlert(const String& message) = 0;
-  virtual bool runJavaScriptConfirm(const String& message) = 0;
-  virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result) = 0;  
-  virtual bool shouldInterruptJavaScript() = 0;
-  virtual bool locationbarVisible() = 0;
-  virtual bool menubarVisible() = 0;
-  virtual bool personalbarVisible() = 0;
-  virtual bool statusbarVisible() = 0;
-  virtual bool toolbarVisible() = 0;
-  virtual void scheduleClose() = 0;
-  virtual void focusWindow() = 0;
-  virtual void unfocusWindow() = 0;
-  virtual void createEmptyDocument() = 0;
-  virtual Range* markedTextRange() const = 0;
-  virtual void registerCommandForUndo(PassRefPtr<EditCommand>) = 0;
-  virtual void registerCommandForRedo(PassRefPtr<EditCommand>) = 0;
-  virtual void clearUndoRedoOperations() = 0;
-  virtual void issueUndoCommand() = 0;
-  virtual void issueRedoCommand() = 0;
-  virtual void issueCutCommand() = 0;
-  virtual void issueCopyCommand() = 0;
-  virtual void issuePasteCommand() = 0;
-  virtual void issuePasteAndMatchStyleCommand() = 0;
-  virtual void issueTransposeCommand() = 0;
-  virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping) = 0;
-  virtual void respondToChangedContents(const Selection& endingSelection) = 0;
-  virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const = 0;
-  virtual void partClearedInBegin() = 0; 
-  virtual void saveDocumentState() = 0;
-  virtual void restoreDocumentState() = 0;
-  virtual bool lastEventIsMouseUp() const = 0;
-  virtual String overrideMediaType() const = 0;
-  virtual void redirectDataToPlugin(Widget* pluginWidget) { }
-  virtual void setupRootForPrinting(bool onOrOff) { }
-  virtual Vector<IntRect> computePageRects(const IntRect& printRect, float userScaleFactor) { return Vector<IntRect>(); }
 protected:
-  virtual Plugin* createPlugin(Element* node, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType) = 0;
-  virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType) = 0;
+    virtual void startRedirectionTimer();
+    virtual void stopRedirectionTimer();
 
-  virtual void redirectionTimerFired(Timer<Frame>*);
-  
-  virtual bool isLoadTypeReload() = 0;
-  virtual KURL originalRequestURL() const = 0;
+private:
+    void handleAutoscroll(RenderObject*);
+    void startAutoscrollTimer();
+    void setAutoscrollRenderer(RenderObject*);
+
+    void autoscrollTimerFired(Timer<Frame>*);
+
+    void handleMousePressEventSingleClick(const MouseEventWithHitTestResults&);
+    void handleMousePressEventDoubleClick(const MouseEventWithHitTestResults&);
+    void handleMousePressEventTripleClick(const MouseEventWithHitTestResults&);
+
+// === to be moved into FrameLoader
 
 public:
-  void loadDone();
+    void changeLocation(const DeprecatedString& URL, const String& referrer, bool lockHistory = true, bool userGesture = false);
+    void urlSelected(const ResourceRequest&, const String& target, Event*, bool lockHistory = false);
+    virtual void urlSelected(const FrameLoadRequest&, Event*) = 0;
+  
+    bool requestFrame(Element* ownerElement, const String& URL, const AtomicString& frameName);
+    virtual Frame* createFrame(const KURL& URL, const String& name, Element* ownerElement, const String& referrer) = 0;
+    Frame* loadSubframe(Element* ownerElement, const KURL& URL, const String& name, const String& referrer);
 
-  void finishedParsing();
+    void submitForm(const char* action, const String& URL, const FormData&, const String& target, const String& contentType, const String& boundary, Event*);
+    void submitFormAgain();
+    virtual void submitForm(const FrameLoadRequest&, Event*) = 0;
 
-  void checkCompleted();
+    void stop();
+    void stopLoading(bool sendUnload = false);
+    virtual bool closeURL();
 
-  void reparseConfiguration();
+    void didExplicitOpen();
 
-private:
-  void childBegin();
+    KURL iconURL();
+    void commitIconURLToIconDatabase();
 
-  void started();
+    void setAutoLoadImages(bool enable);
+    bool autoLoadImages() const;
 
-  void completed(bool);
-  void childCompleted(bool);
-  void parentCompleted();
+    KURL baseURL() const;
+    String baseTarget() const;
 
-    void lifeSupportTimerFired(Timer<Frame>*);
-    void endLifeSupport();
+    void scheduleRedirection(double delay, const DeprecatedString& URL, bool lockHistory = true);
 
-  virtual void clear(bool clearWindowProperties = true);
+    void scheduleLocationChange(const DeprecatedString& URL, const String& referrer, bool lockHistory = true, bool userGesture = false);
+    void scheduleRefresh(bool userGesture = false);
+    bool isScheduledLocationChangePending() const;
 
-    void caretBlinkTimerFired(Timer<Frame>*);
+    void scheduleHistoryNavigation(int steps);
 
-  bool shouldUsePlugin(Node* element, const KURL& url, const String& mimeType, bool hasFallback, bool& useFallback);
-  bool loadPlugin(RenderPart* renderer, const KURL& url, const String& mimeType, 
-                  const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback);
+    virtual bool canGoBackOrForward(int distance) const = 0;
+    virtual void goBackOrForward(int distance) = 0;
+    virtual int getHistoryLength() = 0;
+    virtual KURL historyURL(int distance) = 0;
 
-public:
-  bool requestObject(RenderPart* frame, const String& url, const AtomicString& frameName,
-                     const String& serviceType, const Vector<String>& paramNames, const Vector<String>& paramValues);
-  Document* document() const;
-  void setDocument(Document* newDoc);
+    void begin();
+    virtual void begin(const KURL&);
+    virtual void write(const char* str, int len = -1);
+    virtual void write(const String&);
+    virtual void end();
 
-  virtual bool mouseDownMayStartSelect() const { return true; }
-  bool mouseDownMayStartAutoscroll() const;
-  void setMouseDownMayStartAutoscroll(bool b);
+    void endIfNotLoading();
 
-  bool mouseDownMayStartDrag() const;
-  void setMouseDownMayStartDrag(bool b);
-  
-  void handleFallbackContent();
-
- public:
-  KJS::JSValue* executeScript(const String& filename, int baseLine, Node*, const String& script);
-  KJSProxy* scriptProxy();
-  Frame* opener();
-  void setOpener(Frame* _opener);
-  bool openedByJS();
-  void setOpenedByJS(bool _openedByJS);
-
-  void setSettings(Settings*);
-
-  void provisionalLoadStarted();
-  bool userGestureHint();
-  void didNotOpenURL(const KURL&);
-  void addData(const char* bytes, int length);
-  void addMetaData(const String& key, const String& value);
-  void setMediaType(const String&);
-
-  // root renderer for the document contained in this frame
-  RenderObject* renderer() const;
-  
-  Element* ownerElement();
-  // renderer for the element that contains this frame
-  RenderPart* ownerRenderer();
+    void setEncoding(const String& encoding, bool userChosen);
+    String encoding() const;
 
-  IntRect selectionRect() const;
-  FloatRect visibleSelectionRect() const;
-  bool isFrameSet() const;
+    KJS::JSValue* executeScript(Node*, const String& script, bool forceUserGesture = false);
 
-  HTMLFormElement* currentForm() const;
+    bool gotoAnchor(const String& name); // returns true if the anchor was found
+    void scrollToAnchor(const KURL&);
 
-  RenderStyle* styleForSelectionStart(Node* &nodeToRemove) const;
+    virtual void tokenizerProcessedData() {}
 
-  void revealSelection(const RenderLayer::ScrollAlignment& alignment = RenderLayer::gAlignCenterIfNeeded) const;
-  void revealCaret(const RenderLayer::ScrollAlignment& alignment = RenderLayer::gAlignCenterIfNeeded) const;
-  void setSelectionFromNone();
+    String referrer() const;
+    String lastModified() const;
 
-  bool scrollOverflow(ScrollDirection direction, ScrollGranularity granularity);
+    virtual void setTitle(const String&) = 0;
+    virtual void handledOnloadEvents() = 0;
+    virtual String userAgent() const = 0;
 
-  void adjustPageHeight(float* newBottom, float oldTop, float oldBottom, float bottomLimit);
+    virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>& args) = 0;
 
-  bool canCachePage();
-  KJS::PausedTimeouts* pauseTimeouts();
-  void resumeTimeouts(KJS::PausedTimeouts*);
-  void saveWindowProperties(KJS::SavedProperties* windowProperties);
-  void saveLocationProperties(KJS::SavedProperties* locationProperties);
-  void restoreWindowProperties(KJS::SavedProperties* windowProperties);
-  void restoreLocationProperties(KJS::SavedProperties* locationProperties);
-  void saveInterpreterBuiltins(KJS::SavedBuiltins& interpreterBuiltins);
-  void restoreInterpreterBuiltins(const KJS::SavedBuiltins& interpreterBuiltins);
+    virtual void createEmptyDocument() = 0;
 
-  static Frame* frameForWidget(const Widget*);
-  static Node* nodeForWidget(const Widget*);
-  static Frame* frameForNode(Node*);
+    virtual void partClearedInBegin() = 0; 
+    virtual void saveDocumentState() = 0;
+    virtual void restoreDocumentState() = 0;
 
-  static void clearDocumentFocus(Widget*);
+    virtual String overrideMediaType() const = 0;
 
-  void updatePolicyBaseURL();
-  void setPolicyBaseURL(const String&);
+    virtual void redirectDataToPlugin(Widget* /*pluginWidget*/) { }
 
-  void forceLayout();
-  void forceLayoutWithPageWidthRange(float minPageWidth, float maxPageWidth);
+    Frame* opener();
+    void setOpener(Frame*);
+    bool openedByJS();
+    void setOpenedByJS(bool);
 
-  void sendResizeEvent();
-  void sendScrollEvent();
-  bool scrollbarsVisible();
-  void scrollToAnchor(const KURL&);
-  bool canMouseDownStartSelect(Node*);
+    void provisionalLoadStarted();
 
-  void clearTimers();
-  static void clearTimers(FrameView*);
+    bool userGestureHint();
 
-  bool isActive() const;
-  virtual void setIsActive(bool flag);
-  void setWindowHasFocus(bool flag);
-  // Convenience, to avoid repeating the code to dig down to get this.
+    void didNotOpenURL(const KURL&);
+    void addData(const char* bytes, int length);
+    void addMetaData(const String& key, const String& value);
+    void setMediaType(const String&);
 
-  UChar backslashAsCurrencySymbol() const;
+    bool canCachePage();
 
-  const Vector<MarkedTextUnderline>& markedTextUnderlines() const;  
-  bool markedTextUsesUnderlines() const;
-  
-  unsigned markAllMatchesForText(const String&, bool caseFlag, unsigned limit);
-  bool markedTextMatchesAreHighlighted() const;
-  void setMarkedTextMatchesAreHighlighted(bool flag);
-  
-  // Call this method before handling a new user action, like on a mouse down or key down.
-  // Currently, all this does is clear the "don't submit form twice" data member.
-  void prepareForUserAction();
-  Node* mousePressNode();
-  
-  void clearRecordedFormValues();
-  void recordFormValue(const String& name, const String& value, PassRefPtr<HTMLFormElement>);
+    KJS::PausedTimeouts* pauseTimeouts();
+    void resumeTimeouts(KJS::PausedTimeouts*);
+    void saveWindowProperties(KJS::SavedProperties*);
+    void saveLocationProperties(KJS::SavedProperties*);
+    void restoreWindowProperties(KJS::SavedProperties*);
+    void restoreLocationProperties(KJS::SavedProperties*);
+    void saveInterpreterBuiltins(KJS::SavedBuiltins&);
+    void restoreInterpreterBuiltins(const KJS::SavedBuiltins&);
 
-  bool isComplete() const;
-  bool isLoadingMainResource() const;
-  
-  void replaceContentsWithScriptResult(const KURL& url);
+    void checkEmitLoadEvent();
+    bool didOpenURL(const KURL&);
+    virtual void didFirstLayout() {}
+
+    virtual void frameDetached();
+
+    void detachChildren();
+
+    KURL url() const;
+
+    void updateBaseURLForEmptyDocument();
 
-  void disconnectOwnerElement();
+    void setResponseMIMEType(const String&);
+    const String& responseMIMEType() const;
 
-  void setNeedsReapplyStyles();
+    bool containsPlugins() const;
 
-  void stopAutoscrollTimer(bool rendererIsBeingDestroyed = false);
-  RenderObject* autoscrollRenderer() const;
+    void disconnectOwnerElement();
+
+    void loadDone();
+    void finishedParsing();
+    void checkCompleted();
+    void reparseConfiguration();
+
+    KJS::JSValue* executeScript(const String& filename, int baseLine, Node*, const String& script);
+
+    void clearRecordedFormValues();
+    void recordFormValue(const String& name, const String& value, PassRefPtr<HTMLFormElement>);
+
+    bool isComplete() const;
+    bool isLoadingMainResource() const;
+
+    bool requestObject(RenderPart* frame, const String& URL, const AtomicString& frameName,
+        const String& serviceType, const Vector<String>& paramNames, const Vector<String>& paramValues);
+
+    KURL completeURL(const DeprecatedString& URL);
 
 protected:
-    virtual void startRedirectionTimer();
-    virtual void stopRedirectionTimer();
-    virtual void cleanupPluginObjects() { }
+    virtual Plugin* createPlugin(Element* node, const KURL& URL, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType) = 0;
+    virtual ObjectContentType objectContentType(const KURL& URL, const String& mimeType) = 0;
+
+    virtual void redirectionTimerFired(Timer<Frame>*);
+
+    virtual bool isLoadTypeReload() = 0;
+    virtual KURL originalRequestURL() const = 0;
+
     void cancelAndClear();
-    
-    void handleAutoscroll(RenderObject*);
-    void startAutoscrollTimer();
-    void setAutoscrollRenderer(RenderObject*);
 
- private:
-  void emitLoadEvent();
-  
-  void receivedFirstData();
+private:
+    void cancelRedirection(bool newLoadInProgress = false);
 
-  /**
-   * @internal Extracts anchor and tries both encoded and decoded form.
-   */
-  void gotoAnchor();
+    void childBegin();
 
-  void handleMousePressEventSingleClick(const MouseEventWithHitTestResults&);
-  void handleMousePressEventDoubleClick(const MouseEventWithHitTestResults&);
-  void handleMousePressEventTripleClick(const MouseEventWithHitTestResults&);
+    void started();
 
-  CSSComputedStyleDeclaration* selectionComputedStyle(Node* &nodeToRemove) const;
+    void completed(bool);
+    void childCompleted(bool);
+    void parentCompleted();
 
-    virtual void setStatusBarText(const String&);
-    
-    void autoscrollTimerFired(Timer<Frame>*);
+    virtual void clear(bool clearWindowProperties = true);
+
+    bool shouldUsePlugin(Node* element, const KURL&, const String& mimeType, bool hasFallback, bool& useFallback);
+    bool loadPlugin(RenderPart*, const KURL&, const String& mimeType,
+    const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback);
+
+    void handleFallbackContent();
+
+    void emitLoadEvent();
+
+    void receivedFirstData();
+
+    void gotoAnchor();
+
+    void updatePolicyBaseURL();
+    void setPolicyBaseURL(const String&);
+
+    void replaceContentsWithScriptResult(const KURL&);
+
+// === to be moved into SelectionController
 
 public:
-  friend class FrameGdk;
-  friend class FrameLoader;
-  friend class FrameMac;
-  friend class FrameQt;
-  friend class FrameWin;
+    TextGranularity selectionGranularity() const;
+    void setSelectionGranularity(TextGranularity) const;
 
-  HitTestResult hitTestResultAtPoint(const IntPoint&, bool allowShadowContent);
-  String documentTypeString() const;
+    bool shouldChangeSelection(const Selection&) const;
+    virtual bool shouldDeleteSelection(const Selection&) const;
+    void clearCaretRectIfNeeded();
+    void setFocusNodeIfNeeded();
+    void selectionLayoutChanged();
+    void notifyRendererOfSelectionChange(bool userTriggered);
 
-  void checkEmitLoadEvent();
-  bool didOpenURL(const KURL&);
-  virtual void didFirstLayout() {}
+    void invalidateSelection();
 
-  virtual void frameDetached();
+    void setCaretVisible(bool = true);
+    void paintCaret(GraphicsContext*, const IntRect&) const;  
+    void paintDragCaret(GraphicsContext*, const IntRect&) const;
 
-  void detachChildren();
+    void setXPosForVerticalArrowNavigation(int);
+    int xPosForVerticalArrowNavigation() const;
 
-  void updateBaseURLForEmptyDocument();
+    virtual bool isContentEditable() const; // if true, everything in frame is editable
+
+    virtual void textFieldDidBeginEditing(Element*);
+    virtual void textFieldDidEndEditing(Element*);
+    virtual void textDidChangeInTextField(Element*);
+    virtual bool doTextFieldCommandFromEvent(Element*, const PlatformKeyboardEvent*);
+    virtual void textWillBeDeletedInTextField(Element* input);
+    virtual void textDidChangeInTextArea(Element*);
+
+    virtual bool inputManagerHasMarkedText() const { return false; }
+
+    virtual void setSecureKeyboardEntry(bool) { }
+    virtual bool isSecureKeyboardEntry() { return false; }
+
+    void appliedEditing(PassRefPtr<EditCommand>);
+    void unappliedEditing(PassRefPtr<EditCommand>);
+    void reappliedEditing(PassRefPtr<EditCommand>);
+
+    CSSMutableStyleDeclaration* typingStyle() const;
+    void setTypingStyle(CSSMutableStyleDeclaration*);
+    void clearTypingStyle();
+
+    IntRect selectionRect() const;
+    FloatRect visibleSelectionRect() const;
+
+    HTMLFormElement* currentForm() const;
+
+    void revealSelection(const RenderLayer::ScrollAlignment& = RenderLayer::gAlignCenterIfNeeded) const;
+    void revealCaret(const RenderLayer::ScrollAlignment& = RenderLayer::gAlignCenterIfNeeded) const;
+    void setSelectionFromNone();
+
+// === to be moved into the Platform directory
+
+public:
+    virtual String mimeTypeForFileName(const String&) const = 0;
+    virtual bool isCharacterSmartReplaceExempt(UChar, bool);
+
+// === to be deleted
+
+public:
+    SelectionController* dragCaretController() const;
 
-  KURL url() const;
-  
-  void setResponseMIMEType(const String&);
-  const String& responseMIMEType() const;
-  
-  bool containsPlugins() const;
-  
-  bool prohibitsScrolling() const;
-  void setProhibitsScrolling(const bool);
-  
-  // split out controller objects
-  FrameTree* tree() const;
-  SelectionController* selectionController() const;
-  SelectionController* dragCaretController() const;
-  DOMWindow* domWindow() const;
-  Editor* editor() const;
-  CommandByName* command() const;
-  FrameLoader* loader() const;
-
- private:
-  friend class FramePrivate;
-  FramePrivate* d;
 };
 
 } // namespace WebCore
index 0e14e99..f7bc111 100644 (file)
 #ifndef FramePrivate_h
 #define FramePrivate_h
 
-#include "CSSMutableStyleDeclaration.h"
 #include "CachePolicy.h"
 #include "CommandByName.h"
-#include "DOMWindow.h"
-#include "TextResourceDecoder.h"
-#include "EditCommand.h"
 #include "Editor.h"
-#include "EditorClient.h"
 #include "FormData.h"
-#include "Frame.h"
-#include "FrameLoader.h"
 #include "FrameTree.h"
-#include "IconLoader.h"
+#include "KURL.h"
 #include "SelectionController.h"
 #include "StringHash.h"
-#include "Timer.h"
-#include "kjs_proxy.h"
-#include <wtf/HashMap.h>
 
 namespace WebCore {
 
+    class IconLoader;
     class TextResourceDecoder;
     class UserStyleSheetLoader;
 
@@ -61,70 +52,8 @@ namespace WebCore {
     
     class FramePrivate {
     public:
-        FramePrivate(Page* page, Frame* parent, Frame* thisFrame, Element* ownerElement, PassRefPtr<EditorClient> client)
-            : m_page(page)
-            , m_treeNode(thisFrame, parent)
-            , m_ownerElement(ownerElement)
-            , m_jscript(0)
-            , m_runningScripts(0)
-            , m_bJScriptEnabled(true)
-            , m_bJavaEnabled(true)
-            , m_bPluginsEnabled(true)
-            , m_settings(0)
-            , m_bComplete(true)
-            , m_bLoadingMainResource(false)
-            , m_bLoadEventEmitted(true)
-            , m_bUnloadEventEmitted(true)
-            , m_haveEncoding(false)
-            , m_bHTTPRefresh(false)
-            , m_redirectLockHistory(false)
-            , m_redirectUserGesture(false)
-            , m_cachePolicy(CachePolicyVerify)
-            , m_redirectionTimer(thisFrame, &Frame::redirectionTimerFired)
-            , m_scheduledRedirection(noRedirectionScheduled)
-            , m_delayRedirect(0)
-            , m_zoomFactor(parent ? parent->d->m_zoomFactor : 100)
-            , m_submitForm(0)
-            , m_bMousePressed(false)
-            , m_beganSelectingText(false)
-            , m_selectionController(thisFrame)
-            , m_caretBlinkTimer(thisFrame, &Frame::caretBlinkTimerFired)
-            , m_editor(thisFrame, client)
-            , m_command(thisFrame)
-            , m_caretVisible(false)
-            , m_caretPaint(true)
-            , m_bFirstData(true)
-            , m_bCleared(true)
-            , m_isActive(false)
-            , m_opener(0)
-            , m_openedByJS(false)
-            , m_bPendingChildRedirection(false)
-            , m_executingJavaScriptFormAction(false)
-            , m_cancelWithLoadInProgress(false)
-            , m_lifeSupportTimer(thisFrame, &Frame::lifeSupportTimerFired)
-            , m_loader(new FrameLoader(thisFrame))
-            , m_userStyleSheetLoader(0)
-            , m_iconLoader(0)
-            , m_autoscrollTimer(thisFrame, &Frame::autoscrollTimerFired)
-            , m_autoscrollRenderer(0)
-            , m_mouseDownMayStartAutoscroll(false)
-            , m_mouseDownMayStartDrag(false)
-            , m_paintRestriction(PaintRestrictionNone)
-            , m_markedTextUsesUnderlines(false)
-            , m_highlightTextMatches(false)
-            , m_windowHasFocus(false)
-            , m_inViewSourceMode(false)
-            , frameCount(0)
-            , m_prohibitsScrolling(false)
-        {
-        }
-
-        ~FramePrivate()
-        {
-            delete m_jscript;
-            delete m_loader;
-            delete m_iconLoader;
-        }
+        FramePrivate(Page*, Frame* parent, Frame* thisFrame, Element* ownerElement, PassRefPtr<EditorClient>);
+        ~FramePrivate();
 
         Page* m_page;
         FrameTree m_treeNode;
index dd8c423..b40a136 100644 (file)
@@ -113,13 +113,11 @@ public:
         slowRepaintObjectCount = 0;
         dragTarget = 0;
         borderTouched = false;
-        scrollbarMoved = false;
         ignoreWheelEvents = false;
         borderX = 30;
         borderY = 30;
         clickCount = 0;
         clickNode = 0;
-        scrollingSelf = false;
         layoutTimer.stop();
         layoutRoot = 0;
         delayedLayout = false;
@@ -143,7 +141,6 @@ public:
 
     bool borderTouched : 1;
     bool borderStart : 1;
-    bool scrollbarMoved : 1;
     bool doFullRepaint : 1;
     bool m_hasBorder : 1;
     
@@ -158,7 +155,6 @@ public:
     int clickCount;
     RefPtr<Node> clickNode;
 
-    bool scrollingSelf;
     Timer<FrameView> layoutTimer;
     bool delayedLayout;
     RefPtr<Node> layoutRoot;
@@ -266,7 +262,9 @@ void FrameView::clear()
 #endif    
     d->layoutTimer.stop();
 
-    cleared();
+    if (m_frame)
+        if (RenderPart* renderer = m_frame->ownerRenderer())
+            renderer->viewCleared();
 
     suppressScrollbars(true);
 }
@@ -999,8 +997,6 @@ Node* FrameView::nodeUnderMouse() const
 
 bool FrameView::scrollTo(const IntRect& bounds)
 {
-    d->scrollingSelf = true; // so scroll events get ignored
-
     int x, y, xe, ye;
     x = bounds.x();
     y = bounds.y();
@@ -1061,8 +1057,6 @@ bool FrameView::scrollTo(const IntRect& bounds)
     if (scrollY < 0)
         scrollY = -scrollY;
 
-    d->scrollingSelf = false;
-
     return scrollX != maxx && scrollY != maxy;
 }
 
@@ -1297,13 +1291,6 @@ void FrameView::handleWheelEvent(PlatformWheelEvent& e)
     }
 }
 
-void FrameView::scrollbarMoved()
-{
-    // FIXME: Need to arrange for this to be called when the view is scrolled!
-    if (!d->scrollingSelf)
-        d->scrollbarMoved = true;
-}
-
 void FrameView::repaintRectangle(const IntRect& r, bool immediate)
 {
     updateContents(r, immediate);
@@ -1441,14 +1428,6 @@ bool FrameView::hasBorder() const
     return d->m_hasBorder;
 }
 
-void FrameView::cleared()
-{
-    if (m_frame)
-        if (RenderPart* renderer = m_frame->ownerRenderer())
-            renderer->viewCleared();
-}
-
-
 void FrameView::scheduleEvent(PassRefPtr<Event> event, PassRefPtr<EventTargetNode> eventTarget, bool tempEvent)
 {
     if (!d->m_scheduledEvents)
index 5d55618..51ffd27 100644 (file)
@@ -34,79 +34,36 @@ namespace WebCore {
 
 class AtomicString;
 class Color;
-class CSSProperty;
-class CSSStyleSelector;
 class Clipboard;
-class Document;
-class Element;
 class Event;
 class EventTargetNode;
 class Frame;
 class FrameViewPrivate;
-class GraphicsContext;
-class HTMLAnchorElement;
-class HTMLDocument;
-class HTMLElement;
-class HTMLFormElement;
 class HTMLFrameSetElement;
-class HTMLGenericFormElement;
-class HTMLTitleElement;
-class InlineBox;
 class IntPoint;
 class IntRect;
-class PlatformKeyboardEvent;
-class FrameMac;
 class PlatformMouseEvent;
 class MouseEventWithHitTestResults;
 class Node;
-class RenderBox;
-class RenderView;
 class RenderLayer;
-class RenderLineEdit;
 class RenderObject;
-class RenderPart;
-class RenderPartObject;
-class RenderStyle;
-class RenderWidget;
 class PlatformWheelEvent;
-class String;
 
 template <typename T> class Timer;
 
-void applyRule(CSSProperty*);
-
 class FrameView : public ScrollView {
-    friend class CSSStyleSelector;
-    friend class Document;
-    friend class Frame;
-    friend class HTMLAnchorElement;
-    friend class HTMLDocument;
-    friend class HTMLFormElement;
-    friend class HTMLGenericFormElement;
-    friend class HTMLTitleElement;
-    friend class FrameMac;
-    friend class RenderBox;
-    friend class RenderView;
-    friend class RenderLineEdit;
-    friend class RenderObject;
-    friend class RenderPart;
-    friend class RenderPartObject;
-    friend class RenderWidget;
-    friend void applyRule(CSSProperty *prop);
-
 public:
     FrameView(Frame*);
     virtual ~FrameView();
 
     Frame* frame() const { return m_frame.get(); }
 
-    /**
-     * Gets/Sets the margin width/height
-     *
-     * A return value of -1 means the default value will be used.
-     */
-    int marginWidth() const { return m_margins.width(); }
-    int marginHeight() { return  m_margins.height(); }
+    void ref() { ++m_refCount; }
+    void deref() { if (!--m_refCount) delete this; }
+    bool hasOneRef() { return m_refCount == 1; }
+
+    int marginWidth() const { return m_margins.width(); } // -1 means default
+    int marginHeight() const { return m_margins.height(); } // -1 means default
     void setMarginWidth(int);
     void setMarginHeight(int);
 
@@ -117,23 +74,87 @@ public:
     void print();
 
     void layout(bool allowSubtree = true);
+    bool didFirstLayout() const;
+    void layoutTimerFired(Timer<FrameView>*);
+    void scheduleRelayout();
+    void scheduleRelayoutOfSubtree(Node*);
+    void unscheduleRelayout();
+    bool haveDelayedLayoutScheduled();
+    bool layoutPending() const;
 
     Node* layoutRoot() const;
     int layoutCount() const;
 
     bool needsFullRepaint() const;
-    
+    void repaintRectangle(const IntRect&, bool immediate);
     void addRepaintInfo(RenderObject*, const IntRect&);
 
     void resetScrollbars();
 
     void clear();
+    void clearPart();
 
-    bool didFirstLayout() const;
+    bool isTransparent() const;
+    void setTransparent(bool isTransparent);
 
-public:
-    void clearPart();
+    Color baseBackgroundColor() const;
+    void setBaseBackgroundColor(Color);
+
+    void adjustViewSize();
+    void initScrollbars();
+    
+    void setHasBorder(bool);
+    bool hasBorder() const;
+    
+    virtual IntRect windowClipRect() const;
+    IntRect windowClipRect(bool clipToContents) const;
+    IntRect windowClipRectForLayer(const RenderLayer*, bool clipToLayerContents) const;
+
+    virtual void scrollPointRecursively(int x, int y);
+    virtual void setContentsPos(int x, int y);
+
+    String mediaType() const;
+
+    void setUseSlowRepaints();
+
+    void addSlowRepaintObject();
+    void removeSlowRepaintObject();
+
+#if PLATFORM(MAC)
+    void updateDashboardRegions();
+#endif
+
+private:
+    void init();
+
+    virtual bool isFrameView() const;
+
+    void setMediaType(const String&);
+
+    bool scrollTo(const IntRect&);
+
+    bool useSlowRepaints() const;
+
+    void restoreScrollbar();
+
+    void applyOverflowToViewport(RenderObject*, ScrollbarMode& hMode, ScrollbarMode& vMode);
+
+    void updateBorder();
+
+    void updateOverflowStatus(bool horizontalOverflow, bool verticalOverflow);
+
+    unsigned m_refCount;
+    IntSize m_size;
+    IntSize m_margins;
+    RefPtr<Frame> m_frame;
+    FrameViewPrivate* d;
 
+    friend class Frame;
+    friend class FrameMac;
+
+// === to be moved into EventHandler
+
+public:
     void handleMousePressEvent(const PlatformMouseEvent&);
     void handleMouseDoubleClickEvent(const PlatformMouseEvent&);
     virtual void handleMouseMoveEvent(const PlatformMouseEvent&);
@@ -157,87 +178,22 @@ public:
     void cancelDragAndDrop(const PlatformMouseEvent&, Clipboard*);
     bool performDragAndDrop(const PlatformMouseEvent&, Clipboard*);
 
-    void layoutTimerFired(Timer<FrameView>*);
-    void hoverTimerFired(Timer<FrameView>*);
-
-    void repaintRectangle(const IntRect& r, bool immediate);
-
-    bool isTransparent() const;
-    void setTransparent(bool isTransparent);
-
-    Color baseBackgroundColor() const;
-    void setBaseBackgroundColor(Color);
-
-    void scheduleRelayout();
-    void scheduleRelayoutOfSubtree(Node*);
-    void unscheduleRelayout();
-    bool haveDelayedLayoutScheduled();
-    bool layoutPending() const;
-
     void scheduleHoverStateUpdate();
+    void hoverTimerFired(Timer<FrameView>*);
 
-    void adjustViewSize();
-    void initScrollbars();
-    
-    void setHasBorder(bool);
-    bool hasBorder() const;
-    
-    void setResizingFrameSet(HTMLFrameSetElement *);
-
-#if PLATFORM(MAC)
-    void updateDashboardRegions();
-#endif
-
-    virtual IntRect windowClipRect() const;
-    IntRect windowClipRect(bool clipToContents) const;
-    IntRect windowClipRectForLayer(const RenderLayer*, bool clipToLayerContents) const;
-
-    virtual void scrollPointRecursively(int x, int y);
-    virtual void setContentsPos(int x, int y);
+    void setResizingFrameSet(HTMLFrameSetElement*);
 
     void scheduleEvent(PassRefPtr<Event>, PassRefPtr<EventTargetNode>, bool tempEvent);
 
     IntPoint currentMousePosition() const;
 
-    void ref() { ++m_refCount; }
-    void deref() { if (!--m_refCount) delete this; }
-    bool hasOneRef() { return m_refCount == 1; }
+    void setIgnoreWheelEvents(bool);
 
 private:
-    void cleared();
-    void scrollbarMoved();
-
-    void resetCursor();
     void invalidateClick();
 
-    /**
-     * Get/set the CSS Media Type.
-     *
-     * Media type is set to "screen" for on-screen rendering and "print"
-     * during printing. Other media types lack the proper support in the
-     * renderer and are not activated. The DOM tree and the parser itself,
-     * however, properly handle other media types. To make them actually work
-     * you only need to enable the media type in the view and if necessary
-     * add the media type dependent changes to the renderer.
-     */
-    void setMediaType(const String&);
-    String mediaType() const;
-
-    bool scrollTo(const IntRect&);
-
-    bool useSlowRepaints() const;
-    void setUseSlowRepaints();
-    void addSlowRepaintObject();
-    void removeSlowRepaintObject();
-
-    void setIgnoreWheelEvents(bool e);
-
-    void init();
-
     Node *nodeUnderMouse() const;
 
-    void restoreScrollbar();
-
     MouseEventWithHitTestResults prepareMouseEvent(bool readonly, bool active, bool mouseMove, const PlatformMouseEvent&);
 
     bool dispatchMouseEvent(const AtomicString& eventType, Node* target,
@@ -245,22 +201,8 @@ private:
     bool dispatchDragEvent(const AtomicString& eventType, Node* target,
         const PlatformMouseEvent&, Clipboard*);
 
-    void applyOverflowToViewport(RenderObject* o, ScrollbarMode& hMode, ScrollbarMode& vMode);
-
-    virtual bool isFrameView() const;
-
-    void updateBorder();
-
-    void updateOverflowStatus(bool horizontalOverflow, bool verticalOverflow);
     void dispatchScheduledEvents();
-        
-    unsigned m_refCount;
-    
-    IntSize m_size;
-    IntSize m_margins;
-    
-    RefPtr<Frame> m_frame;
-    FrameViewPrivate* d;
+
 };
 
 }
index 99aeee2..bf7885b 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "Document.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "Page.h"
 #include "kjs_window.h"
 #include <kjs/JSLock.h>
index 57e20d3..ee0e783 100644 (file)
@@ -29,6 +29,7 @@
 #include "HTMLAppletElement.h"
 #include "HTMLNames.h"
 #include "HTMLParamElement.h"
+#include "Widget.h"
 
 namespace WebCore {
 
index 5010f49..3c7ff09 100644 (file)
@@ -27,6 +27,7 @@
 #include "Document.h"
 #include "Element.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "GraphicsContext.h"
 #include "HTMLNames.h"
 #include "HitTestResult.h"
index 0ae604b..f07e24e 100644 (file)
@@ -49,6 +49,7 @@
 #include "EventNames.h"
 #include "FloatRect.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "FrameTree.h"
 #include "GraphicsContext.h"
 #include "HTMLMarqueeElement.h"
index 17867dc..77fd550 100644 (file)
@@ -38,6 +38,7 @@
 #include "EventNames.h"
 #include "FloatRect.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "GraphicsContext.h"
 #include "HTMLNames.h"
 #include "HTMLOListElement.h"
index 415ad79..5ac334b 100644 (file)
 #include "Document.h"
 #include "Frame.h"
 #include "FrameTree.h"
+#include "FrameView.h"
 #include "HTMLNames.h"
 #include "HTMLEmbedElement.h"
 #include "HTMLIFrameElement.h"
 #include "HTMLObjectElement.h"
 #include "HTMLParamElement.h"
+#include "KURL.h"
 #include "Page.h"
 #include "Text.h"
 
index 15cad11..3013b7e 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "Document.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLElement.h"
 #include "HTMLNames.h"
 #include "InlineTextBox.h"
index c7f55b5..d03267e 100644 (file)
@@ -32,6 +32,7 @@
 #include "DocLoader.h"
 #include "DocumentFragment.h"
 #include "Frame.h"
+#include "FrameView.h"
 #include "HTMLDocument.h"
 #include "HTMLTokenizer.h"
 #include "LoaderFunctions.h"