1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file.
4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "cc/test/fake_scoped_ui_resource.h"
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "cc/trees/layer_tree_host.h"
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace cc {
10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace {
1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)UIResourceBitmap CreateMockUIResourceBitmap() {
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  bool is_opaque = false;
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return UIResourceBitmap(gfx::Size(1, 1), is_opaque);
1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}  // anonymous namespace
1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)scoped_ptr<FakeScopedUIResource> FakeScopedUIResource::Create(
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    LayerTreeHost* host) {
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return make_scoped_ptr(new FakeScopedUIResource(host));
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)FakeScopedUIResource::FakeScopedUIResource(LayerTreeHost* host)
2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    : ScopedUIResource(host, CreateMockUIResourceBitmap()) {
2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // The constructor of ScopedUIResource already created a resource so we need
2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // to delete the created resource to wipe the state clean.
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  host_->DeleteUIResource(id_);
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ResetCounters();
31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  id_ = host_->CreateUIResource(this);
32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)UIResourceBitmap FakeScopedUIResource::GetBitmap(UIResourceId uid,
3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                                                 bool resource_lost) {
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  resource_create_count++;
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  if (resource_lost)
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    lost_resource_count++;
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return ScopedUIResource::GetBitmap(uid, resource_lost);
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void FakeScopedUIResource::ResetCounters() {
43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  resource_create_count = 0;
44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  lost_resource_count = 0;
45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}  // namespace cc
48