OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 22 matching lines...) Expand all Loading... |
33 | 33 |
34 #include "bindings/core/v8/ScriptWrappable.h" | 34 #include "bindings/core/v8/ScriptWrappable.h" |
35 #include "core/dom/Document.h" | 35 #include "core/dom/Document.h" |
36 #include "core/dom/ExecutionContext.h" | 36 #include "core/dom/ExecutionContext.h" |
37 #include "core/dom/ExecutionContextTask.h" | 37 #include "core/dom/ExecutionContextTask.h" |
38 #include "core/dom/ScopedWindowFocusAllowedIndicator.h" | 38 #include "core/dom/ScopedWindowFocusAllowedIndicator.h" |
39 #include "core/events/Event.h" | 39 #include "core/events/Event.h" |
40 #include "core/frame/UseCounter.h" | 40 #include "core/frame/UseCounter.h" |
41 #include "modules/notifications/NotificationOptions.h" | 41 #include "modules/notifications/NotificationOptions.h" |
42 #include "modules/notifications/NotificationPermissionClient.h" | 42 #include "modules/notifications/NotificationPermissionClient.h" |
| 43 #include "platform/RuntimeEnabledFeatures.h" |
43 #include "platform/UserGestureIndicator.h" | 44 #include "platform/UserGestureIndicator.h" |
44 #include "public/platform/Platform.h" | 45 #include "public/platform/Platform.h" |
45 #include "public/platform/WebSerializedOrigin.h" | 46 #include "public/platform/WebSerializedOrigin.h" |
46 #include "public/platform/modules/notifications/WebNotificationData.h" | 47 #include "public/platform/modules/notifications/WebNotificationData.h" |
47 #include "public/platform/modules/notifications/WebNotificationManager.h" | 48 #include "public/platform/modules/notifications/WebNotificationManager.h" |
48 | 49 |
49 namespace blink { | 50 namespace blink { |
50 namespace { | 51 namespace { |
51 | 52 |
52 WebNotificationManager* notificationManager() | 53 WebNotificationManager* notificationManager() |
53 { | 54 { |
54 return Platform::current()->notificationManager(); | 55 return Platform::current()->notificationManager(); |
55 } | 56 } |
56 | 57 |
57 } // namespace | 58 } // namespace |
58 | 59 |
59 Notification* Notification::create(ExecutionContext* context, const String& titl
e, const NotificationOptions& options) | 60 Notification* Notification::create(ExecutionContext* context, const String& titl
e, const NotificationOptions& options, ExceptionState& exceptionState) |
60 { | 61 { |
| 62 // The Web Notification constructor may be disabled through a runtime featur
e. The |
| 63 // behavior of the constructor is changing, but not completely agreed upon y
et. |
| 64 if (!RuntimeEnabledFeatures::notificationConstructorEnabled()) { |
| 65 exceptionState.throwTypeError("Illegal constructor. Use ServiceWorkerReg
istration.showNotification() instead."); |
| 66 return nullptr; |
| 67 } |
| 68 |
61 Notification* notification = new Notification(title, context); | 69 Notification* notification = new Notification(title, context); |
62 | 70 |
63 notification->setBody(options.body()); | 71 notification->setBody(options.body()); |
64 notification->setTag(options.tag()); | 72 notification->setTag(options.tag()); |
65 notification->setLang(options.lang()); | 73 notification->setLang(options.lang()); |
66 notification->setDir(options.dir()); | 74 notification->setDir(options.dir()); |
67 if (options.hasIcon()) { | 75 if (options.hasIcon()) { |
68 KURL iconUrl = options.icon().isEmpty() ? KURL() : context->completeURL(
options.icon()); | 76 KURL iconUrl = options.icon().isEmpty() ? KURL() : context->completeURL(
options.icon()); |
69 if (!iconUrl.isEmpty() && iconUrl.isValid()) | 77 if (!iconUrl.isEmpty() && iconUrl.isValid()) |
70 notification->setIconUrl(iconUrl); | 78 notification->setIconUrl(iconUrl); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 return m_state == NotificationStateShowing || m_asyncRunner.isActive(); | 259 return m_state == NotificationStateShowing || m_asyncRunner.isActive(); |
252 } | 260 } |
253 | 261 |
254 void Notification::trace(Visitor* visitor) | 262 void Notification::trace(Visitor* visitor) |
255 { | 263 { |
256 RefCountedGarbageCollectedEventTargetWithInlineData<Notification>::trace(vis
itor); | 264 RefCountedGarbageCollectedEventTargetWithInlineData<Notification>::trace(vis
itor); |
257 ActiveDOMObject::trace(visitor); | 265 ActiveDOMObject::trace(visitor); |
258 } | 266 } |
259 | 267 |
260 } // namespace blink | 268 } // namespace blink |
OLD | NEW |