2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
3 * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
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.
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.
32 #include "ResourceLoaderClient.h"
40 class FrameGdkClient {
42 virtual ~FrameGdkClient() = 0;
44 virtual void setFrame(const FrameGdk*) = 0;
46 virtual void openURL(const KURL&) = 0;
47 virtual void submitForm(const String& method, const KURL&, const FormData*) = 0;
50 class FrameGdkClientDefault : public FrameGdkClient,
51 public ResourceLoaderClient
55 FrameGdkClientDefault();
56 virtual ~FrameGdkClientDefault();
59 virtual void setFrame(const FrameGdk*);
60 virtual void openURL(const KURL&);
61 virtual void submitForm(const String& method, const KURL&, const FormData*);
63 // ResourceLoaderClient
64 virtual void receivedResponse(ResourceLoader*, PlatformResponse);
65 virtual void receivedData(ResourceLoader*, const char*, int);
66 virtual void receivedAllData(ResourceLoader*, PlatformData);
70 bool m_beginCalled : 1;
74 class FrameGdk : public Frame {
76 FrameGdk(Page*, Element*);
77 FrameGdk(GdkDrawable*);
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&);
86 virtual void setTitle(const String&);
88 virtual ObjectContentType objectContentType(const KURL&, const String& mimeType);
89 virtual Plugin* createPlugin(Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&);
91 virtual void scheduleClose();
93 virtual void unfocusWindow();
95 virtual void focusWindow();
97 virtual void saveDocumentState();
98 virtual void restoreDocumentState();
100 virtual void addMessageToConsole(const String& message, unsigned lineNumber, const String& sourceID);
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();
111 virtual void createEmptyDocument();
112 virtual Range* markedTextRange() const;
114 virtual String incomingReferrer() const;
115 virtual String userAgent() const;
117 virtual String mimeTypeForFileName(const String&) const;
119 virtual void markMisspellingsInAdjacentWords(const VisiblePosition&);
120 virtual void markMisspellings(const Selection&);
122 virtual bool lastEventIsMouseUp() const;
124 virtual bool passSubframeEventToSubframe(MouseEventWithHitTestResults &, Frame* subframe = 0);
125 virtual bool passWheelEventToChildWidget(Node*);
127 virtual String overrideMediaType() const;
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();
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();
150 virtual bool canGoBackOrForward(int distance) const;
151 virtual void handledOnloadEvents();
153 virtual bool canPaste() const;
154 virtual bool canRedo() const;
155 virtual bool canUndo() const;
156 virtual void print();
157 virtual bool shouldInterruptJavaScript();
159 bool keyPress(const PlatformKeyboardEvent&);
160 virtual KURL originalRequestURL() const;
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>&);
168 virtual bool isLoadTypeReload();
169 virtual bool passMouseDownEventToWidget(Widget*);
171 FrameGdkClient* m_client;
172 GdkDrawable* m_drawable;
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); }