2006-09-15 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
39 class FrameGdkClient {
40 public:
41     virtual void openURL(const DeprecatedString&) = 0;
42 };
43
44 class FrameGdk : public Frame, ResourceLoaderClient {
45 public:
46     FrameGdk(Page*, Element*);
47     FrameGdk(GdkDrawable*);
48     ~FrameGdk();
49
50     void handleGdkEvent(GdkEvent*);
51     virtual bool openURL(const KURL&);
52     virtual void openURLRequest(const ResourceRequest&);
53     virtual void submitForm(const ResourceRequest&);
54     virtual void urlSelected(const ResourceRequest&);
55
56     virtual void setTitle(const String&);
57
58     virtual ObjectContentType objectContentType(const KURL&, const String& mimeType);
59     virtual Plugin* createPlugin(Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&);
60
61     virtual void scheduleClose();
62
63     virtual void unfocusWindow();
64
65     virtual void focusWindow();
66
67     virtual void saveDocumentState();
68     virtual void restoreDocumentState();
69
70     virtual void addMessageToConsole(const String& message, unsigned lineNumber, const String& sourceID);
71
72     virtual void runJavaScriptAlert(const String& message);
73     virtual bool runJavaScriptConfirm(const String& message);
74     virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result);
75     virtual bool locationbarVisible();
76     virtual bool menubarVisible();
77     virtual bool personalbarVisible();
78     virtual bool statusbarVisible();
79     virtual bool toolbarVisible();
80
81     virtual void createEmptyDocument();
82     virtual Range* markedTextRange() const;
83
84     virtual String incomingReferrer() const;
85     virtual String userAgent() const;
86
87     virtual String mimeTypeForFileName(const String&) const;
88
89     virtual void markMisspellingsInAdjacentWords(const VisiblePosition&);
90     virtual void markMisspellings(const Selection&);
91
92     virtual bool lastEventIsMouseUp() const;
93
94     virtual bool passSubframeEventToSubframe(MouseEventWithHitTestResults &, Frame* subframe = 0);
95     virtual bool passWheelEventToChildWidget(Node*);
96
97     virtual String overrideMediaType() const;
98
99     virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
100     virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
101     virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
102     virtual KJS::Bindings::RootObject* bindingRootObject();
103
104     virtual void registerCommandForUndo(PassRefPtr<EditCommand>);
105     virtual void registerCommandForRedo(PassRefPtr<EditCommand>);
106     virtual void clearUndoRedoOperations();
107     virtual void issueUndoCommand();
108     virtual void issueRedoCommand();
109     virtual void issueCutCommand();
110     virtual void issueCopyCommand();
111     virtual void issuePasteCommand();
112     virtual void issuePasteAndMatchStyleCommand();
113     virtual void issueTransposeCommand();
114     virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping);
115     virtual void respondToChangedContents(const Selection& endingSelection);
116     virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const;
117     bool shouldChangeSelection(const Selection&) const;
118     virtual void partClearedInBegin();
119
120     virtual bool canGoBackOrForward(int distance) const;
121     virtual void handledOnloadEvents();
122
123     virtual bool canPaste() const;
124     virtual bool canRedo() const;
125     virtual bool canUndo() const;
126     virtual void print();
127     virtual bool shouldInterruptJavaScript();
128
129     bool keyPress(const PlatformKeyboardEvent&);
130
131     virtual void receivedData(ResourceLoader*, const char*, int);
132     virtual void receivedAllData(ResourceLoader*,PlatformData);
133
134     IntRect frameGeometry() const;
135     void setFrameGeometry(const IntRect&);
136     virtual Frame* createFrame(const KURL&, const String& name, Element* ownerElement, const String& referrer);
137
138 private:
139     virtual bool passMouseDownEventToWidget(Widget*);
140     FrameGdkClient* m_client;
141     GdkDrawable* m_drawable;
142 };
143
144 inline FrameGdk* Win(Frame* frame) { return static_cast<FrameGdk*>(frame); }
145 inline const FrameGdk* Win(const Frame* frame) { return static_cast<const FrameGdk*>(frame); }
146
147 }
148
149 #endif