2006-10-12 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
[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 "ResourceLoaderClient.h"
33 #include <gdk/gdk.h>
34
35 namespace WebCore {
36
37 class Element;
38 class FrameGdk;
39
40 class FrameGdkClient {
41 public:
42     virtual ~FrameGdkClient() = 0;
43
44     virtual void setFrame(const FrameGdk*) = 0;
45
46     virtual void openURL(const KURL&) = 0;
47     virtual void submitForm(const String& method, const KURL&, const FormData*) = 0;
48 };
49
50 class FrameGdkClientDefault : public FrameGdkClient,
51                               public  ResourceLoaderClient 
52 {
53 public:
54
55     FrameGdkClientDefault();
56     virtual ~FrameGdkClientDefault();
57
58     // FrameGdkClient
59     virtual void setFrame(const FrameGdk*);
60     virtual void openURL(const KURL&);
61     virtual void submitForm(const String& method, const KURL&, const FormData*);
62
63     // ResourceLoaderClient
64     virtual void receivedResponse(ResourceLoader*, PlatformResponse);
65     virtual void receivedData(ResourceLoader*, const char*, int);
66     virtual void receivedAllData(ResourceLoader*, PlatformData);
67
68 private:
69     FrameGdk* m_frame;
70     bool m_beginCalled : 1;
71
72 };
73
74 class FrameGdk : public Frame {
75 public:
76     FrameGdk(Page*, Element*);
77     FrameGdk(GdkDrawable*);
78     virtual ~FrameGdk();
79
80     void handleGdkEvent(GdkEvent*);
81     virtual bool openURL(const KURL&);
82     virtual void openURLRequest(const ResourceRequest&);
83     virtual void submitForm(const ResourceRequest&);
84     virtual void urlSelected(const ResourceRequest&);
85
86     virtual void setTitle(const String&);
87
88     virtual ObjectContentType objectContentType(const KURL&, const String& mimeType);
89     virtual Plugin* createPlugin(Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&);
90
91     virtual void scheduleClose();
92
93     virtual void unfocusWindow();
94
95     virtual void focusWindow();
96
97     virtual void saveDocumentState();
98     virtual void restoreDocumentState();
99
100     virtual void addMessageToConsole(const String& message, unsigned lineNumber, const String& sourceID);
101
102     virtual void runJavaScriptAlert(const String& message);
103     virtual bool runJavaScriptConfirm(const String& message);
104     virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result);
105     virtual bool locationbarVisible();
106     virtual bool menubarVisible();
107     virtual bool personalbarVisible();
108     virtual bool statusbarVisible();
109     virtual bool toolbarVisible();
110
111     virtual void createEmptyDocument();
112     virtual Range* markedTextRange() const;
113
114     virtual String incomingReferrer() const;
115     virtual String userAgent() const;
116
117     virtual String mimeTypeForFileName(const String&) const;
118
119     virtual void markMisspellingsInAdjacentWords(const VisiblePosition&);
120     virtual void markMisspellings(const Selection&);
121
122     virtual bool lastEventIsMouseUp() const;
123
124     virtual bool passSubframeEventToSubframe(MouseEventWithHitTestResults &, Frame* subframe = 0);
125     virtual bool passWheelEventToChildWidget(Node*);
126
127     virtual String overrideMediaType() const;
128
129     virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
130     virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
131     virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
132     virtual KJS::Bindings::RootObject* bindingRootObject();
133
134     virtual void registerCommandForUndo(PassRefPtr<EditCommand>);
135     virtual void registerCommandForRedo(PassRefPtr<EditCommand>);
136     virtual void clearUndoRedoOperations();
137     virtual void issueUndoCommand();
138     virtual void issueRedoCommand();
139     virtual void issueCutCommand();
140     virtual void issueCopyCommand();
141     virtual void issuePasteCommand();
142     virtual void issuePasteAndMatchStyleCommand();
143     virtual void issueTransposeCommand();
144     virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping);
145     virtual void respondToChangedContents(const Selection& endingSelection);
146     virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const;
147     bool shouldChangeSelection(const Selection&) const;
148     virtual void partClearedInBegin();
149
150     virtual bool canGoBackOrForward(int distance) const;
151     virtual void handledOnloadEvents();
152
153     virtual bool canPaste() const;
154     virtual bool canRedo() const;
155     virtual bool canUndo() const;
156     virtual void print();
157     virtual bool shouldInterruptJavaScript();
158
159     bool keyPress(const PlatformKeyboardEvent&);
160     virtual KURL originalRequestURL() const;
161
162     IntRect frameGeometry() const;
163     void setFrameGeometry(const IntRect&);
164     virtual Frame* createFrame(const KURL&, const String& name, Element* ownerElement, const String& referrer);
165     Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>&);
166
167 private:
168     virtual bool isLoadTypeReload();
169     virtual bool passMouseDownEventToWidget(Widget*);
170
171     FrameGdkClient* m_client;
172     GdkDrawable* m_drawable;
173 };
174
175 inline FrameGdk* Win(Frame* frame) { return static_cast<FrameGdk*>(frame); }
176 inline const FrameGdk* Win(const Frame* frame) { return static_cast<const FrameGdk*>(frame); }
177
178 }
179
180 #endif