Move URL from WebCore to WTF
[WebKit-https.git] / Source / WebKitLegacy / mac / DOM / DOMUtility.mm
1 /*
2  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2006 James G. Speth (speth@end.com)
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
25  */
26
27 #import "DOMAbstractViewInternal.h"
28 #import "DOMCSSRuleInternal.h"
29 #import "DOMCSSRuleListInternal.h"
30 #import "DOMCSSStyleDeclarationInternal.h"
31 #import "DOMCSSValueInternal.h"
32 #import "DOMCounterInternal.h"
33 #import "DOMEventInternal.h"
34 #import "DOMHTMLCollectionInternal.h"
35 #import "DOMImplementationInternal.h"
36 #import "DOMInternal.h"
37 #import "DOMMediaListInternal.h"
38 #import "DOMNamedNodeMapInternal.h"
39 #import "DOMNodeInternal.h"
40 #import "DOMNodeIteratorInternal.h"
41 #import "DOMNodeListInternal.h"
42 #import "DOMRGBColorInternal.h"
43 #import "DOMRangeInternal.h"
44 #import "DOMRectInternal.h"
45 #import "DOMStyleSheetInternal.h"
46 #import "DOMStyleSheetListInternal.h"
47 #import "DOMTreeWalkerInternal.h"
48 #import "DOMXPathExpressionInternal.h"
49 #import "DOMXPathResultInternal.h"
50 #import <WebCore/JSCSSRule.h>
51 #import <WebCore/JSCSSRuleList.h>
52 #import <WebCore/JSCSSStyleDeclaration.h>
53 #import <WebCore/JSDOMImplementation.h>
54 #import <WebCore/JSDeprecatedCSSOMCounter.h>
55 #import <WebCore/JSDeprecatedCSSOMRGBColor.h>
56 #import <WebCore/JSDeprecatedCSSOMRect.h>
57 #import <WebCore/JSDeprecatedCSSOMValue.h>
58 #import <WebCore/JSEvent.h>
59 #import <WebCore/JSHTMLCollection.h>
60 #import <WebCore/JSHTMLOptionsCollection.h>
61 #import <WebCore/JSMediaList.h>
62 #import <WebCore/JSNamedNodeMap.h>
63 #import <WebCore/JSNode.h>
64 #import <WebCore/JSNodeIterator.h>
65 #import <WebCore/JSNodeList.h>
66 #import <WebCore/JSRange.h>
67 #import <WebCore/JSStyleSheet.h>
68 #import <WebCore/JSStyleSheetList.h>
69 #import <WebCore/JSTreeWalker.h>
70 #import <WebCore/JSWindowProxy.h>
71 #import <WebCore/JSXPathExpression.h>
72 #import <WebCore/JSXPathResult.h>
73 #import <WebCore/WebScriptObjectPrivate.h>
74
75 static WebScriptObject *createDOMWrapper(JSC::JSObject& jsWrapper)
76 {
77     JSC::VM& vm = *jsWrapper.vm();
78     #define WRAP(className) \
79         if (auto* wrapped = WebCore::JS##className::toWrapped(vm, &jsWrapper)) \
80             return kit(wrapped);
81
82     WRAP(CSSRule)
83     WRAP(CSSRuleList)
84     WRAP(CSSStyleDeclaration)
85     WRAP(DeprecatedCSSOMValue)
86     WRAP(DeprecatedCSSOMCounter)
87     WRAP(DOMImplementation)
88     WRAP(Event)
89     WRAP(HTMLOptionsCollection)
90     WRAP(MediaList)
91     WRAP(NamedNodeMap)
92     WRAP(Node)
93     WRAP(NodeIterator)
94     WRAP(NodeList)
95     WRAP(DeprecatedCSSOMRGBColor)
96     WRAP(Range)
97     WRAP(DeprecatedCSSOMRect)
98     WRAP(StyleSheet)
99     WRAP(StyleSheetList)
100     WRAP(TreeWalker)
101     WRAP(WindowProxy)
102     WRAP(XPathExpression)
103     WRAP(XPathResult)
104
105     // This must be after HTMLOptionsCollection, because JSHTMLCollection is a base class of
106     // JSHTMLOptionsCollection, and HTMLCollection is *not* a base class of HTMLOptionsCollection.
107     WRAP(HTMLCollection)
108
109     #undef WRAP
110
111     return nil;
112 }
113
114 static void disconnectWindowWrapper(WebScriptObject *windowWrapper)
115 {
116     ASSERT([windowWrapper isKindOfClass:[DOMAbstractView class]]);
117     [(DOMAbstractView *)windowWrapper _disconnectFrame];
118 }
119
120 void initializeDOMWrapperHooks()
121 {
122     WebCore::initializeDOMWrapperHooks(createDOMWrapper, disconnectWindowWrapper);
123 }