WebCore:
[WebKit-https.git] / WebCore / bridge / win / FrameWin.h
1 /*
2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef FrameWin_H
27 #define FrameWin_H
28
29 #include "Frame.h"
30
31 namespace WebCore {
32
33 class FrameWinClient
34 {
35 public:
36     virtual void openURL(const DeprecatedString&, bool lockHistory) = 0;
37     virtual void submitForm(const String& method, const KURL&, const FormData*) = 0;
38     virtual void setTitle(const String& title) = 0;
39     virtual void setStatusText(const String& statusText) = 0;
40 };
41
42 class FrameWin : public Frame
43 {
44 public:
45     FrameWin(Page*, Element*, FrameWinClient*);
46     ~FrameWin();
47
48     virtual bool openURL(const KURL&);
49     virtual void openURLRequest(const ResourceRequest&);
50     virtual void submitForm(const ResourceRequest&);
51     virtual void urlSelected(const ResourceRequest&);
52
53     virtual void setTitle(const String&);
54     virtual void setStatusBarText(const String&);
55
56     virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
57     virtual Plugin* createPlugin(Element*, const KURL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType);
58     virtual Frame* createFrame(const KURL&, const String& name, Element* ownerElement, const String& referrer);
59
60     virtual void scheduleClose();
61
62     virtual void focusWindow();
63     virtual void unfocusWindow();
64     
65     virtual void saveDocumentState();
66     virtual void restoreDocumentState();
67     
68     virtual void addMessageToConsole(const String& message,  unsigned int lineNumber, const String& sourceID);
69
70     virtual void runJavaScriptAlert(const String& message);
71     virtual bool runJavaScriptConfirm(const String& message);
72     virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result);
73     virtual bool shouldInterruptJavaScript();
74     
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* subframePart = 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     void FrameWin::respondToChangedContents(const Selection& endingSelection);
116     virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const;
117     virtual void partClearedInBegin();
118
119     virtual bool canGoBackOrForward(int distance) const;
120     virtual void handledOnloadEvents();
121
122     virtual bool canPaste() const;
123     virtual bool canRedo() const;
124     virtual bool canUndo() const;
125     virtual void print();
126
127     bool keyPress(const PlatformKeyboardEvent&);
128     virtual KURL originalRequestURL() const;
129     
130 protected:
131     virtual bool isLoadTypeReload();
132
133 private:
134     virtual bool passMouseDownEventToWidget(Widget*);
135     FrameWinClient* m_client;
136 };
137
138 inline FrameWin* Win(Frame* frame) { return static_cast<FrameWin*>(frame); }
139 inline const FrameWin* Win(const Frame* frame) { return static_cast<const FrameWin*>(frame); }
140
141 }
142
143 #endif