| OLD | NEW |
| (Empty) |
| 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 "KURL.h" | |
| 30 #include "PlatformString.h" | |
| 31 #include "SecurityOrigin.h" | |
| 32 #include <wtf/Forward.h> | |
| 33 #include <wtf/RefCounted.h> | |
| 34 | |
| 35 #if USE(V8) | |
| 36 #include <wtf/HashMap.h> | |
| 37 #endif | |
| 38 #include <wtf/RefPtr.h> | |
| 39 | |
| 40 namespace WebCore { | |
| 41 | |
| 42 class BarInfo; | |
| 43 class CSSRuleList; | |
| 44 class CSSStyleDeclaration; | |
| 45 class Console; | |
| 46 class DOMSelection; | |
| 47 class Database; | |
| 48 class Document; | |
| 49 class Element; | |
| 50 class FloatRect; | |
| 51 class Frame; | |
| 52 class History; | |
| 53 class Location; | |
| 54 class Navigator; | |
| 55 class PostMessageTimer; | |
| 56 class Screen; | |
| 57 class String; | |
| 58 | |
| 59 #if USE(V8) | |
| 60 class ScheduledAction; | |
| 61 class PausedTimeouts; | |
| 62 class DOMWindowTimer; | |
| 63 #endif | |
| 64 | |
| 65 #if ENABLE(DOM_STORAGE) | |
| 66 class SessionStorage; | |
| 67 class Storage; | |
| 68 #endif | |
| 69 | |
| 70 #if ENABLE(OFFLINE_WEB_APPLICATIONS) | |
| 71 class DOMApplicationCache; | |
| 72 #endif | |
| 73 | |
| 74 typedef int ExceptionCode; | |
| 75 | |
| 76 class DOMWindow : public RefCounted<DOMWindow> { | |
| 77 public: | |
| 78 static PassRefPtr<DOMWindow> create(Frame* frame) { return adoptRef(new
DOMWindow(frame)); } | |
| 79 virtual ~DOMWindow(); | |
| 80 | |
| 81 Frame* frame() { return m_frame; } | |
| 82 void disconnectFrame(); | |
| 83 | |
| 84 void clear(); | |
| 85 | |
| 86 void setSecurityOrigin(SecurityOrigin* securityOrigin) { m_securityOrigi
n = securityOrigin; } | |
| 87 SecurityOrigin* securityOrigin() const { return m_securityOrigin.get();
} | |
| 88 | |
| 89 void setURL(const KURL& url) { m_url = url; } | |
| 90 KURL url() const { return m_url; } | |
| 91 | |
| 92 static void adjustWindowRect(const FloatRect& screen, FloatRect& window,
const FloatRect& pendingChanges); | |
| 93 | |
| 94 // DOM Level 0 | |
| 95 Screen* screen() const; | |
| 96 History* history() const; | |
| 97 BarInfo* locationbar() const; | |
| 98 BarInfo* menubar() const; | |
| 99 BarInfo* personalbar() const; | |
| 100 BarInfo* scrollbars() const; | |
| 101 BarInfo* statusbar() const; | |
| 102 BarInfo* toolbar() const; | |
| 103 Navigator* navigator() const; | |
| 104 Navigator* clientInformation() const { return navigator(); } | |
| 105 Location* location() const; | |
| 106 | |
| 107 DOMSelection* getSelection(); | |
| 108 | |
| 109 Element* frameElement() const; | |
| 110 | |
| 111 void focus(); | |
| 112 void blur(); | |
| 113 void close(); | |
| 114 void print(); | |
| 115 void stop(); | |
| 116 | |
| 117 void alert(const String& message); | |
| 118 bool confirm(const String& message); | |
| 119 String prompt(const String& message, const String& defaultValue); | |
| 120 | |
| 121 bool find(const String&, bool caseSensitive, bool backwards, bool wrap,
bool wholeWord, bool searchInFrames, bool showDialog) const; | |
| 122 | |
| 123 bool offscreenBuffering() const; | |
| 124 | |
| 125 int outerHeight() const; | |
| 126 int outerWidth() const; | |
| 127 int innerHeight() const; | |
| 128 int innerWidth() const; | |
| 129 int screenX() const; | |
| 130 int screenY() const; | |
| 131 int screenLeft() const { return screenX(); } | |
| 132 int screenTop() const { return screenY(); } | |
| 133 int scrollX() const; | |
| 134 int scrollY() const; | |
| 135 int pageXOffset() const { return scrollX(); } | |
| 136 int pageYOffset() const { return scrollY(); } | |
| 137 | |
| 138 bool closed() const; | |
| 139 | |
| 140 unsigned length() const; | |
| 141 | |
| 142 String name() const; | |
| 143 void setName(const String&); | |
| 144 | |
| 145 String status() const; | |
| 146 void setStatus(const String&); | |
| 147 String defaultStatus() const; | |
| 148 void setDefaultStatus(const String&); | |
| 149 // This attribute is an alias of defaultStatus and is necessary for lega
cy uses. | |
| 150 String defaultstatus() const { return defaultStatus(); } | |
| 151 void setDefaultstatus(const String& status) { setDefaultStatus(status);
} | |
| 152 | |
| 153 // Self referential attributes | |
| 154 DOMWindow* self() const; | |
| 155 DOMWindow* window() const { return self(); } | |
| 156 DOMWindow* frames() const { return self(); } | |
| 157 | |
| 158 DOMWindow* opener() const; | |
| 159 DOMWindow* parent() const; | |
| 160 DOMWindow* top() const; | |
| 161 | |
| 162 // DOM Level 2 AbstractView Interface | |
| 163 Document* document() const; | |
| 164 | |
| 165 // DOM Level 2 Style Interface | |
| 166 PassRefPtr<CSSStyleDeclaration> getComputedStyle(Element*, const String&
pseudoElt) const; | |
| 167 | |
| 168 // WebKit extensions | |
| 169 PassRefPtr<CSSRuleList> getMatchedCSSRules(Element*, const String& pseud
oElt, bool authorOnly = true) const; | |
| 170 double devicePixelRatio() const; | |
| 171 | |
| 172 #if ENABLE(DATABASE) | |
| 173 // HTML 5 client-side database | |
| 174 PassRefPtr<Database> openDatabase(const String& name, const String& vers
ion, const String& displayName, unsigned long estimatedSize, ExceptionCode&); | |
| 175 #endif | |
| 176 | |
| 177 #if ENABLE(DOM_STORAGE) | |
| 178 // HTML 5 key/value storage | |
| 179 Storage* sessionStorage() const; | |
| 180 Storage* localStorage() const; | |
| 181 #endif | |
| 182 | |
| 183 Console* console() const; | |
| 184 | |
| 185 #if ENABLE(OFFLINE_WEB_APPLICATIONS) | |
| 186 DOMApplicationCache* applicationCache() const; | |
| 187 #endif | |
| 188 | |
| 189 void postMessage(const String& message, const String& targetOrigin, DOMW
indow* source, ExceptionCode&); | |
| 190 void postMessageTimerFired(PostMessageTimer*); | |
| 191 | |
| 192 void scrollBy(int x, int y) const; | |
| 193 void scrollTo(int x, int y) const; | |
| 194 void scroll(int x, int y) const { scrollTo(x, y); } | |
| 195 | |
| 196 void moveBy(float x, float y) const; | |
| 197 void moveTo(float x, float y) const; | |
| 198 | |
| 199 void resizeBy(float x, float y) const; | |
| 200 void resizeTo(float width, float height) const; | |
| 201 | |
| 202 // These methods are used for GC marking. See JSDOMWindow::mark() in | |
| 203 // JSDOMWindowCustom.cpp. | |
| 204 Screen* optionalScreen() const { return m_screen.get(); } | |
| 205 DOMSelection* optionalSelection() const { return m_selection.get(); } | |
| 206 History* optionalHistory() const { return m_history.get(); } | |
| 207 BarInfo* optionalLocationbar() const { return m_locationbar.get(); } | |
| 208 BarInfo* optionalMenubar() const { return m_menubar.get(); } | |
| 209 BarInfo* optionalPersonalbar() const { return m_personalbar.get(); } | |
| 210 BarInfo* optionalScrollbars() const { return m_scrollbars.get(); } | |
| 211 BarInfo* optionalStatusbar() const { return m_statusbar.get(); } | |
| 212 BarInfo* optionalToolbar() const { return m_toolbar.get(); } | |
| 213 Console* optionalConsole() const { return m_console.get(); } | |
| 214 Navigator* optionalNavigator() const { return m_navigator.get(); } | |
| 215 Location* optionalLocation() const { return m_location.get(); } | |
| 216 #if ENABLE(DOM_STORAGE) | |
| 217 Storage* optionalSessionStorage() const { return m_sessionStorage.get();
} | |
| 218 Storage* optionalLocalStorage() const { return m_sessionStorage.get(); } | |
| 219 #endif | |
| 220 #if ENABLE(OFFLINE_WEB_APPLICATIONS) | |
| 221 DOMApplicationCache* optionalApplicationCache() const { return m_applica
tionCache.get(); } | |
| 222 #endif | |
| 223 | |
| 224 private: | |
| 225 DOMWindow(Frame*); | |
| 226 | |
| 227 RefPtr<SecurityOrigin> m_securityOrigin; | |
| 228 KURL m_url; | |
| 229 | |
| 230 Frame* m_frame; | |
| 231 mutable RefPtr<Screen> m_screen; | |
| 232 mutable RefPtr<DOMSelection> m_selection; | |
| 233 mutable RefPtr<History> m_history; | |
| 234 mutable RefPtr<BarInfo> m_locationbar; | |
| 235 mutable RefPtr<BarInfo> m_menubar; | |
| 236 mutable RefPtr<BarInfo> m_personalbar; | |
| 237 mutable RefPtr<BarInfo> m_scrollbars; | |
| 238 mutable RefPtr<BarInfo> m_statusbar; | |
| 239 mutable RefPtr<BarInfo> m_toolbar; | |
| 240 mutable RefPtr<Console> m_console; | |
| 241 mutable RefPtr<Navigator> m_navigator; | |
| 242 mutable RefPtr<Location> m_location; | |
| 243 #if ENABLE(DOM_STORAGE) | |
| 244 mutable RefPtr<Storage> m_sessionStorage; | |
| 245 mutable RefPtr<Storage> m_localStorage; | |
| 246 #endif | |
| 247 #if ENABLE(OFFLINE_WEB_APPLICATIONS) | |
| 248 mutable RefPtr<DOMApplicationCache> m_applicationCache; | |
| 249 #endif | |
| 250 | |
| 251 private: | |
| 252 void updateLayout() const; | |
| 253 | |
| 254 | |
| 255 #if USE(V8) | |
| 256 public: | |
| 257 // DOM methods & attributes for Window. | |
| 258 | |
| 259 DOMWindow* open(const String& url = "", | |
| 260 const String& name = "_blank", | |
| 261 const String& options = ""); | |
| 262 | |
| 263 void back(); | |
| 264 void forward(); | |
| 265 | |
| 266 Navigator* navigator(); | |
| 267 void dump(const String&); | |
| 268 | |
| 269 Location* location(); | |
| 270 | |
| 271 // Change the current window location to a new location. | |
| 272 // The function checks domain security. | |
| 273 void setLocation(const String& loc); | |
| 274 | |
| 275 // void home(); | |
| 276 // void stop(); | |
| 277 | |
| 278 void clearTimeout(int id); | |
| 279 void clearInterval(int id) { clearTimeout(id); } | |
| 280 | |
| 281 void timerFired(DOMWindowTimer* timer); | |
| 282 | |
| 283 // void updateCommands(const String&); | |
| 284 // | |
| 285 // String escape(const String&); | |
| 286 // String unescape(const String&); | |
| 287 | |
| 288 int installTimeout(ScheduledAction* a, int t, bool singleShot); | |
| 289 | |
| 290 void scheduleClose(); | |
| 291 void clearAllTimeouts(); | |
| 292 | |
| 293 void pauseTimeouts(OwnPtr<PausedTimeouts>&); | |
| 294 void resumeTimeouts(OwnPtr<PausedTimeouts>&); | |
| 295 | |
| 296 private: | |
| 297 typedef HashMap<int, DOMWindowTimer*> TimeoutsMap; | |
| 298 TimeoutsMap m_timeouts; | |
| 299 #endif | |
| 300 }; | |
| 301 | |
| 302 } // namespace WebCore | |
| 303 | |
| 304 #endif | |
| OLD | NEW |