+void FullscreenElementStack::enqueueChangeEvent(Document& document, RequestType requestType)
+{
+ RefPtrWillBeRawPtr<Event> event;
+ if (requestType == UnprefixedRequest) {
+ event = createEvent(EventTypeNames::fullscreenchange, document);
+ } else {
+ ASSERT(document.hasFullscreenElementStack());
+ FullscreenElementStack& fullscreen = from(document);
+ EventTarget* target = fullscreen.fullscreenElement();
+ if (!target)
+ target = fullscreen.webkitCurrentFullScreenElement();
+ if (!target)
+ target = &document;
+ event = createEvent(EventTypeNames::webkitfullscreenchange, *target);
+ }
+ m_eventQueue.append(event);
+ // NOTE: The timer is started in didEnterFullScreenForElement/didExitFullScreenForElement.
+}
+
+void FullscreenElementStack::enqueueErrorEvent(Element& element, RequestType requestType)
+{
+ RefPtrWillBeRawPtr<Event> event;
+ if (requestType == UnprefixedRequest)
+ event = createEvent(EventTypeNames::fullscreenerror, element.document());
+ else
+ event = createEvent(EventTypeNames::webkitfullscreenerror, element);
+ m_eventQueue.append(event);
+ m_eventQueueTimer.startOneShot(0, FROM_HERE);
+}
+
+void FullscreenElementStack::eventQueueTimerFired(Timer<FullscreenElementStack>*)