blob: 20a519bfe4d8a68fb7fb09c5e3e5118263ebb267 [file] [log] [blame]
[email protected]586871b2014-07-22 17:05:111// 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
12namespace IPC {
13class SyncMessageFilter;
14}
15
16namespace content {
17
18class FrameSwapMessageQueue;
19
20class 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 private:
33 void PromiseCompleted();
34
35 scoped_refptr<IPC::SyncMessageFilter> message_sender_;
36 scoped_refptr<content::FrameSwapMessageQueue> message_queue_;
37 int source_frame_number_;
38#if DCHECK_IS_ON
39 bool completed_;
40#endif
41};
42
43} // namespace content
44
45#endif // CONTENT_RENDERER_QUEUE_MESSAGE_SWAP_PROMISE_H_