1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_QUEUE_MESSAGE_SWAP_PROMISE_H_ 6 #define CONTENT_RENDERER_QUEUE_MESSAGE_SWAP_PROMISE_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "cc/base/swap_promise.h" 11 12 namespace IPC { 13 class SyncMessageFilter; 14 } 15 16 namespace content { 17 18 class FrameSwapMessageQueue; 19 20 class QueueMessageSwapPromise : public cc::SwapPromise { 21 public: 22 QueueMessageSwapPromise(scoped_refptr<IPC::SyncMessageFilter> message_sender, 23 scoped_refptr<FrameSwapMessageQueue> message_queue, 24 int source_frame_number); 25 26 virtual ~QueueMessageSwapPromise(); 27 28 virtual void DidSwap(cc::CompositorFrameMetadata* metadata) OVERRIDE; 29 30 virtual void DidNotSwap(DidNotSwapReason reason) OVERRIDE; 31 32 virtual int64 TraceId() const OVERRIDE; 33 34 private: 35 void PromiseCompleted(); 36 37 scoped_refptr<IPC::SyncMessageFilter> message_sender_; 38 scoped_refptr<content::FrameSwapMessageQueue> message_queue_; 39 int source_frame_number_; 40 #if DCHECK_IS_ON 41 bool completed_; 42 #endif 43 }; 44 45 } // namespace content 46 47 #endif // CONTENT_RENDERER_QUEUE_MESSAGE_SWAP_PROMISE_H_ 48