2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
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.
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.
34 class FrameLoadRequest;
35 struct WindowFeatures;
37 class FrameWinClient {
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;
46 class FrameWin : public Frame {
48 FrameWin(Page*, Element*, FrameWinClient*);
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&, const Event* triggeringEvent);
57 virtual void setTitle(const String&);
58 virtual void setStatusBarText(const String&);
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);
65 virtual void scheduleClose();
67 virtual void focusWindow();
68 virtual void unfocusWindow();
70 virtual void saveDocumentState();
71 virtual void restoreDocumentState();
73 virtual void addMessageToConsole(const String& message, unsigned int lineNumber, const String& sourceID);
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();
80 virtual bool locationbarVisible();
81 virtual bool menubarVisible();
82 virtual bool personalbarVisible();
83 virtual bool statusbarVisible();
84 virtual bool toolbarVisible();
86 virtual void createEmptyDocument();
87 virtual Range* markedTextRange() const;
89 virtual String incomingReferrer() const;
90 virtual String userAgent() const;
92 virtual String mimeTypeForFileName(const String&) const;
94 virtual void markMisspellingsInAdjacentWords(const VisiblePosition&);
95 virtual void markMisspellings(const Selection&);
97 virtual bool lastEventIsMouseUp() const;
99 virtual bool passSubframeEventToSubframe(MouseEventWithHitTestResults &, Frame* subframePart = 0);
100 virtual bool passWheelEventToChildWidget(Node*);
102 virtual String overrideMediaType() const;
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();
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();
124 virtual bool canGoBackOrForward(int distance) const;
125 virtual void handledOnloadEvents();
127 virtual bool canPaste() const;
128 virtual bool canRedo() const;
129 virtual bool canUndo() const;
130 virtual void print();
132 bool keyPress(const PlatformKeyboardEvent&);
133 virtual KURL originalRequestURL() const;
134 virtual IntRect windowResizerRect() const;
137 virtual bool isLoadTypeReload();
140 virtual bool passMouseDownEventToWidget(Widget*);
141 FrameWinClient* m_client;
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); }
147 } // namespace WebCore