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.
4
5#ifndef CC_RESOURCES_UI_RESOURCE_REQUEST_H_
6#define CC_RESOURCES_UI_RESOURCE_REQUEST_H_
7
8#include "base/logging.h"
9#include "base/memory/scoped_ptr.h"
10#include "cc/base/cc_export.h"
11#include "cc/resources/ui_resource_bitmap.h"
12#include "cc/resources/ui_resource_client.h"
13
14namespace cc {
15
16class CC_EXPORT UIResourceRequest {
17 public:
18  enum UIResourceRequestType {
19    UIResourceCreate,
20    UIResourceDelete,
21    UIResourceInvalidRequest
22  };
23
24  UIResourceRequest(UIResourceRequestType type, UIResourceId id);
25  UIResourceRequest(UIResourceRequestType type,
26                    UIResourceId id,
27                    const UIResourceBitmap& bitmap);
28  UIResourceRequest(const UIResourceRequest& request);
29
30  ~UIResourceRequest();
31
32  UIResourceRequestType GetType() const { return type_; }
33  UIResourceId GetId() const { return id_; }
34  UIResourceBitmap GetBitmap() const {
35    DCHECK(bitmap_);
36    return *bitmap_.get();
37  }
38
39  UIResourceRequest& operator=(const UIResourceRequest& request);
40
41 private:
42  UIResourceRequestType type_;
43  UIResourceId id_;
44  scoped_ptr<UIResourceBitmap> bitmap_;
45};
46
47}  // namespace cc
48
49#endif  // CC_RESOURCES_UI_RESOURCE_REQUEST_H_
50