1/*
2 *  Copyright (C) 2009 Google, Inc. All rights reserved.
3 *
4 *  This library is free software; you can redistribute it and/or
5 *  modify it under the terms of the GNU Lesser General Public
6 *  License as published by the Free Software Foundation; either
7 *  version 2 of the License, or (at your option) any later version.
8 *
9 *  This library is distributed in the hope that it will be useful,
10 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 *  Lesser General Public License for more details.
13 *
14 *  You should have received a copy of the GNU Lesser General Public
15 *  License along with this library; if not, write to the Free Software
16 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18
19
20#ifndef DOMConstructorWithDocument_h
21#define DOMConstructorWithDocument_h
22
23#include "Document.h"
24#include "JSDOMBinding.h"
25
26namespace WebCore {
27
28// Constructors using this base class depend on being in a Document and
29// can never be used from a WorkerGlobalScope.
30class DOMConstructorWithDocument : public DOMConstructorObject {
31    typedef DOMConstructorObject Base;
32public:
33    Document* document() const
34    {
35        return toDocument(scriptExecutionContext());
36    }
37
38protected:
39    DOMConstructorWithDocument(JSC::Structure* structure, JSDOMGlobalObject* globalObject)
40        : DOMConstructorObject(structure, globalObject)
41    {
42    }
43
44    void finishCreation(JSDOMGlobalObject* globalObject)
45    {
46        Base::finishCreation(globalObject->vm());
47        ASSERT(globalObject->scriptExecutionContext()->isDocument());
48    }
49};
50
51} // namespace WebCore
52
53#endif // DOMConstructorWithDocument_h
54