image_store.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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#ifndef COMPONENTS_ENHANCED_BOOKMARKS_IMAGE_STORE_H_
6#define COMPONENTS_ENHANCED_BOOKMARKS_IMAGE_STORE_H_
7
8#include <map>
9#include <set>
10
11#include "base/sequence_checker.h"
12#include "ui/gfx/image/image.h"
13
14class GURL;
15
16// The ImageStore keeps an image for each URL.  This class is not thread safe,
17// and will check the thread using base::ThreadChecker, except the constructor.
18class ImageStore {
19 public:
20  ImageStore();
21  virtual ~ImageStore();
22
23  // Returns true if there is an image for this url.
24  virtual bool HasKey(const GURL& page_url) = 0;
25
26  // Inserts an image and its url in the store for the the given page url. The
27  // image can be null indicating that the download of the image at this URL or
28  // encoding for insertion failed previously. On non-ios platforms, |image|
29  // must have exactly one representation with a scale factor of 1.
30  virtual void Insert(const GURL& page_url,
31                      const GURL& image_url,
32                      const gfx::Image& image) = 0;
33
34  // Removes an image from the store.
35  virtual void Erase(const GURL& page_url) = 0;
36
37  // Returns the image associated with this url. Returns empty image and url if
38  // there are no image for this url. It also returns the image_url where the
39  // image was downloaded from or failed to be downloaded from.
40  virtual std::pair<gfx::Image, GURL> Get(const GURL& page_url) = 0;
41
42  // Returns the size of the image stored for this URL or empty size if no
43  // images are present.
44  virtual gfx::Size GetSize(const GURL& page_url) = 0;
45
46  // Populates |urls| with all the urls that have an image in the store.
47  virtual void GetAllPageUrls(std::set<GURL>* urls) = 0;
48
49  // Removes all images.
50  virtual void ClearAll() = 0;
51
52  // Moves an image from one url to another.
53  void ChangeImageURL(const GURL& from, const GURL& to);
54
55 protected:
56  base::SequenceChecker sequence_checker_;
57
58 private:
59  DISALLOW_COPY_AND_ASSIGN(ImageStore);
60};
61
62#endif  // COMPONENTS_ENHANCED_BOOKMARKS_IMAGE_STORE_H_
63