Update mojo sdk to rev cb6c5abfadfea0ca73dca466e2894554ac1ae144
[chromium-blink-merge.git] / cc / resources / scoped_ui_resource.h
blob0e5a02c7dbb10b22d4a61d0aa8e410d7fec39bff
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_RESOURCES_SCOPED_UI_RESOURCE_H_
6 #define CC_RESOURCES_SCOPED_UI_RESOURCE_H_
8 #include "base/memory/ref_counted.h"
9 #include "cc/base/cc_export.h"
10 #include "cc/resources/ui_resource_bitmap.h"
11 #include "cc/resources/ui_resource_client.h"
13 namespace cc {
15 class LayerTreeHost;
17 // ScopedUIResource creates an UIResource from a bitmap and a LayerTreeHost.
18 // This class holds a pointer to the host so that when the instance goes out of
19 // scope, the created resource is deleted. On a GetBitmap call from the
20 // UIResource manager, ScopeUIResource always returns the reference to the
21 // initially given bitmap regardless of whether the request was due to lost
22 // resource or not.
23 class CC_EXPORT ScopedUIResource : public UIResourceClient {
24 public:
25 static scoped_ptr<ScopedUIResource> Create(LayerTreeHost* host,
26 const UIResourceBitmap& bitmap);
27 ~ScopedUIResource() override;
29 // UIResourceClient implementation.
30 UIResourceBitmap GetBitmap(UIResourceId uid, bool resource_lost) override;
31 UIResourceId id() { return id_; }
33 protected:
34 ScopedUIResource(LayerTreeHost* host, const UIResourceBitmap& bitmap);
36 UIResourceBitmap bitmap_;
37 LayerTreeHost* host_;
38 UIResourceId id_;
40 private:
41 DISALLOW_COPY_AND_ASSIGN(ScopedUIResource);
44 } // namespace cc
46 #endif // CC_RESOURCES_SCOPED_UI_RESOURCE_H_