| Index: components/bookmarks/core/browser/enhanced/memory_image_store.cc
|
| diff --git a/components/bookmarks/core/browser/enhanced/memory_image_store.cc b/components/bookmarks/core/browser/enhanced/memory_image_store.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a1cb4c8bda4886e575586cff7de2f3a7ed801fc4
|
| --- /dev/null
|
| +++ b/components/bookmarks/core/browser/enhanced/memory_image_store.cc
|
| @@ -0,0 +1,95 @@
|
| +// Copyright 2014 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 "components/bookmarks/core/browser/enhanced/memory_image_store.h"
|
| +
|
| +#include "ui/gfx/geometry/size.h"
|
| +#include "url/gurl.h"
|
| +
|
| +MemoryImageStore::MemoryImageStore() {
|
| +}
|
| +
|
| +MemoryImageStore::~MemoryImageStore() {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +}
|
| +
|
| +bool MemoryImageStore::HasKey(const GURL& page_url) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +
|
| + return store_.find(page_url) != store_.end();
|
| +}
|
| +
|
| +void MemoryImageStore::Insert(const GURL& page_url,
|
| + const GURL& image_url,
|
| + const gfx::Image& image) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +
|
| + Erase(page_url);
|
| + store_.insert(std::make_pair(
|
| + page_url,
|
| + std::make_pair(image,
|
| + image_url)));
|
| +}
|
| +
|
| +void MemoryImageStore::Erase(const GURL& page_url) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +
|
| + store_.erase(page_url);
|
| +}
|
| +
|
| +gfx::Image MemoryImageStore::Get(const GURL& page_url, GURL* image_url) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| + DCHECK(image_url);
|
| +
|
| + ImageMap::const_iterator pair_enumerator = store_.find(page_url);
|
| + if (pair_enumerator == store_.end())
|
| + return gfx::Image();
|
| +
|
| + *image_url = store_[page_url].second;
|
| + return store_[page_url].first;
|
| +}
|
| +
|
| +gfx::Size MemoryImageStore::GetSize(const GURL& page_url) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +
|
| + ImageMap::const_iterator pair_enumerator = store_.find(page_url);
|
| + if (pair_enumerator == store_.end())
|
| + return gfx::Size();
|
| +
|
| + return store_[page_url].first.Size();
|
| +}
|
| +
|
| +void MemoryImageStore::GetAllPageUrls(std::vector<GURL>* urls) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| + DCHECK(urls->empty());
|
| +
|
| + for (ImageMap::const_iterator it = store_.begin(); it != store_.end(); ++it) {
|
| + urls->push_back(it->first);
|
| + }
|
| +}
|
| +
|
| +void ImageStore::ChangeImageURL(const GURL& from, const GURL& to) {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +
|
| + if (!HasKey(from))
|
| + return;
|
| + GURL image_url;
|
| + gfx::Image image(Get(from, &image_url));
|
| +
|
| + Erase(from);
|
| + Insert(to, image_url, image);
|
| +}
|
| +
|
| +// Removes all images.
|
| +void ImageStore::ClearAll() {
|
| + DCHECK(IsRunningThreadConsistent());
|
| +
|
| + std::vector<GURL> all_keys;
|
| + GetAllPageUrls(&all_keys);
|
| + for (std::vector<GURL>::const_iterator it = all_keys.begin();
|
| + it != all_keys.end();
|
| + ++it) {
|
| + Erase(*it);
|
| + }
|
| +}
|
|
|