1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/enhanced_bookmarks/test_image_store.h" 6 7 #include "third_party/skia/include/core/SkBitmap.h" 8 #include "ui/gfx/geometry/size.h" 9 #include "url/gurl.h" 10 11 TestImageStore::TestImageStore() { 12 } 13 14 bool TestImageStore::HasKey(const GURL& page_url) { 15 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 16 17 return store_.find(page_url) != store_.end(); 18 } 19 20 void TestImageStore::Insert(const GURL& page_url, 21 const GURL& image_url, 22 const gfx::Image& image) { 23 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 24 25 Erase(page_url); 26 store_.insert(std::make_pair( 27 page_url, 28 std::make_pair(image, 29 image_url))); 30 } 31 32 void TestImageStore::Erase(const GURL& page_url) { 33 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 34 35 store_.erase(page_url); 36 } 37 38 std::pair<gfx::Image, GURL> TestImageStore::Get(const GURL& page_url) { 39 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 40 41 ImageMap::const_iterator pair_enumerator = store_.find(page_url); 42 if (pair_enumerator == store_.end()) 43 return std::make_pair(gfx::Image(), GURL()); 44 45 return std::make_pair(store_[page_url].first, store_[page_url].second); 46 } 47 48 gfx::Size TestImageStore::GetSize(const GURL& page_url) { 49 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 50 51 ImageMap::const_iterator pair_enumerator = store_.find(page_url); 52 if (pair_enumerator == store_.end()) 53 return gfx::Size(); 54 55 return store_[page_url].first.Size(); 56 } 57 58 void TestImageStore::GetAllPageUrls(std::set<GURL>* urls) { 59 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 60 DCHECK(urls->empty()); 61 62 for (ImageMap::const_iterator it = store_.begin(); it != store_.end(); ++it) 63 urls->insert(it->first); 64 } 65 66 void TestImageStore::ClearAll() { 67 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 68 69 store_.clear(); 70 } 71 72 int64 TestImageStore::GetStoreSizeInBytes() { 73 // Not 100% accurate, but it's for testing so the actual value is not 74 // important. 75 int64 size = sizeof(store_); 76 for (ImageMap::const_iterator it = store_.begin(); it != store_.end(); ++it) { 77 size += sizeof(it->first); 78 size += it->first.spec().length(); 79 size += sizeof(it->second); 80 SkBitmap bitmap = it->second.first.AsBitmap(); 81 size += bitmap.getSize(); 82 size += it->second.second.spec().length(); 83 } 84 return size; 85 } 86 87 TestImageStore::~TestImageStore() { 88 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 89 } 90