Remove support for legacy Notifications
[WebKit-https.git] / Source / WebKit / mac / WebView / WebNotification.mm
1 /*
2  * Copyright (C) 2012 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  *
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  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #import "WebNotification.h"
30
31 #import "WebNotificationInternal.h"
32
33 #if ENABLE(NOTIFICATIONS)
34 #import "WebSecurityOriginInternal.h"
35 #import <WebCore/Notification.h>
36 #import <WebCore/ScriptExecutionContext.h>
37 #import <wtf/RefPtr.h>
38
39 using namespace WebCore;
40 #endif
41
42 @interface WebNotificationPrivate : NSObject
43 {
44 @public
45 #if ENABLE(NOTIFICATIONS)
46     RefPtr<Notification> _internal;
47     uint64_t _notificationID;
48 #endif
49 }
50 @end
51
52 @implementation WebNotificationPrivate
53 @end
54
55 #if ENABLE(NOTIFICATIONS)
56 @implementation WebNotification (WebNotificationInternal)
57
58 Notification* core(WebNotification *notification)
59 {
60     if (!notification->_private)
61         return 0;
62     return notification->_private->_internal.get();
63 }
64
65 - (id)initWithCoreNotification:(Notification*)coreNotification notificationID:(uint64_t)notificationID
66 {
67     if (!(self = [super init]))
68         return nil;
69     _private = [[WebNotificationPrivate alloc] init];
70     _private->_internal = coreNotification;
71     _private->_notificationID = notificationID;
72     return self;
73 }
74 @end
75 #endif
76
77 @implementation WebNotification
78 - (id)init
79 {
80     return nil;
81 }
82
83 - (void)dealloc
84 {
85     [_private release];
86     [super dealloc];
87 }
88
89 - (NSString *)title
90 {
91 #if ENABLE(NOTIFICATIONS)
92     return core(self)->title();
93 #else
94     return nil;
95 #endif
96 }
97
98 - (NSString *)body
99 {
100 #if ENABLE(NOTIFICATIONS)
101     return core(self)->body();
102 #else
103     return nil;
104 #endif
105 }
106
107 - (NSString *)tag
108 {
109 #if ENABLE(NOTIFICATIONS)
110     return core(self)->tag();
111 #else
112     return nil;
113 #endif
114 }
115
116 - (NSString *)iconURL
117 {
118 #if ENABLE(NOTIFICATIONS)
119     return core(self)->iconURL();
120 #else
121     return nil;
122 #endif
123 }
124
125 - (NSString *)lang
126 {
127 #if ENABLE(NOTIFICATIONS)
128     return core(self)->lang();
129 #else
130     return nil;
131 #endif
132 }
133
134 - (NSString *)dir
135 {
136 #if ENABLE(NOTIFICATIONS)
137     return core(self)->dir();
138 #else
139     return nil;
140 #endif
141 }
142
143 - (WebSecurityOrigin *)origin
144 {
145 #if ENABLE(NOTIFICATIONS)
146     return [[[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:core(self)->scriptExecutionContext()->securityOrigin()] autorelease];
147 #else
148     return nil;
149 #endif
150 }
151
152 - (uint64_t)notificationID
153 {
154 #if ENABLE(NOTIFICATIONS)
155     return _private->_notificationID;
156 #else
157     return 0;
158 #endif
159 }
160
161 - (void)dispatchShowEvent
162 {
163 #if ENABLE(NOTIFICATIONS)
164     core(self)->dispatchShowEvent();
165 #endif
166 }
167
168 - (void)dispatchCloseEvent
169 {
170 #if ENABLE(NOTIFICATIONS)
171     core(self)->dispatchCloseEvent();
172 #endif
173 }
174
175 - (void)dispatchClickEvent
176 {
177 #if ENABLE(NOTIFICATIONS)
178     core(self)->dispatchClickEvent();
179 #endif
180 }
181
182 - (void)dispatchErrorEvent
183 {
184 #if ENABLE(NOTIFICATIONS)
185     core(self)->dispatchErrorEvent();
186 #endif
187 }
188
189 @end
190