2006-12-18 Ada Chan <adachan@apple.com>
[WebKit-https.git] / WebCore / bridge / win / FrameWin.h
1 /*
2  * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
3  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
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.
13  *
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. 
25  */
26
27 #ifndef FrameWin_h
28 #define FrameWin_h
29
30 #include "Frame.h"
31
32 namespace WebCore {
33
34     class FormData;
35     class FrameLoadRequest;
36     class ResourceRequest;
37     struct WindowFeatures;
38
39     class FrameWinClient {
40     public:
41         virtual void createNewWindow(const ResourceRequest&, const WindowFeatures&, Frame*& newFrame) = 0;
42         virtual void openURL(const DeprecatedString&, bool lockHistory) = 0;
43         virtual void submitForm(const String& method, const KURL&, const FormData*) = 0;
44         virtual void setTitle(const String& title) = 0;
45         virtual void setStatusText(const String& statusText) = 0;
46     };
47
48     class FrameWin : public Frame {
49     public:
50         FrameWin(Page*, HTMLFrameOwnerElement*, FrameWinClient*, FrameLoaderClient*);
51         virtual ~FrameWin();
52
53         virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
54         virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
55         virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
56         virtual KJS::Bindings::RootObject* bindingRootObject();
57
58         virtual void runJavaScriptAlert(const String& message);
59         virtual bool runJavaScriptConfirm(const String& message);
60         virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue, String& result);
61         virtual bool shouldInterruptJavaScript();
62         virtual void focusWindow();
63         virtual void unfocusWindow();
64         virtual void print();
65
66         virtual Range* markedTextRange() const;
67         virtual void issueCutCommand();
68         virtual void issueCopyCommand();
69         virtual void issuePasteCommand();
70         virtual void issuePasteAndMatchStyleCommand();
71         virtual void issueTransposeCommand();
72         virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping);
73         virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const;
74
75         virtual String mimeTypeForFileName(const String&) const;
76
77         virtual bool keyPress(const PlatformKeyboardEvent&);
78
79         FrameWinClient* client() const;
80
81     protected:
82         virtual bool isLoadTypeReload();
83
84     private:
85         virtual bool passMouseDownEventToWidget(Widget*);
86
87         FrameWinClient* m_client;
88     };
89
90     inline FrameWin* Win(Frame* frame) { return static_cast<FrameWin*>(frame); }
91     inline const FrameWin* Win(const Frame* frame) { return static_cast<const FrameWin*>(frame); }
92
93 } // namespace WebCore
94
95 #endif // FrameWin_h