1/*
2 * Copyright (C) 2007, 2008 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#include "config.h"
27#include "JSCSSRule.h"
28
29#include "CSSCharsetRule.h"
30#include "CSSFontFaceRule.h"
31#include "CSSImportRule.h"
32#include "CSSMediaRule.h"
33#include "CSSPageRule.h"
34#include "CSSStyleRule.h"
35#include "CSSVariablesRule.h"
36#include "JSCSSCharsetRule.h"
37#include "JSCSSFontFaceRule.h"
38#include "JSCSSImportRule.h"
39#include "JSCSSMediaRule.h"
40#include "JSCSSPageRule.h"
41#include "JSCSSStyleRule.h"
42#include "JSCSSVariablesRule.h"
43#include "JSWebKitCSSKeyframeRule.h"
44#include "JSWebKitCSSKeyframesRule.h"
45#include "WebKitCSSKeyframeRule.h"
46#include "WebKitCSSKeyframesRule.h"
47
48using namespace JSC;
49
50namespace WebCore {
51
52JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, CSSRule* rule)
53{
54    if (!rule)
55        return jsNull();
56
57    DOMObject* wrapper = getCachedDOMObjectWrapper(exec, rule);
58    if (wrapper)
59        return wrapper;
60
61    switch (rule->type()) {
62        case CSSRule::STYLE_RULE:
63            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSStyleRule, rule);
64            break;
65        case CSSRule::MEDIA_RULE:
66            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSMediaRule, rule);
67            break;
68        case CSSRule::FONT_FACE_RULE:
69            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSFontFaceRule, rule);
70            break;
71        case CSSRule::PAGE_RULE:
72            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSPageRule, rule);
73            break;
74        case CSSRule::IMPORT_RULE:
75            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSImportRule, rule);
76            break;
77        case CSSRule::CHARSET_RULE:
78            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSCharsetRule, rule);
79            break;
80        case CSSRule::VARIABLES_RULE:
81            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSVariablesRule, rule);
82            break;
83        case CSSRule::WEBKIT_KEYFRAME_RULE:
84            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitCSSKeyframeRule, rule);
85            break;
86        case CSSRule::WEBKIT_KEYFRAMES_RULE:
87            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitCSSKeyframesRule, rule);
88            break;
89        default:
90            wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSRule, rule);
91    }
92
93    return wrapper;
94}
95
96} // namespace WebCore
97