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 4519b2e291bb1c0decda3888930413e083c61b69..7a0aad1a6ec278cb7d88a775cc7c2721d86a4ccf 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 daad9e996b9c6f506dd3d0331de5154dd98b219d..9b68f2972218d61b869a7f65561da640087d173e 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 9999be4a7eaf040ef7a823781e7172a311734231..02af3df13bdda5b509c3a8bc70f7083ab73fe5b2 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 267d0a179af47548749560411f36169412aa6897..a03d039ef3aa9429a792119770a40a89519991b7 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 10e36280bcdf76ad45dab680899adff539af9e07..c2b614206b1c2552838ba80340a4fc1caee3beb0 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 fdc64f245b4c3d828c8d848c35c07fbb24914221..624bb578f1780d4b8f194224a3e7b95ea706a1b0 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 b1e995dcbe28cc91ec58ae26d453772deec63985..07b8ef55cbb13219ee327637162e2d27eac05c68 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 ec86c63ab9408a20d05ee80a557b52a3758e107f..7ce2b3c3cf41fc05589d9b9cc560f0a247ed1c2a 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 c2f4159ad1be7c12bdbe2cfa1283d81bf6373657..127878c24fb38521ec5c7654076ec3a6a5faffa0 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 9532ec6ba015f08adc186e8ae3ddcdaff83c75ec..83aaaf97d0e078acd7ce762be49cfe7d0845ae9f 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 7a980f197a3a7ac4f940a9b3fe9b48cfcc6e5ba5..9c158f66883ab98203b24ff1998b0e09c377e5d9 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 7edbf68c94960cf2bef1ed725819f6b93513abdf..89e5600e65eb443bd12feca69b780e15d13fbd53 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 ae94e39a5b116f109e52968517bd6c8d22f4a8c8..ced9e7b6cf762cf3decd2970706b3d2e4a16247a 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 7dd546058800abfc67b6da078709234d3d3d7061..38ca04a1b0672a35f1572888217bcb9a31468a13 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 92b01e4beeac852f98becd8f5c79f68344ba8d49..6e584d7f0ca61881e30f292878a9b26923bca43e 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 a222ef470fd296dd13baf6f457073eed6b7ec029..e9fb021ae82acee3f3faee89e5d38c6fef6a8289 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 8739fde217ba609b6e1bb45bf509c6a5695de07d..b510b5944f5fcfda0516aed1f54a1988102f062c 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 13924a9783ccd59338092c82679f40d13ff3ed15..cef8df3e69ea247d38a3a072d7b186aded75e1ad 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 90025d7b421207dbaf87afaddc804b6c5d2d21e2..fd277d0173d1636d63d21368a159c9fab4594f1c 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 900c2c89730c97ff8aaa70ba3163fdafba4a2075..323b57d464822a6d3daa232eb9da0df5045ec7b8 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 b71642a2bc0a2b57d54b0de92e67cdcd2f293325..8da2900b519979a7aa1f8d8a071dbb2abd22e13a 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 1f397a06a4ffd514bd95f2a44a68a38007a7d18c..327145f5a739e142f317ea836c63d8d0c156c826 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 fb7de996493b419733258017d4d7059a09e212f8..60873aa2004c91f2818d4186c20f69ed9e7841ce 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 b2da977ae4abfa1ee4e2e430a17c2c1d94787730..89a5f6d3fac236d8576eb446cc7dc4f5304457d3 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 d20c4935e1294304071cde454d6f29e448c36e3a..7f929827044ce50cbdc8107485384e02d5e7ad91 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 cec4aeb6b9538aa41bc2b6a9da0f2e9f21b5623a..c73b28f2298346ccd253e03087bde9b126b17ab3 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 0e14e997a8a4aa9280d67a8516d6ed636cfd3a3a..f7bc111abc926844902bada6d139463610115f06 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 dd8c42389db9b4111e09b0c755c7bd1ff342ddb9..b40a136d76a7029cf897712655794041c4eee97c 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 5d556183da65a7566c0cd6796ab33886a76c0272..51ffd27c32e9ed9a76a7508a75d76ad703e05d53 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 99aeee28b364d26f8f6bd6de7b61467bad24a68f..bf7885b4e71a9ae8834e85fea0295b38bc7985b9 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 57e20d3f6efbc47015aba6eaa6c14f77cffb1eab..ee0e783d38e01caeb8cb53a2506bc983d5ec6628 100644 (file)
@@ -29,6 +29,7 @@
 #include "HTMLAppletElement.h"
 #include "HTMLNames.h"
 #include "HTMLParamElement.h"
+#include "Widget.h"
 
 namespace WebCore {
 
index 5010f49ac51e54b0ddf44cb0b3d14ecbbab52d01..3c7ff0970cc9b650265631816e543ec7c5c9bef1 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 0ae604b37e70b3f178511b4f3519abf6996d1aee..f07e24e874313467e587b1f0a8e04af4423f925c 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 17867dcb812c9ad428b02792b39e84b0cf4e28fb..77fd550124713f71eee53d644ec1d63e88401d9f 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 415ad790928ce0f4a33332e13d9bcd449c06e11e..5ac334b84934d554cd9ba22f370c065fdb5effb7 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 15cad11dea827a9ce50dae7f5d224ce47d9a4ab2..3013b7ea3963451c5c3751a199a1836fa445ba2d 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 c7f55b5968d956b1a17fa5ea3dc0ef3325a4d593..d03267ea1f67432cf6ac1e94c6eddfb9729583bf 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"