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

Unified Diff: components/suggestions/image_manager.h

Issue 600203002: Revert of [Suggestions] Move ImageManager to the component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « components/suggestions/image_fetcher_delegate.h ('k') | components/suggestions/image_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/suggestions/image_manager.h
diff --git a/components/suggestions/image_manager.h b/components/suggestions/image_manager.h
index e538a6b917e2e7581b7585d04f8fbe6f5dd25705..8c09fdfce416e0e9995bcad227952a16fe718b84 100644
--- a/components/suggestions/image_manager.h
+++ b/components/suggestions/image_manager.h
@@ -5,146 +5,31 @@
#ifndef COMPONENTS_SUGGESTIONS_IMAGE_MANAGER_H_
#define COMPONENTS_SUGGESTIONS_IMAGE_MANAGER_H_
-#include <map>
-#include <string>
-#include <vector>
-
#include "base/basictypes.h"
#include "base/callback.h"
-#include "base/containers/hash_tables.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/threading/thread_checker.h"
-#include "components/leveldb_proto/proto_database.h"
-#include "components/suggestions/image_fetcher_delegate.h"
#include "components/suggestions/proto/suggestions.pb.h"
#include "ui/gfx/image/image_skia.h"
#include "url/gurl.h"
-namespace net {
-class URLRequestContextGetter;
-}
-
namespace suggestions {
-class ImageData;
-class ImageFetcher;
-class SuggestionsProfile;
+// An interface to retrieve images related to a specific URL.
+class ImageManager {
+ public:
+ ImageManager() {}
+ virtual ~ImageManager() {}
-// A class used to fetch server images asynchronously and manage the caching
-// layer (both in memory and on disk).
-class ImageManager : public ImageFetcherDelegate {
- public:
- typedef std::vector<ImageData> ImageDataVector;
+ // (Re)Initializes states using data received from a SuggestionService. We're
+ // not doing this in the constructor because an instance may be long-lived.
+ virtual void Initialize(const SuggestionsProfile& suggestions) = 0;
- ImageManager(scoped_ptr<ImageFetcher> image_fetcher,
- scoped_ptr<leveldb_proto::ProtoDatabase<ImageData> > database,
- const base::FilePath& database_dir);
- virtual ~ImageManager();
-
- virtual void Initialize(const SuggestionsProfile& suggestions);
-
- // Should be called from the UI thread.
+ // Retrieves stored image for website |url| asynchronously. Calls |callback|
+ // with Bitmap pointer if found, and NULL otherwise.
virtual void GetImageForURL(
const GURL& url,
- base::Callback<void(const GURL&, const SkBitmap*)> callback);
-
- protected:
- // Perform additional tasks when an image has been fetched.
- virtual void OnImageFetched(const GURL& url, const SkBitmap* bitmap) OVERRIDE;
+ base::Callback<void(const GURL&, const SkBitmap*)> callback) = 0;
private:
- friend class MockImageManager;
- friend class ImageManagerTest;
- FRIEND_TEST_ALL_PREFIXES(ImageManagerTest, InitializeTest);
- FRIEND_TEST_ALL_PREFIXES(ImageManagerTest, GetImageForURLNetworkCacheHit);
- FRIEND_TEST_ALL_PREFIXES(ImageManagerTest,
- GetImageForURLNetworkCacheNotInitialized);
-
- // Used for testing.
- ImageManager();
-
- typedef std::vector<base::Callback<void(const GURL&, const SkBitmap*)> >
- CallbackVector;
- typedef base::hash_map<std::string, SkBitmap> ImageMap;
-
- // State related to an image fetch (associated website url, image_url,
- // pending callbacks).
- struct ImageCacheRequest {
- ImageCacheRequest();
- ~ImageCacheRequest();
-
- GURL url;
- GURL image_url;
- // Queue for pending callbacks, which may accumulate while the request is in
- // flight.
- CallbackVector callbacks;
- };
-
- typedef std::map<const GURL, ImageCacheRequest> ImageCacheRequestMap;
-
- // Looks up image URL for |url|. If found, writes the result to |image_url|
- // and returns true. Otherwise just returns false.
- bool GetImageURL(const GURL& url, GURL* image_url);
-
- void QueueCacheRequest(
- const GURL& url, const GURL& image_url,
- base::Callback<void(const GURL&, const SkBitmap*)> callback);
-
- void ServeFromCacheOrNetwork(
- const GURL& url, const GURL& image_url,
- base::Callback<void(const GURL&, const SkBitmap*)> callback);
-
- // Will return false if no bitmap was found corresponding to |url|, else
- // return true and call |callback| with the found bitmap.
- bool ServeFromCache(
- const GURL& url,
- base::Callback<void(const GURL&, const SkBitmap*)> callback);
-
- // Returns null if the |url| had no entry in the cache.
- SkBitmap* GetBitmapFromCache(const GURL& url);
-
- // Save the image bitmap in the cache and in the database.
- void SaveImage(const GURL& url, const SkBitmap& bitmap);
-
- // Database callback methods.
- // Will initiate loading the entries.
- void OnDatabaseInit(bool success);
- // Will transfer the loaded |entries| in memory (|image_map_|).
- void OnDatabaseLoad(bool success, scoped_ptr<ImageDataVector> entries);
- void OnDatabaseSave(bool success);
-
- // Take entries from the database and put them in the local cache.
- void LoadEntriesInCache(scoped_ptr<ImageDataVector> entries);
-
- void ServePendingCacheRequests();
-
- // From SkBitmap to the vector of JPEG-encoded bytes, |dst|. Visible only for
- // testing.
- static bool EncodeImage(const SkBitmap& bitmap,
- std::vector<unsigned char>* dest);
-
- // Map from URL to image URL. Should be kept up to date when a new
- // SuggestionsProfile is available.
- std::map<GURL, GURL> image_url_map_;
-
- // Map from website URL to request information, used for pending cache
- // requests while the database hasn't loaded.
- ImageCacheRequestMap pending_cache_requests_;
-
- // Holding the bitmaps in memory, keyed by website URL string.
- ImageMap image_map_;
-
- scoped_ptr<ImageFetcher> image_fetcher_;
-
- scoped_ptr<leveldb_proto::ProtoDatabase<ImageData> > database_;
-
- bool database_ready_;
-
- base::WeakPtrFactory<ImageManager> weak_ptr_factory_;
-
- base::ThreadChecker thread_checker_;
-
DISALLOW_COPY_AND_ASSIGN(ImageManager);
};
« no previous file with comments | « components/suggestions/image_fetcher_delegate.h ('k') | components/suggestions/image_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698