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