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