123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "cc/test/test_shared_bitmap_manager.h" 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/bind.h" 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace cc { 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void FreeSharedBitmap(SharedBitmap* shared_bitmap) { 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) delete shared_bitmap->memory(); 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void IgnoreSharedBitmap(SharedBitmap* shared_bitmap) {} 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TestSharedBitmapManager::TestSharedBitmapManager() {} 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TestSharedBitmapManager::~TestSharedBitmapManager() {} 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<SharedBitmap> TestSharedBitmapManager::AllocateSharedBitmap( 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const gfx::Size& size) { 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::AutoLock lock(lock_); 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) scoped_ptr<base::SharedMemory> memory(new base::SharedMemory); 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) memory->CreateAndMapAnonymous(size.GetArea() * 4); 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) SharedBitmapId id = SharedBitmap::GenerateId(); 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bitmap_map_[id] = memory.get(); 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return scoped_ptr<SharedBitmap>( 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) new SharedBitmap(memory.release(), id, base::Bind(&FreeSharedBitmap))); 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetSharedBitmapFromId( 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const gfx::Size&, 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const SharedBitmapId& id) { 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::AutoLock lock(lock_); 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (bitmap_map_.find(id) == bitmap_map_.end()) 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return scoped_ptr<SharedBitmap>(); 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return scoped_ptr<SharedBitmap>( 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) new SharedBitmap(bitmap_map_[id], id, base::Bind(&IgnoreSharedBitmap))); 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetBitmapForSharedMemory( 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::SharedMemory* memory) { 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::AutoLock lock(lock_); 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) SharedBitmapId id = SharedBitmap::GenerateId(); 4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bitmap_map_[id] = memory; 4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return scoped_ptr<SharedBitmap>( 4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) new SharedBitmap(memory, id, base::Bind(&IgnoreSharedBitmap))); 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} // namespace cc 52