2006-10-17 Steve Falkenburg <sfalken@apple.com>
[WebKit-https.git] / WebCore / bridge / win / FrameWin.h
1 /*
2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef FrameWin_H
27 #define FrameWin_H
28
29 #include "Frame.h"
30
31 namespace WebCore {
32
33 class FrameLoadRequest;
34
35 class FrameWinClient {
36 public:
37     virtual void createNewWindow(const ResourceRequest&) = 0;
38     virtual void createNewWindow(const ResourceRequest&,
39                                  const WindowFeatures&,
40                                  Frame*& part) = 0;
41     virtual void openURL(const DeprecatedString&, bool lockHistory) = 0;
42     virtual void submitForm(const String& method, const KURL&, const FormData*) = 0;
43     virtual void setTitle(const String& title) = 0;
44     virtual void setStatusText(const String& statusText) = 0;
45 };
46
47 class FrameWin : public Frame {
48 public:
49     FrameWin(Page*, Element*, FrameWinClient*);
50     ~FrameWin();
51
52     virtual void createNewWindow(const FrameLoadRequest&);
53     virtual void createNewWindow(const FrameLoadRequest&, const WindowFeatures&, Frame*& part);
54     virtual bool openURL(const KURL&);
55     virtual void openURLRequest(const FrameLoadRequest&);
56     virtual void submitForm(const FrameLoadRequest&);
57     virtual void urlSelected(const FrameLoadRequest&);
58
59     virtual void setTitle(const String&);
60     virtual void setStatusBarText(const String&);
61
62     virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
63     virtual Plugin* createPlugin(Element*, const KURL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType);
64     virtual Frame* createFrame(const KURL&, const String& name, Element* ownerElement, const String& referrer);
65     virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>& args);
66
67     virtual void scheduleClose();
68
69     virtual void focusWindow();
70     virtual void unfocusWindow();
71     
72     virtual void saveDocumentState();
73     virtual void restoreDocumentState();
74     
75     virtual void addMessageToConsole(const String& message,  unsigned int lineNumber, const String& sourceID);
76
77     virtual void runJavaScriptAlert(const String& message);
78     virtual bool runJavaScriptConfirm(const String& message);
79     virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result);
80     virtual bool shouldInterruptJavaScript();
81     
82     virtual bool locationbarVisible();
83     virtual bool menubarVisible();
84     virtual bool personalbarVisible();
85     virtual bool statusbarVisible();
86     virtual bool toolbarVisible();
87
88     virtual void createEmptyDocument();
89     virtual Range* markedTextRange() const;
90
91     virtual String incomingReferrer() const;
92     virtual String userAgent() const;
93
94     virtual String mimeTypeForFileName(const String&) const;
95
96     virtual void markMisspellingsInAdjacentWords(const VisiblePosition&);
97     virtual void markMisspellings(const Selection&);
98
99     virtual bool lastEventIsMouseUp() const;
100
101     virtual bool passSubframeEventToSubframe(MouseEventWithHitTestResults &, Frame* subframePart = 0);
102     virtual bool passWheelEventToChildWidget(Node*);
103     
104     virtual String overrideMediaType() const;
105
106     virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
107     virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
108     virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
109     virtual KJS::Bindings::RootObject* bindingRootObject();
110     
111     virtual void registerCommandForUndo(PassRefPtr<EditCommand>);
112     virtual void registerCommandForRedo(PassRefPtr<EditCommand>);
113     virtual void clearUndoRedoOperations();
114     virtual void issueUndoCommand();
115     virtual void issueRedoCommand();
116     virtual void issueCutCommand();
117     virtual void issueCopyCommand();
118     virtual void issuePasteCommand();
119     virtual void issuePasteAndMatchStyleCommand();
120     virtual void issueTransposeCommand();
121     virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping);
122     void FrameWin::respondToChangedContents(const Selection& endingSelection);
123     virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const;
124     virtual void partClearedInBegin();
125
126     virtual bool canGoBackOrForward(int distance) const;
127     virtual void handledOnloadEvents();
128
129     virtual bool canPaste() const;
130     virtual bool canRedo() const;
131     virtual bool canUndo() const;
132     virtual void print();
133
134     bool keyPress(const PlatformKeyboardEvent&);
135     virtual KURL originalRequestURL() const;
136     virtual IntRect windowResizerRect() const;
137     
138 protected:
139     virtual bool isLoadTypeReload();
140
141 private:
142     virtual bool passMouseDownEventToWidget(Widget*);
143     FrameWinClient* m_client;
144 };
145
146 inline FrameWin* Win(Frame* frame) { return static_cast<FrameWin*>(frame); }
147 inline const FrameWin* Win(const Frame* frame) { return static_cast<const FrameWin*>(frame); }
148
149 } // namespace WebCore
150
151 #endif