| Index: content/renderer/input/main_thread_event_queue_task_list.cc
 | 
| diff --git a/content/renderer/input/main_thread_event_queue_task_list.cc b/content/renderer/input/main_thread_event_queue_task_list.cc
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..d45a944de5f61c26ec14af6e92886408f29a3b72
 | 
| --- /dev/null
 | 
| +++ b/content/renderer/input/main_thread_event_queue_task_list.cc
 | 
| @@ -0,0 +1,39 @@
 | 
| +// Copyright 2017 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#include "content/renderer/input/main_thread_event_queue_task_list.h"
 | 
| +
 | 
| +namespace content {
 | 
| +
 | 
| +MainThreadEventQueueTaskList::MainThreadEventQueueTaskList() {}
 | 
| +
 | 
| +MainThreadEventQueueTaskList::~MainThreadEventQueueTaskList() {}
 | 
| +
 | 
| +void MainThreadEventQueueTaskList::Queue(
 | 
| +    std::unique_ptr<MainThreadEventQueueTask> event) {
 | 
| +  for (auto last_event_iter = queue_.rbegin(); last_event_iter != queue_.rend();
 | 
| +       ++last_event_iter) {
 | 
| +    switch ((*last_event_iter)->CoalesceWith(*event.get())) {
 | 
| +      case MainThreadEventQueueTask::CoalesceResult::Coalesced:
 | 
| +        return;
 | 
| +      case MainThreadEventQueueTask::CoalesceResult::CannotCoalesce:
 | 
| +        break;
 | 
| +      case MainThreadEventQueueTask::CoalesceResult::KeepSearching:
 | 
| +        continue;
 | 
| +    }
 | 
| +    break;
 | 
| +  }
 | 
| +  queue_.emplace_back(std::move(event));
 | 
| +}
 | 
| +
 | 
| +std::unique_ptr<MainThreadEventQueueTask> MainThreadEventQueueTaskList::Pop() {
 | 
| +  std::unique_ptr<MainThreadEventQueueTask> result;
 | 
| +  if (!queue_.empty()) {
 | 
| +    result.reset(queue_.front().release());
 | 
| +    queue_.pop_front();
 | 
| +  }
 | 
| +  return result;
 | 
| +}
 | 
| +
 | 
| +}  // namespace
 | 
| 
 |