1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CC_RESOURCES_UI_RESOURCE_REQUEST_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CC_RESOURCES_UI_RESOURCE_REQUEST_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/logging.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "cc/base/cc_export.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "cc/resources/ui_resource_bitmap.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "cc/resources/ui_resource_client.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace cc {
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class CC_EXPORT UIResourceRequest {
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  enum UIResourceRequestType {
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    UIResourceCreate,
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    UIResourceDelete,
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    UIResourceInvalidRequest
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  };
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceRequest(UIResourceRequestType type, UIResourceId id);
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceRequest(UIResourceRequestType type,
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    UIResourceId id,
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    const UIResourceBitmap& bitmap);
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceRequest(const UIResourceRequest& request);
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ~UIResourceRequest();
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceRequestType GetType() const { return type_; }
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceId GetId() const { return id_; }
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceBitmap GetBitmap() const {
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    DCHECK(bitmap_);
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return *bitmap_.get();
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceRequest& operator=(const UIResourceRequest& request);
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceRequestType type_;
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  UIResourceId id_;
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<UIResourceBitmap> bitmap_;
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace cc
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CC_RESOURCES_UI_RESOURCE_REQUEST_H_
50