Chromium Code Reviews| Index: components/bookmarks_enhanced/memory_image_store.cc |
| diff --git a/components/bookmarks_enhanced/memory_image_store.cc b/components/bookmarks_enhanced/memory_image_store.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4c5f180c7e088554d8061831b9d54b91cb172051 |
| --- /dev/null |
| +++ b/components/bookmarks_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_enhanced/memory_image_store.h" |
| + |
| +#include "ui/gfx/geometry/size.h" |
| +#include "url/gurl.h" |
| + |
| +MemoryImageStore::MemoryImageStore() { |
| +} |
| + |
| +MemoryImageStore::~MemoryImageStore() { |
|
sky
2014/05/06 16:14:20
Order should match header.
Kibeom Kim (inactive)
2014/05/07 00:09:46
Done.
|
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| +} |
| + |
| +bool MemoryImageStore::HasKey(const GURL& page_url) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + return store_.find(page_url) != store_.end(); |
| +} |
| + |
| +void MemoryImageStore::Insert(const GURL& page_url, |
| + const GURL& image_url, |
| + const gfx::Image& image) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + Erase(page_url); |
| + store_.insert(std::make_pair( |
| + page_url, |
| + std::make_pair(image, |
| + image_url))); |
| +} |
| + |
| +void MemoryImageStore::Erase(const GURL& page_url) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + store_.erase(page_url); |
| +} |
| + |
| +gfx::Image MemoryImageStore::Get(const GURL& page_url, GURL* image_url) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + 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(thread_checker_.CalledOnValidThread()); |
| + |
| + 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(thread_checker_.CalledOnValidThread()); |
| + DCHECK(urls->empty()); |
| + |
| + for (ImageMap::const_iterator it = store_.begin(); it != store_.end(); ++it) { |
|
sky
2014/05/06 16:14:20
nit: no {}
Kibeom Kim (inactive)
2014/05/07 00:09:46
Done.
|
| + urls->push_back(it->first); |
| + } |
| +} |
| + |
| +void ImageStore::ChangeImageURL(const GURL& from, const GURL& to) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + if (!HasKey(from)) |
| + return; |
| + GURL image_url; |
| + gfx::Image image(Get(from, &image_url)); |
| + |
| + Erase(from); |
| + Insert(to, image_url, image); |
| +} |
| + |
| +// Removes all images. |
|
sky
2014/05/06 16:14:20
remove comment (already documented in header).
Kibeom Kim (inactive)
2014/05/07 00:09:46
Done.
|
| +void ImageStore::ClearAll() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + std::vector<GURL> all_keys; |
|
sky
2014/05/06 16:14:20
Can't all this be replaced by store_.clear()?
Kibeom Kim (inactive)
2014/05/07 00:09:46
Actually, this function and above ChangeImageURL(.
|
| + GetAllPageUrls(&all_keys); |
| + for (std::vector<GURL>::const_iterator it = all_keys.begin(); |
| + it != all_keys.end(); |
| + ++it) { |
| + Erase(*it); |
| + } |
| +} |