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 11TestImageStore::TestImageStore() { 12} 13 14bool TestImageStore::HasKey(const GURL& page_url) { 15 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 16 17 return store_.find(page_url) != store_.end(); 18} 19 20void 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 32void TestImageStore::Erase(const GURL& page_url) { 33 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 34 35 store_.erase(page_url); 36} 37 38std::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 48gfx::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 58void 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 66void TestImageStore::ClearAll() { 67 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 68 69 store_.clear(); 70} 71 72int64 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 87TestImageStore::~TestImageStore() { 88 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 89} 90