Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: components/bookmarks_enhanced/memory_image_store.cc

Issue 259863007: Local salient image storage for enhanced bookmark experiment. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed from NonThreadSafe to ThreadChecker Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698