Index: content/renderer/gpu/queue_message_promise.cc |
diff --git a/content/renderer/gpu/queue_message_promise.cc b/content/renderer/gpu/queue_message_promise.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d2d1cb26ae8722dddfa1d90196e339da76295c3c |
--- /dev/null |
+++ b/content/renderer/gpu/queue_message_promise.cc |
@@ -0,0 +1,52 @@ |
+// Copyright 2014 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/gpu/queue_message_promise.h" |
+ |
+#include "content/renderer/gpu/frame_update_message_queue.h" |
+#include "ipc/ipc_message.h" |
+#include "ipc/ipc_sync_message_filter.h" |
+ |
+namespace content { |
+ |
+QueueMessagePromise::QueueMessagePromise( |
+ scoped_refptr<IPC::SyncMessageFilter> message_sender, |
+ scoped_refptr<content::FrameUpdateMessageQueue> message_queue, |
+ int source_frame_number) |
+ : message_sender_(message_sender), |
+ message_queue_(message_queue), |
+ source_frame_number_(source_frame_number) |
+#if DCHECK_IS_ON() |
+ , |
+ completed_(false) |
+#endif |
+{ |
+ DCHECK(message_sender_.get()); |
+ DCHECK(message_queue_.get()); |
+} |
+ |
+QueueMessagePromise::~QueueMessagePromise() { |
+ // The promise should have either been kept or broken before it's deleted. |
+#if DCHECK_IS_ON() |
+ DCHECK(completed_); |
+#endif |
+} |
+ |
+void QueueMessagePromise::DeliverMessages( |
+ ScopedVector<IPC::Message>* messages) { |
+ for (ScopedVector<IPC::Message>::iterator i = messages->begin(); |
+ i != messages->end(); |
+ ++i) { |
+ message_sender_->Send(*i); |
+ } |
+ messages->weak_clear(); |
+} |
+ |
+void QueueMessagePromise::PromiseCompleted() { |
+#if DCHECK_IS_ON() |
+ completed_ = true; |
+#endif |
+} |
+ |
+} // namespace content |