15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006, 2007, 2009, 2010 Apple Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer in the
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    documentation and/or other materials provided with the distribution.
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef DOMWindow_h
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define DOMWindow_h
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "bindings/v8/Dictionary.h"
31e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "bindings/v8/ScriptWrappable.h"
3206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "core/events/EventTarget.h"
33a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "core/frame/DOMWindowBase64.h"
341e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "core/frame/FrameDestructionObserver.h"
35f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/LifecycleContext.h"
361e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/Supplementable.h"
37f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/heap/Handle.h"
38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "wtf/Forward.h"
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
42e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    class ApplicationCache;
43e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    class BarProp;
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class CSSRuleList;
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class CSSStyleDeclaration;
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Console;
4753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    class DOMPoint;
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class DOMSelection;
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class DOMURL;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class DOMWindowProperty;
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Database;
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class DatabaseCallback;
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Document;
54f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    class DocumentInit;
55f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    class DOMWindowEventQueue;
56e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    class DOMWindowLifecycleNotifier;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Element;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class EventListener;
59f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    class EventQueue;
607757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    class ExceptionState;
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class FloatRect;
626f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    class FrameConsole;
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class History;
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class IDBFactory;
656f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    class LocalFrame;
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Location;
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class MediaQueryList;
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class MessageEvent;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Navigator;
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Node;
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Page;
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Performance;
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class PostMessageTimer;
7453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    class RequestAnimationFrameCallback;
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class ScheduledAction;
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Screen;
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class ScriptCallStack;
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class SecurityOrigin;
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class SerializedScriptValue;
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Storage;
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class StyleMedia;
82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    class DOMWindowCSS;
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    struct WindowFeatures;
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    typedef Vector<RefPtr<MessagePort>, 1> MessagePortArray;
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
88f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)enum PageshowEventPersistence {
89f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    PageshowEventNotPersisted = 0,
90f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    PageshowEventPersisted = 1
91f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)};
92f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    enum SetLocationLocking { LockHistoryBasedOnGestureState, LockHistoryAndBackForwardList };
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
9576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    class LocalDOMWindow FINAL : public RefCountedWillBeRefCountedGarbageCollected<LocalDOMWindow>, public ScriptWrappable, public EventTargetWithInlineData, public DOMWindowBase64, public FrameDestructionObserver, public WillBeHeapSupplementable<LocalDOMWindow>, public LifecycleContext<LocalDOMWindow> {
9676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LocalDOMWindow);
9776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        REFCOUNTED_EVENT_TARGET(LocalDOMWindow);
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    public:
99d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        static PassRefPtrWillBeRawPtr<Document> createDocument(const String& mimeType, const DocumentInit&, bool forceXHTML);
10076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        static PassRefPtrWillBeRawPtr<LocalDOMWindow> create(LocalFrame& frame)
10107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        {
10276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)            return adoptRefWillBeRefCountedGarbageCollected(new LocalDOMWindow(frame));
10307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        }
10476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        virtual ~LocalDOMWindow();
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
106d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        PassRefPtrWillBeRawPtr<Document> installNewDocument(const String& mimeType, const DocumentInit&, bool forceXHTML = false);
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1081e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)        virtual const AtomicString& interfaceName() const OVERRIDE;
1091e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)        virtual ExecutionContext* executionContext() const OVERRIDE;
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        virtual LocalDOMWindow* toDOMWindow() OVERRIDE;
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void registerProperty(DOMWindowProperty*);
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void unregisterProperty(DOMWindowProperty*);
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
11653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)        void reset();
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
118d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        PassRefPtrWillBeRawPtr<MediaQueryList> matchMedia(const String&);
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        unsigned pendingUnloadEventListeners() const;
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        static FloatRect adjustWindowRect(LocalFrame&, const FloatRect& pendingChanges);
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool allowPopUp(); // Call on first window, not target window.
125d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        static bool allowPopUp(LocalFrame& firstFrame);
126d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        static bool canShowModalDialogNow(const LocalFrame*);
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // DOM Level 0
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Screen& screen() const;
131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        History& history() const;
132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        BarProp& locationbar() const;
133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        BarProp& menubar() const;
134d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        BarProp& personalbar() const;
135d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        BarProp& scrollbars() const;
136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        BarProp& statusbar() const;
137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        BarProp& toolbar() const;
138d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Navigator& navigator() const;
139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Navigator& clientInformation() const { return navigator(); }
140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Location& location() const;
14276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        void setLocation(const String& location, LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWindow,
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            SetLocationLocking = LockHistoryBasedOnGestureState);
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DOMSelection* getSelection();
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Element* frameElement() const;
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1491e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)        void focus(ExecutionContext* = 0);
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void blur();
1511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)        void close(ExecutionContext* = 0);
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void print();
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void stop();
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        PassRefPtrWillBeRawPtr<LocalDOMWindow> open(const String& urlString, const AtomicString& frameName, const String& windowFeaturesString,
15676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)            LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWindow);
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
15876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        typedef void (*PrepareDialogFunction)(LocalDOMWindow*, void* context);
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void showModalDialog(const String& urlString, const String& dialogFeaturesString,
16076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)            LocalDOMWindow* callingWindow, LocalDOMWindow* enteredWindow, PrepareDialogFunction, void* functionContext);
1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
162d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        void alert(const String& message = String());
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool confirm(const String& message);
1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String prompt(const String& message, const String& defaultValue);
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool find(const String&, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) const;
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool offscreenBuffering() const;
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int outerHeight() const;
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int outerWidth() const;
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int innerHeight() const;
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int innerWidth() const;
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int screenX() const;
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int screenY() const;
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int screenLeft() const { return screenX(); }
1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int screenTop() const { return screenY(); }
1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int scrollX() const;
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int scrollY() const;
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int pageXOffset() const { return scrollX(); }
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int pageYOffset() const { return scrollY(); }
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool closed() const;
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        unsigned length() const;
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
187a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        const AtomicString& name() const;
188a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        void setName(const AtomicString&);
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String status() const;
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setStatus(const String&);
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String defaultStatus() const;
1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void setDefaultStatus(const String&);
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Self-referential attributes
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* self() const;
19876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* window() const { return self(); }
19976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* frames() const { return self(); }
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
20176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* opener() const;
20276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* parent() const;
20376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* top() const;
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // DOM Level 2 AbstractView Interface
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Document* document() const;
2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // CSSOM View Module
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
211d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        StyleMedia& styleMedia() const;
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // DOM Level 2 Style Interface
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
215323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)        PassRefPtrWillBeRawPtr<CSSStyleDeclaration> getComputedStyle(Element*, const String& pseudoElt) const;
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // WebKit extensions
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
219d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        PassRefPtrWillBeRawPtr<CSSRuleList> getMatchedCSSRules(Element*, const String& pseudoElt) const;
2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        double devicePixelRatio() const;
2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        PassRefPtrWillBeRawPtr<DOMPoint> webkitConvertPointFromPageToNode(Node*, const DOMPoint*) const;
22307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        PassRefPtrWillBeRawPtr<DOMPoint> webkitConvertPointFromNodeToPage(Node*, const DOMPoint*) const;
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
225d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Console& console() const;
2266f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        FrameConsole* frameConsole() const;
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void printErrorMessage(const String&);
22976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        String crossDomainAccessErrorMessage(LocalDOMWindow* callingWindow);
23076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        String sanitizedCrossDomainAccessErrorMessage(LocalDOMWindow* callingWindow);
2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        void postMessage(PassRefPtr<SerializedScriptValue> message, const MessagePortArray*, const String& targetOrigin, LocalDOMWindow* source, ExceptionState&);
233c4de9692585dd12fa75b760eebef04fa43fc1ae6Bo Liu        void postMessageTimerFired(PostMessageTimer*);
2345d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        void dispatchMessageEventWithOriginCheck(SecurityOrigin* intendedTargetOrigin, PassRefPtrWillBeRawPtr<Event>, PassRefPtrWillBeRawPtr<ScriptCallStack>);
2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2365d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        void scrollBy(int x, int y) const;
23709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        void scrollBy(int x, int y, const Dictionary& scrollOptions, ExceptionState&) const;
2385d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        void scrollTo(int x, int y) const;
23909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        void scrollTo(int x, int y, const Dictionary& scrollOptions, ExceptionState&) const;
2405d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        void scroll(int x, int y) const { scrollTo(x, y); }
24109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        void scroll(int x, int y, const Dictionary& scrollOptions, ExceptionState& exceptionState) const { scrollTo(x, y, scrollOptions, exceptionState); }
2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void moveBy(float x, float y) const;
2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void moveTo(float x, float y) const;
2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void resizeBy(float x, float y) const;
2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void resizeTo(float width, float height) const;
2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // WebKit animation extensions
250a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        int requestAnimationFrame(PassOwnPtr<RequestAnimationFrameCallback>);
251a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        int webkitRequestAnimationFrame(PassOwnPtr<RequestAnimationFrameCallback>);
2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void cancelAnimationFrame(int id);
2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        DOMWindowCSS& css() const;
255926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Events
2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // EventTarget API
25843e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)        virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture = false) OVERRIDE;
25943e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)        virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture = false) OVERRIDE;
2601e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)        virtual void removeAllEventListeners() OVERRIDE;
2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        using EventTarget::dispatchEvent;
263f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)        bool dispatchEvent(PassRefPtrWillBeRawPtr<Event> prpEvent, PassRefPtrWillBeRawPtr<EventTarget> prpTarget);
264926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void dispatchLoadEvent();
2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2678abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(animationend);
2688abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(animationiteration);
2698abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(animationstart);
2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(search);
2718abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(transitionend);
272e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(wheel);
2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(webkitanimationstart, webkitAnimationStart);
2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(webkitanimationiteration, webkitAnimationIteration);
2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(webkitanimationend, webkitAnimationEnd);
2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_MAPPED_ATTRIBUTE_EVENT_LISTENER(webkittransitionend, webkitTransitionEnd);
2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
279f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)        void captureEvents() { }
280f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)        void releaseEvents() { }
281f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)
2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void finishedLoading();
2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // HTML 5 key/value storage
285df95704c49daea886ddad70775bda23618d6274dBen Murdoch        Storage* sessionStorage(ExceptionState&) const;
286df95704c49daea886ddad70775bda23618d6274dBen Murdoch        Storage* localStorage(ExceptionState&) const;
2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Storage* optionalSessionStorage() const { return m_sessionStorage.get(); }
2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Storage* optionalLocalStorage() const { return m_localStorage.get(); }
2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
290e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        ApplicationCache* applicationCache() const;
291e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        ApplicationCache* optionalApplicationCache() const { return m_applicationCache.get(); }
2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // This is the interface orientation in degrees. Some examples are:
2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        //  0 is straight up; -90 is when the device is rotated 90 clockwise;
2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        //  90 is when rotated counter clockwise.
2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int orientation() const;
2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(orientationchange);
2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(touchstart);
3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(touchmove);
3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(touchend);
3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        DEFINE_ATTRIBUTE_EVENT_LISTENER(touchcancel);
3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
304d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Performance& performance() const;
3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        // FIXME: When this LocalDOMWindow is no longer the active LocalDOMWindow (i.e.,
3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // when its document is no longer the document that is displayed in its
3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // frame), we would like to zero out m_frame to avoid being confused
3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // by the document that is currently active in m_frame.
3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool isCurrentlyDisplayedInFrame() const;
3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void willDetachDocumentFromFrame();
31376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        LocalDOMWindow* anonymousIndexedGetter(uint32_t);
3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        bool isInsecureScriptAccess(LocalDOMWindow& callingWindow, const String& urlString);
316e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
31776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        PassOwnPtr<LifecycleNotifier<LocalDOMWindow> > createLifecycleNotifier();
318f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)
319f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        EventQueue* eventQueue() const;
320a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch        void enqueueWindowEvent(PassRefPtrWillBeRawPtr<Event>);
321a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch        void enqueueDocumentEvent(PassRefPtrWillBeRawPtr<Event>);
322f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        void enqueuePageshowEvent(PageshowEventPersistence);
323f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        void enqueueHashchangeEvent(const String& oldURL, const String& newURL);
324f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        void enqueuePopstateEvent(PassRefPtr<SerializedScriptValue>);
3256f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        void dispatchWindowLoadEvent();
326f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        void documentWasClosed();
327f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        void statePopped(PassRefPtr<SerializedScriptValue>);
32851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)
32976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        // FIXME: This shouldn't be public once LocalDOMWindow becomes ExecutionContext.
33051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)        void clearEventQueue();
33151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)
332f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)        void acceptLanguagesChanged();
333f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)
334d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        virtual void trace(Visitor*) OVERRIDE;
33507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
336e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    protected:
337f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        DOMWindowLifecycleNotifier& lifecycleNotifier();
338e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    private:
34076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        explicit LocalDOMWindow(LocalFrame&);
3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Page* page();
3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        virtual void frameDestroyed() OVERRIDE;
34509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        virtual void willDetachFrameHost() OVERRIDE;
3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
347f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        void clearDocument();
3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void resetDOMWindowProperties();
3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void willDestroyDocumentInFrame();
3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
351d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        // FIXME: Oilpan: the need for this internal method will fall
352d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        // away when EventTargets are no longer using refcounts and
353d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        // window properties are also on the heap. Inline the minimal
354d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        // do-not-broadcast handling then and remove the enum +
355d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        // removeAllEventListenersInternal().
356d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        enum BroadcastListenerRemoval {
357d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)            DoNotBroadcastListenerRemoval,
358d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)            DoBroadcastListenerRemoval
359d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        };
360d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
361d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        void removeAllEventListenersInternal(BroadcastListenerRemoval);
362d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
363d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        RefPtrWillBeMember<Document> m_document;
3645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool m_shouldPrintWhenFinishedLoading;
366f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#if ASSERT_ENABLED
367f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu        bool m_hasBeenReset;
368f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#endif
3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        HashSet<DOMWindowProperty*> m_properties;
3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Screen> m_screen;
37307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<History> m_history;
37407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<BarProp> m_locationbar;
37507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<BarProp> m_menubar;
37607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<BarProp> m_personalbar;
37707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<BarProp> m_scrollbars;
37807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<BarProp> m_statusbar;
37907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<BarProp> m_toolbar;
38007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Console> m_console;
38107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Navigator> m_navigator;
38207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Location> m_location;
38307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<StyleMedia> m_media;
3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_status;
3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String m_defaultStatus;
3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
38807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Storage> m_sessionStorage;
38907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Storage> m_localStorage;
39007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<ApplicationCache> m_applicationCache;
3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<Performance> m_performance;
393926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
39407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        mutable RefPtrWillBeMember<DOMWindowCSS> m_css;
395f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)
3965d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        RefPtrWillBeMember<DOMWindowEventQueue> m_eventQueue;
397f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        RefPtr<SerializedScriptValue> m_pendingStateObject;
398c4de9692585dd12fa75b760eebef04fa43fc1ae6Bo Liu
399c4de9692585dd12fa75b760eebef04fa43fc1ae6Bo Liu        HashSet<OwnPtr<PostMessageTimer> > m_postMessageTimers;
4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    inline String LocalDOMWindow::status() const
4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return m_status;
4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    }
4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
40776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    inline String LocalDOMWindow::defaultStatus() const
4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return m_defaultStatus;
410e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    }
4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // DOMWindow_h
415