JSDOMWindowShell.h 3.05 KB
Newer Older
weinig@apple.com's avatar
weinig@apple.com committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/*
 * Copyright (C) 2008 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1.  Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 * 2.  Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
 *     its contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

29 30
#ifndef JSDOMWindowShell_h
#define JSDOMWindowShell_h
weinig@apple.com's avatar
weinig@apple.com committed
31 32

#include "JSDOMWindow.h"
33
#include <runtime/JSProxy.h>
weinig@apple.com's avatar
weinig@apple.com committed
34 35 36

namespace WebCore {

37
    class DOMWindow;
weinig@apple.com's avatar
weinig@apple.com committed
38 39
    class Frame;

40 41
    class JSDOMWindowShell : public JSC::JSProxy {
        typedef JSC::JSProxy Base;
weinig@apple.com's avatar
weinig@apple.com committed
42
    public:
43
        static void destroy(JSCell*);
weinig@apple.com's avatar
weinig@apple.com committed
44

45
        JSDOMWindow* window() const { return JSC::jsCast<JSDOMWindow*>(target()); }
ggaren@apple.com's avatar
ggaren@apple.com committed
46
        void setWindow(JSC::VM&, JSDOMWindow*);
darin@apple.com's avatar
darin@apple.com committed
47
        void setWindow(PassRefPtr<DOMWindow>);
weinig@apple.com's avatar
weinig@apple.com committed
48

49
        DECLARE_INFO;
weinig@apple.com's avatar
weinig@apple.com committed
50

darin@apple.com's avatar
darin@apple.com committed
51 52
        DOMWindow* impl() const;

53
        static JSDOMWindowShell* create(JSC::VM& vm, PassRefPtr<DOMWindow> window, JSC::Structure* structure, DOMWrapperWorld& world)
54
        {
55 56
            JSDOMWindowShell* shell = new (NotNull, JSC::allocateCell<JSDOMWindowShell>(vm.heap)) JSDOMWindowShell(vm, structure, world);
            shell->finishCreation(vm, window);
57 58
            return shell; 
        }
weinig@apple.com's avatar
weinig@apple.com committed
59

ggaren@apple.com's avatar
ggaren@apple.com committed
60
        static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSValue prototype) 
darin@apple.com's avatar
darin@apple.com committed
61
        {
62
            return JSC::Structure::create(vm, 0, prototype, JSC::TypeInfo(JSC::ProxyType, StructureFlags), info());
darin@apple.com's avatar
darin@apple.com committed
63 64
        }

65
        DOMWrapperWorld& world() { return *m_world; }
66

67
    protected:
68
        JSDOMWindowShell(JSC::VM&, JSC::Structure*, DOMWrapperWorld&);
ggaren@apple.com's avatar
ggaren@apple.com committed
69
        void finishCreation(JSC::VM&, PassRefPtr<DOMWindow>);
70

71
        RefPtr<DOMWrapperWorld> m_world;
weinig@apple.com's avatar
weinig@apple.com committed
72 73
    };

ggaren@apple.com's avatar
ggaren@apple.com committed
74
    JSC::JSValue toJS(JSC::ExecState*, Frame*);
75
    JSDOMWindowShell* toJSDOMWindowShell(Frame*, DOMWrapperWorld&);
weinig@apple.com's avatar
weinig@apple.com committed
76 77 78

} // namespace WebCore

79
#endif // JSDOMWindowShell_h