| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "cc/test/picture_cache_model.h" |
| |
| #include "base/logging.h" |
| #include "third_party/skia/include/core/SkData.h" |
| #include "third_party/skia/include/core/SkPicture.h" |
| #include "third_party/skia/include/core/SkRefCnt.h" |
| |
| class SkPixelSerializer; |
| |
| namespace cc { |
| namespace { |
| |
| sk_sp<SkPicture> CopySkPicture(const SkPicture* picture) { |
| sk_sp<SkData> data = picture->serialize(); |
| DCHECK_GT(data->size(), 0u); |
| return SkPicture::MakeFromData(data.get()); |
| } |
| |
| } // namespace |
| |
| PictureCacheModel::PictureCacheModel() = default; |
| |
| PictureCacheModel::~PictureCacheModel() = default; |
| |
| void PictureCacheModel::AddPicture(const SkPicture* picture) { |
| sk_sp<SkPicture> picture_copy = CopySkPicture(picture); |
| pictures_.insert(std::make_pair(picture->uniqueID(), picture_copy)); |
| } |
| |
| sk_sp<const SkPicture> PictureCacheModel::GetPicture(uint32_t unique_id) { |
| if (pictures_.find(unique_id) == pictures_.end()) |
| return nullptr; |
| |
| return pictures_.find(unique_id)->second; |
| } |
| |
| } // namespace cc |