[Win] Replace MIDL [in/out] comments with equivalent SAL
[WebKit-https.git] / Source / WebKit / win / DOMCSSClasses.cpp
1 /*
2  * Copyright (C) 2006-2007, 2015 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 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 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 "WebKitDLL.h"
27 #include "DOMCSSClasses.h"
28
29 #include <WebCore/BString.h>
30 #include <wtf/text/WTFString.h>
31
32 // DOMCSSStyleDeclaration - DOMCSSStyleDeclaration ----------------------------
33
34 DOMCSSStyleDeclaration::DOMCSSStyleDeclaration(WebCore::CSSStyleDeclaration* s)
35 {
36     if (s)
37         s->ref();
38
39     m_style = s;
40 }
41
42 DOMCSSStyleDeclaration::~DOMCSSStyleDeclaration()
43 {
44     if (m_style)
45         m_style->deref();
46 }
47
48 IDOMCSSStyleDeclaration* DOMCSSStyleDeclaration::createInstance(WebCore::CSSStyleDeclaration* s)
49 {
50     if (!s)
51         return nullptr;
52
53     HRESULT hr;
54     IDOMCSSStyleDeclaration* domStyle = 0;
55
56     DOMCSSStyleDeclaration* newStyle = new DOMCSSStyleDeclaration(s);
57     hr = newStyle->QueryInterface(IID_IDOMCSSStyleDeclaration, (void**)&domStyle);
58
59     if (FAILED(hr))
60         return nullptr;
61
62     return domStyle;
63 }
64
65 // DOMCSSStyleDeclaration - IUnknown ------------------------------------------
66
67 HRESULT DOMCSSStyleDeclaration::QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject)
68 {
69     if (!ppvObject)
70         return E_POINTER;
71     *ppvObject = nullptr;
72     if (IsEqualGUID(riid, IID_IDOMCSSStyleDeclaration))
73         *ppvObject = static_cast<IDOMCSSStyleDeclaration*>(this);
74     else
75         return DOMObject::QueryInterface(riid, ppvObject);
76
77     AddRef();
78     return S_OK;
79 }
80
81 // DOMCSSStyleDeclaration - IDOMCSSStyleDeclaration ---------------------------
82
83 HRESULT DOMCSSStyleDeclaration::cssText(__deref_opt_out BSTR* result)
84 {
85     ASSERT_NOT_REACHED();
86     if (!result)
87         return E_POINTER;
88     *result = nullptr;
89     return E_NOTIMPL;
90 }
91
92 HRESULT DOMCSSStyleDeclaration::setCssText(_In_ BSTR cssText)
93 {
94     WTF::String cssTextString(cssText);
95     // FIXME: <rdar://5148045> return DOM exception info
96     WebCore::ExceptionCode ec;
97     m_style->setCssText(cssTextString, ec);
98     return S_OK;
99 }
100
101 HRESULT DOMCSSStyleDeclaration::getPropertyValue(_In_ BSTR propertyName, __deref_opt_out BSTR* result)
102 {
103     if (!result)
104         return E_POINTER;
105     *result = nullptr;
106
107     WTF::String propertyNameString(propertyName);
108     WTF::String value = m_style->getPropertyValue(propertyNameString);
109     *result = WebCore::BString(value).release();
110     if (value.length() && !*result)
111         return E_OUTOFMEMORY;
112     return S_OK;
113 }
114
115 HRESULT DOMCSSStyleDeclaration::getPropertyCSSValue(_In_ BSTR /*propertyName*/, _COM_Outptr_opt_ IDOMCSSValue** result)
116 {
117     ASSERT_NOT_REACHED();
118     if (!result)
119         return E_POINTER;
120     *result = nullptr;
121     return E_NOTIMPL;
122 }
123
124 HRESULT DOMCSSStyleDeclaration::removeProperty(_In_ BSTR /*propertyName*/, __deref_opt_out BSTR* result)
125 {
126     ASSERT_NOT_REACHED();
127     if (!result)
128         return E_POINTER;
129     *result = nullptr;
130     return E_NOTIMPL;
131 }
132
133 HRESULT DOMCSSStyleDeclaration::getPropertyPriority(_In_ BSTR /*propertyName*/, __deref_opt_out BSTR* result)
134 {
135     ASSERT_NOT_REACHED();
136     if (!result)
137         return E_POINTER;
138     *result = nullptr;
139     return E_NOTIMPL;
140 }
141
142 HRESULT DOMCSSStyleDeclaration::setProperty(_In_ BSTR propertyName, _In_ BSTR value, _In_ BSTR priority)
143 {
144     WTF::String propertyNameString(propertyName);
145     WTF::String valueString(value);
146     WTF::String priorityString(priority);
147     // FIXME: <rdar://5148045> return DOM exception info
148     WebCore::ExceptionCode code;
149     m_style->setProperty(propertyNameString, valueString, priorityString, code);
150     return S_OK;
151 }
152
153 HRESULT DOMCSSStyleDeclaration::length(_Out_ UINT* result)
154 {
155     ASSERT_NOT_REACHED();
156     if (!result)
157         return E_POINTER;
158     *result = 0;
159     return E_NOTIMPL;
160 }
161
162 HRESULT DOMCSSStyleDeclaration::item(UINT /*index*/, __deref_opt_out BSTR* result)
163 {
164     ASSERT_NOT_REACHED();
165     if (!result)
166         return E_POINTER;
167     *result = nullptr;
168     return E_NOTIMPL;
169 }
170
171 HRESULT DOMCSSStyleDeclaration::parentRule(_COM_Outptr_opt_ IDOMCSSRule** result)
172 {
173     ASSERT_NOT_REACHED();
174     if (!result)
175         return E_POINTER;
176     *result = nullptr;
177     return E_NOTIMPL;
178 }