Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Side by Side Diff: Source/WebKit/chromium/src/WebNotification.cpp

Issue 7148005: Merge 88738 - [Chromium] WebNotification should check if ScriptExecutionContext is gone (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/782/
Patch Set: Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebKit/chromium/public/WebNotification.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 return m_private->replaceId(); 109 return m_private->replaceId();
110 } 110 }
111 111
112 void WebNotification::detachPresenter() 112 void WebNotification::detachPresenter()
113 { 113 {
114 m_private->detachPresenter(); 114 m_private->detachPresenter();
115 } 115 }
116 116
117 void WebNotification::dispatchDisplayEvent() 117 void WebNotification::dispatchDisplayEvent()
118 { 118 {
119 RefPtr<Event> event = Event::create("display", false, true); 119 dispatchEvent("display");
120 m_private->dispatchEvent(event.release());
121 } 120 }
122 121
123 void WebNotification::dispatchErrorEvent(const WebKit::WebString& /* errorMessag e */) 122 void WebNotification::dispatchErrorEvent(const WebKit::WebString& /* errorMessag e */)
124 { 123 {
125 // FIXME: errorMessage not supported by WebCore yet 124 // FIXME: errorMessage not supported by WebCore yet
126 RefPtr<Event> event = Event::create(eventNames().errorEvent, false, true); 125 dispatchEvent(eventNames().errorEvent);
127 m_private->dispatchEvent(event.release());
128 } 126 }
129 127
130 void WebNotification::dispatchCloseEvent(bool /* byUser */) 128 void WebNotification::dispatchCloseEvent(bool /* byUser */)
131 { 129 {
132 // FIXME: byUser flag not supported by WebCore yet 130 // FIXME: byUser flag not supported by WebCore yet
133 RefPtr<Event> event = Event::create(eventNames().closeEvent, false, true); 131 dispatchEvent(eventNames().closeEvent);
134 m_private->dispatchEvent(event.release());
135 } 132 }
136 133
137 void WebNotification::dispatchClickEvent() 134 void WebNotification::dispatchClickEvent()
138 { 135 {
139 // Make sure clicks on notifications are treated as user gestures. 136 // Make sure clicks on notifications are treated as user gestures.
140 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture); 137 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
141 RefPtr<Event> event = Event::create(eventNames().clickEvent, false, true); 138 dispatchEvent(eventNames().clickEvent);
139 }
140
141 void WebNotification::dispatchEvent(const WTF::AtomicString& type)
142 {
143 // Do not dispatch if the context is gone.
144 if (!m_private->scriptExecutionContext())
145 return;
146
147 RefPtr<Event> event = Event::create(type, false, true);
142 m_private->dispatchEvent(event.release()); 148 m_private->dispatchEvent(event.release());
143 } 149 }
144 150
145 WebNotification::WebNotification(const WTF::PassRefPtr<Notification>& notificati on) 151 WebNotification::WebNotification(const WTF::PassRefPtr<Notification>& notificati on)
146 : m_private(static_cast<WebNotificationPrivate*>(notification.releaseRef())) 152 : m_private(static_cast<WebNotificationPrivate*>(notification.releaseRef()))
147 { 153 {
148 } 154 }
149 155
150 WebNotification& WebNotification::operator=(const WTF::PassRefPtr<Notification>& notification) 156 WebNotification& WebNotification::operator=(const WTF::PassRefPtr<Notification>& notification)
151 { 157 {
(...skipping 10 matching lines...) Expand all
162 { 168 {
163 // p is already ref'd for us by the caller 169 // p is already ref'd for us by the caller
164 if (m_private) 170 if (m_private)
165 m_private->deref(); 171 m_private->deref();
166 m_private = p; 172 m_private = p;
167 } 173 }
168 174
169 } // namespace WebKit 175 } // namespace WebKit
170 176
171 #endif // ENABLE(NOTIFICATIONS) 177 #endif // ENABLE(NOTIFICATIONS)
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/public/WebNotification.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698