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); |
+ } |
+} |