|
1 /* |
|
2 * Copyright (C) 2010 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. AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
|
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
|
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
|
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
|
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
23 */ |
|
24 |
|
25 #include "config.h" |
|
26 #include "WebUserContentURLPattern.h" |
|
27 |
|
28 #include "MarshallingHelpers.h" |
|
29 #include "WebKitDLL.h" |
|
30 |
|
31 #include <WebCore/BString.h> |
|
32 #include <WebCore/KURL.h> |
|
33 |
|
34 using namespace WebCore; |
|
35 |
|
36 inline WebUserContentURLPattern::WebUserContentURLPattern() |
|
37 : m_refCount(0) |
|
38 { |
|
39 ++gClassCount; |
|
40 gClassNameCount.add("WebUserContentURLPattern"); |
|
41 } |
|
42 |
|
43 WebUserContentURLPattern::~WebUserContentURLPattern() |
|
44 { |
|
45 --gClassCount; |
|
46 gClassNameCount.remove("WebUserContentURLPattern"); |
|
47 } |
|
48 |
|
49 COMPtr<WebUserContentURLPattern> WebUserContentURLPattern::createInstance() |
|
50 { |
|
51 return new WebUserContentURLPattern; |
|
52 } |
|
53 |
|
54 ULONG WebUserContentURLPattern::AddRef() |
|
55 { |
|
56 return ++m_refCount; |
|
57 } |
|
58 |
|
59 ULONG WebUserContentURLPattern::Release() |
|
60 { |
|
61 ULONG newRefCount = --m_refCount; |
|
62 if (!newRefCount) |
|
63 delete this; |
|
64 return newRefCount; |
|
65 } |
|
66 |
|
67 HRESULT WebUserContentURLPattern::QueryInterface(REFIID riid, void** ppvObject) |
|
68 { |
|
69 if (!ppvObject) |
|
70 return E_POINTER; |
|
71 *ppvObject = 0; |
|
72 |
|
73 if (IsEqualIID(riid, __uuidof(WebUserContentURLPattern))) |
|
74 *ppvObject = this; |
|
75 else if (IsEqualIID(riid, __uuidof(IWebUserContentURLPattern))) |
|
76 *ppvObject = static_cast<IWebUserContentURLPattern*>(this); |
|
77 else if (IsEqualIID(riid, IID_IUnknown)) |
|
78 *ppvObject = static_cast<IUnknown*>(this); |
|
79 else |
|
80 return E_NOINTERFACE; |
|
81 |
|
82 AddRef(); |
|
83 return S_OK; |
|
84 } |
|
85 |
|
86 HRESULT WebUserContentURLPattern::parse(BSTR patternString) |
|
87 { |
|
88 m_pattern = UserContentURLPattern(String(patternString, SysStringLen(patternString))); |
|
89 return S_OK; |
|
90 } |
|
91 |
|
92 HRESULT WebUserContentURLPattern::isValid(BOOL* isValid) |
|
93 { |
|
94 if (!isValid) |
|
95 return E_POINTER; |
|
96 *isValid = m_pattern.isValid(); |
|
97 return S_OK; |
|
98 } |
|
99 |
|
100 HRESULT WebUserContentURLPattern::scheme(BSTR* scheme) |
|
101 { |
|
102 if (!scheme) |
|
103 return E_POINTER; |
|
104 *scheme = BString(m_pattern.scheme()).release(); |
|
105 return S_OK; |
|
106 } |
|
107 |
|
108 HRESULT WebUserContentURLPattern::host(BSTR* host) |
|
109 { |
|
110 if (!host) |
|
111 return E_POINTER; |
|
112 *host = BString(m_pattern.host()).release(); |
|
113 return S_OK; |
|
114 } |
|
115 |
|
116 HRESULT WebUserContentURLPattern::matchesSubdomains(BOOL* matches) |
|
117 { |
|
118 if (!matches) |
|
119 return E_POINTER; |
|
120 *matches = m_pattern.matchSubdomains(); |
|
121 return S_OK; |
|
122 } |
|
123 |
|
124 HRESULT WebUserContentURLPattern::matchesURL(BSTR url, BOOL* matches) |
|
125 { |
|
126 if (!matches) |
|
127 return E_POINTER; |
|
128 *matches = m_pattern.matches(MarshallingHelpers::BSTRToKURL(url)); |
|
129 return S_OK; |
|
130 } |