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

Unified Diff: third_party/WebKit/Source/core/events/EventSender.h

Issue 2863763003: Remove EventSender from ImageLoader (Closed)
Patch Set: Rebase Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/events/BUILD.gn ('k') | third_party/WebKit/Source/core/loader/ImageLoader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/events/EventSender.h
diff --git a/third_party/WebKit/Source/core/events/EventSender.h b/third_party/WebKit/Source/core/events/EventSender.h
deleted file mode 100644
index 74ce9fb9c37104422bbbf5ad8890ee60daa25f12..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/events/EventSender.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EventSender_h
-#define EventSender_h
-
-#include "platform/Timer.h"
-#include "platform/heap/Handle.h"
-#include "platform/wtf/Vector.h"
-#include "platform/wtf/text/AtomicString.h"
-
-namespace blink {
-
-template <typename T>
-class EventSender final : public GarbageCollectedFinalized<EventSender<T>> {
- WTF_MAKE_NONCOPYABLE(EventSender);
-
- public:
- static EventSender* Create(const AtomicString& event_type) {
- return new EventSender(event_type);
- }
-
- const AtomicString& EventType() const { return event_type_; }
- void DispatchEventSoon(T*);
- void CancelEvent(T*);
- void DispatchPendingEvents();
-
-#if DCHECK_IS_ON()
- bool HasPendingEvents(T* sender) const {
- return dispatch_soon_list_.Find(sender) != kNotFound ||
- dispatching_list_.Find(sender) != kNotFound;
- }
-#endif
-
- DEFINE_INLINE_TRACE() {
- visitor->Trace(dispatch_soon_list_);
- visitor->Trace(dispatching_list_);
- }
-
- private:
- explicit EventSender(const AtomicString& event_type);
-
- void TimerFired(TimerBase*) { DispatchPendingEvents(); }
-
- AtomicString event_type_;
- Timer<EventSender<T>> timer_;
- HeapVector<Member<T>> dispatch_soon_list_;
- HeapVector<Member<T>> dispatching_list_;
-};
-
-template <typename T>
-EventSender<T>::EventSender(const AtomicString& event_type)
- : event_type_(event_type), timer_(this, &EventSender::TimerFired) {}
-
-template <typename T>
-void EventSender<T>::DispatchEventSoon(T* sender) {
- dispatch_soon_list_.push_back(sender);
- if (!timer_.IsActive())
- timer_.StartOneShot(0, BLINK_FROM_HERE);
-}
-
-template <typename T>
-void EventSender<T>::CancelEvent(T* sender) {
- // Remove instances of this sender from both lists.
- // Use loops because we allow multiple instances to get into the lists.
- for (auto& sender_in_list : dispatch_soon_list_) {
- if (sender_in_list == sender)
- sender_in_list = nullptr;
- }
- for (auto& sender_in_list : dispatching_list_) {
- if (sender_in_list == sender)
- sender_in_list = nullptr;
- }
-}
-
-template <typename T>
-void EventSender<T>::DispatchPendingEvents() {
- // Need to avoid re-entering this function; if new dispatches are
- // scheduled before the parent finishes processing the list, they
- // will set a timer and eventually be processed.
- if (!dispatching_list_.IsEmpty())
- return;
-
- timer_.Stop();
-
- dispatching_list_.swap(dispatch_soon_list_);
- for (auto& sender_in_list : dispatching_list_) {
- if (T* sender = sender_in_list) {
- sender_in_list = nullptr;
- sender->DispatchPendingEvent(this);
- }
- }
- dispatching_list_.clear();
-}
-
-} // namespace blink
-
-#endif // EventSender_h
« no previous file with comments | « third_party/WebKit/Source/core/events/BUILD.gn ('k') | third_party/WebKit/Source/core/loader/ImageLoader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698