Move prefs::kLastPolicyStatisticsUpdate to the policy component.
[chromium-blink-merge.git] / cc / output / copy_output_request.h
blobc4a92481dbca566e42acf150f5a639f60c64628c
1 // Copyright 2013 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.
5 #ifndef CC_OUTPUT_COPY_OUTPUT_REQUEST_H_
6 #define CC_OUTPUT_COPY_OUTPUT_REQUEST_H_
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/base/cc_export.h"
11 #include "ui/gfx/rect.h"
13 class SkBitmap;
15 namespace cc {
16 class CopyOutputResult;
17 class SingleReleaseCallback;
18 class TextureMailbox;
20 class CC_EXPORT CopyOutputRequest {
21 public:
22 typedef base::Callback<void(scoped_ptr<CopyOutputResult> result)>
23 CopyOutputRequestCallback;
25 static scoped_ptr<CopyOutputRequest> CreateEmptyRequest() {
26 return make_scoped_ptr(new CopyOutputRequest);
28 static scoped_ptr<CopyOutputRequest> CreateRequest(
29 const CopyOutputRequestCallback& result_callback) {
30 return make_scoped_ptr(new CopyOutputRequest(false, result_callback));
32 static scoped_ptr<CopyOutputRequest> CreateBitmapRequest(
33 const CopyOutputRequestCallback& result_callback) {
34 return make_scoped_ptr(new CopyOutputRequest(true, result_callback));
36 static scoped_ptr<CopyOutputRequest> CreateRelayRequest(
37 const CopyOutputRequest& original_request,
38 const CopyOutputRequestCallback& result_callback) {
39 scoped_ptr<CopyOutputRequest> relay = CreateRequest(result_callback);
40 relay->force_bitmap_result_ = original_request.force_bitmap_result_;
41 relay->has_area_ = original_request.has_area_;
42 relay->area_ = original_request.area_;
43 return relay.Pass();
46 ~CopyOutputRequest();
48 bool IsEmpty() const { return result_callback_.is_null(); }
50 bool force_bitmap_result() const { return force_bitmap_result_; }
52 // By default copy requests copy the entire layer's subtree output. If an
53 // area is given, then the intersection of this rect (in layer space) with
54 // the layer's subtree output will be returned.
55 void set_area(gfx::Rect area) {
56 has_area_ = true;
57 area_ = area;
59 bool has_area() const { return has_area_; }
60 gfx::Rect area() const { return area_; }
62 void SendEmptyResult();
63 void SendBitmapResult(scoped_ptr<SkBitmap> bitmap);
64 void SendTextureResult(gfx::Size size,
65 const TextureMailbox& texture_mailbox,
66 scoped_ptr<SingleReleaseCallback> release_callback);
68 void SendResult(scoped_ptr<CopyOutputResult> result);
70 bool Equals(const CopyOutputRequest& other) const {
71 return result_callback_.Equals(other.result_callback_) &&
72 force_bitmap_result_ == other.force_bitmap_result_;
75 private:
76 CopyOutputRequest();
77 explicit CopyOutputRequest(bool force_bitmap_result,
78 const CopyOutputRequestCallback& result_callback);
80 bool force_bitmap_result_;
81 bool has_area_;
82 gfx::Rect area_;
83 CopyOutputRequestCallback result_callback_;
86 } // namespace cc
88 #endif // CC_OUTPUT_COPY_OUTPUT_REQUEST_H_