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

Unified Diff: content/renderer/input/main_thread_event_queue.h

Issue 2813683002: Allow MainThreadEventQueue to call the RenderWidget directly. (Closed)
Patch Set: Fix style nits Created 3 years, 8 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
Index: content/renderer/input/main_thread_event_queue.h
diff --git a/content/renderer/input/main_thread_event_queue.h b/content/renderer/input/main_thread_event_queue.h
index 42edd0cfeaf5ee946f3baaaa70e26e9d685997e2..5a8e65253fffbd3dbb8dbc3397fca6ace5a33aa8 100644
--- a/content/renderer/input/main_thread_event_queue.h
+++ b/content/renderer/input/main_thread_event_queue.h
@@ -7,6 +7,7 @@
#include <deque>
#include "base/feature_list.h"
+#include "base/memory/weak_ptr.h"
#include "content/common/content_export.h"
#include "content/common/input/input_event_ack_state.h"
#include "content/common/input/input_event_dispatch_type.h"
@@ -20,22 +21,22 @@
namespace content {
+// All interaction with the MainThreadEventQueueClient will occur
+// on the main thread.
class CONTENT_EXPORT MainThreadEventQueueClient {
public:
// Handle an |event| that was previously queued (possibly
- // coalesced with another event) to the |routing_id|'s
- // channel. Implementors must implement this callback.
- virtual void HandleEventOnMainThread(
- int routing_id,
- const blink::WebCoalescedInputEvent* event,
- const ui::LatencyInfo& latency,
+ // coalesced with another event). Implementors must implement
+ // this callback.
+ virtual InputEventAckState HandleInputEvent(
+ const blink::WebCoalescedInputEvent& event,
+ const ui::LatencyInfo& latency_info,
InputEventDispatchType dispatch_type) = 0;
- virtual void SendInputEventAck(int routing_id,
- blink::WebInputEvent::Type type,
+ virtual void SendInputEventAck(blink::WebInputEvent::Type type,
InputEventAckState ack_result,
uint32_t touch_event_id) = 0;
- virtual void NeedsMainFrame(int routing_id) = 0;
+ virtual void SetNeedsMainFrame() = 0;
};
// MainThreadEventQueue implements a queue for events that need to be
@@ -78,7 +79,6 @@ class CONTENT_EXPORT MainThreadEventQueue
: public base::RefCountedThreadSafe<MainThreadEventQueue> {
public:
MainThreadEventQueue(
- int routing_id,
MainThreadEventQueueClient* client,
const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner,
blink::scheduler::RendererScheduler* renderer_scheduler);
@@ -92,20 +92,24 @@ class CONTENT_EXPORT MainThreadEventQueue
void DispatchRafAlignedInput(base::TimeTicks frame_time);
void QueueClosure(const base::Closure& closure);
- // Call once the main thread has handled an outstanding |type| event
- // in flight.
- void EventHandled(blink::WebInputEvent::Type type,
- blink::WebInputEventResult result,
- InputEventAckState ack_result);
+ void ClearClient();
- private:
+ protected:
friend class base::RefCountedThreadSafe<MainThreadEventQueue>;
- ~MainThreadEventQueue();
+ virtual ~MainThreadEventQueue();
void QueueEvent(std::unique_ptr<MainThreadEventQueueTask> event);
void PostTaskToMainThread();
void DispatchEvents();
void DispatchInFlightEvent();
void PossiblyScheduleMainFrame();
+ void SetNeedsMainFrame();
+ InputEventAckState HandleEventOnMainThread(
+ const blink::WebCoalescedInputEvent& event,
+ const ui::LatencyInfo& latency,
+ InputEventDispatchType dispatch_type);
+ void SendInputEventAck(const blink::WebInputEvent& event,
+ InputEventAckState ack_result,
+ uint32_t touch_event_id);
void SendEventToMainThread(const blink::WebInputEvent* event,
const ui::LatencyInfo& latency,
@@ -115,9 +119,9 @@ class CONTENT_EXPORT MainThreadEventQueue
bool IsRafAlignedEvent(
const std::unique_ptr<MainThreadEventQueueTask>& item) const;
+ friend class QueuedWebInputEvent;
friend class MainThreadEventQueueTest;
friend class MainThreadEventQueueInitializationTest;
- int routing_id_;
MainThreadEventQueueClient* client_;
std::unique_ptr<MainThreadEventQueueTask> in_flight_event_;
bool last_touch_start_forced_nonblocking_due_to_fling_;
« no previous file with comments | « content/renderer/input/input_handler_manager_client.h ('k') | content/renderer/input/main_thread_event_queue.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698