6841349c0a01e50d1950cf1847104030585e6e68
[WebKit-https.git] / WebCore / page / DOMWindow.h
1 /*
2  * Copyright (C) 2006, 2007 Apple 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 DOMWindow_h
27 #define DOMWindow_h
28
29 #include "PlatformString.h"
30 #include "Shared.h"
31 #include <wtf/Forward.h>
32 #include <wtf/RefPtr.h>
33
34 namespace WebCore {
35
36     class BarInfo;
37     class CSSRuleList;
38     class CSSStyleDeclaration;
39     class DOMSelection;
40     class Document;
41     class Element;
42     class Frame;
43     class History;
44     class Screen;
45     
46     class DOMWindow : public Shared<DOMWindow> {
47     public:
48         DOMWindow(Frame*);
49         virtual ~DOMWindow();
50
51         Frame* frame() { return m_frame; }
52         void disconnectFrame();
53
54         void clear();
55
56         // DOM Level 0
57         Screen* screen() const;
58         History* history() const;
59         BarInfo* locationbar() const;
60         BarInfo* menubar() const;
61         BarInfo* personalbar() const;
62         BarInfo* scrollbars() const;
63         BarInfo* statusbar() const;
64         BarInfo* toolbar() const;
65
66         DOMSelection* getSelection();
67
68         Element* frameElement() const;
69
70         void focus();
71         void blur();
72         void close();
73         void print();
74         void stop();
75
76         void alert(const String& message);
77         bool confirm(const String& message);
78         String prompt(const String& message, const String& defaultValue);
79
80         bool find(const String&, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) const;
81
82         bool offscreenBuffering() const;
83
84         int outerHeight() const;
85         int outerWidth() const;
86         int innerHeight() const;
87         int innerWidth() const;
88         int screenX() const;
89         int screenY() const;
90         int screenLeft() const { return screenX(); }
91         int screenTop() const { return screenY(); }
92         int scrollX() const;
93         int scrollY() const;
94         int pageXOffset() const { return scrollX(); }
95         int pageYOffset() const { return scrollY(); }
96
97         bool closed() const;
98
99         unsigned length() const;
100
101         String name() const;
102         void setName(const String&);
103
104         String status() const;
105         void setStatus(const String&);
106         String defaultStatus() const;
107         void setDefaultStatus(const String&);
108         // This attribute is an alias of defaultStatus and is necessary for legacy uses.
109         String defaultstatus() const { return defaultStatus(); }
110         void setDefaultstatus(const String& string) { setDefaultStatus(string); }
111
112         // Self referential attributes
113         DOMWindow* self() const;
114         DOMWindow* window() const { return self(); }
115         DOMWindow* frames() const { return self(); }
116
117         DOMWindow* opener() const;
118         DOMWindow* parent() const;
119         DOMWindow* top() const;
120
121         // DOM Level 2 AbstractView Interface
122         Document* document() const;
123
124         // DOM Level 2 Style Interface
125         PassRefPtr<CSSStyleDeclaration> getComputedStyle(Element*, const String& pseudoElt) const;
126
127         // WebKit extensions
128         PassRefPtr<CSSRuleList> getMatchedCSSRules(Element*, const String& pseudoElt, bool authorOnly = true) const;
129         double devicePixelRatio() const;
130
131     private:
132         Frame* m_frame;
133         mutable RefPtr<Screen> m_screen;
134         mutable RefPtr<DOMSelection> m_selection;
135         mutable RefPtr<History> m_history;
136         mutable RefPtr<BarInfo> m_locationbar;
137         mutable RefPtr<BarInfo> m_menubar;
138         mutable RefPtr<BarInfo> m_personalbar;
139         mutable RefPtr<BarInfo> m_scrollbars;
140         mutable RefPtr<BarInfo> m_statusbar;
141         mutable RefPtr<BarInfo> m_toolbar;
142     };
143
144 } // namespace WebCore
145
146 #endif