| Index: components/enhanced_bookmarks/bookmark_image_service.h
|
| diff --git a/components/enhanced_bookmarks/bookmark_image_service.h b/components/enhanced_bookmarks/bookmark_image_service.h
|
| index 2ee8d610ac385abb44e35bbfc129ff0728d00478..5bf2637ca9e039da6c64a8ab58d06e408c887012 100644
|
| --- a/components/enhanced_bookmarks/bookmark_image_service.h
|
| +++ b/components/enhanced_bookmarks/bookmark_image_service.h
|
| @@ -8,6 +8,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/singleton.h"
|
| #include "components/bookmarks/browser/bookmark_model_observer.h"
|
| +#include "components/enhanced_bookmarks/image_record.h"
|
| #include "components/enhanced_bookmarks/image_store.h"
|
| #include "components/keyed_service/core/keyed_service.h"
|
| #include "net/url_request/url_request.h"
|
| @@ -36,7 +37,7 @@ class BookmarkImageService : public KeyedService,
|
|
|
| ~BookmarkImageService() override;
|
|
|
| - typedef base::Callback<void(const gfx::Image&, const GURL& url)> Callback;
|
| + typedef base::Callback<void(const ImageRecord&)> ImageCallback;
|
|
|
| // KeyedService:
|
| void Shutdown() override;
|
| @@ -46,7 +47,7 @@ class BookmarkImageService : public KeyedService,
|
| // a URL for this salient image available. The image (which may be empty) is
|
| // sent via the callback. The callback may be called synchronously if it is
|
| // possible. The callback is always triggered on the main thread.
|
| - void SalientImageForUrl(const GURL& page_url, Callback callback);
|
| + void SalientImageForUrl(const GURL& page_url, ImageCallback callback);
|
|
|
| // bookmarks::BookmarkModelObserver:
|
| void BookmarkNodeRemoved(bookmarks::BookmarkModel* model,
|
| @@ -108,28 +109,37 @@ class BookmarkImageService : public KeyedService,
|
| EnhancedBookmarkModel* enhanced_bookmark_model_;
|
|
|
| private:
|
| - // Same as SalientImageForUrl(const GURL&, Callback) but can prevent the
|
| - // network request if fetch_from_bookmark is false.
|
| + // Same as SalientImageForUrl(const GURL&, ImageCallback) but can
|
| + // prevent the network request if fetch_from_bookmark is false.
|
| void SalientImageForUrl(const GURL& page_url,
|
| bool fetch_from_bookmark,
|
| - Callback stack_callback);
|
| + ImageCallback stack_callback);
|
|
|
| // Processes the requests that have been waiting on an image.
|
| - void ProcessRequests(const GURL& page_url,
|
| - const gfx::Image& image,
|
| - const GURL& image_url);
|
| + void ProcessRequests(const GURL& page_url, const ImageRecord& image);
|
| +
|
| + // Once an image is retrieved this method updates the store with it. Returns
|
| + // the newly formed ImageRecord. This is typically called on |pool_|, the
|
| + // background sequenced worker pool for this object.
|
| + ImageRecord StoreImage(const gfx::Image& image,
|
| + const GURL& image_url,
|
| + const GURL& page_url);
|
| +
|
| + // Calls |StoreImage| in the background. This should only be called from the
|
| + // main thread.
|
| + void PostTaskToStoreImage(const gfx::Image& image,
|
| + const GURL& image_url,
|
| + const GURL& page_url);
|
|
|
| - // Once an image is retrieved this method updates the store with it.
|
| - void StoreImage(const gfx::Image& image,
|
| - const GURL& image_url,
|
| - const GURL& page_url);
|
| + // Called when |StoreImage| as been posted. This should only be called from
|
| + // the main thread.
|
| + void OnStoreImagePosted(const GURL& page_url, const ImageRecord& image);
|
|
|
| // Called when retrieving an image from the image store fails, to trigger
|
| // retrieving the image from the url stored in the bookmark (if any).
|
| void FetchCallback(const GURL& page_url,
|
| - Callback original_callback,
|
| - const gfx::Image& image,
|
| - const GURL& image_url);
|
| + ImageCallback original_callback,
|
| + const ImageRecord& record);
|
|
|
| // Remove the image stored for this bookmark (if it exists). Called when a
|
| // bookmark is deleted.
|
| @@ -147,21 +157,20 @@ class BookmarkImageService : public KeyedService,
|
| // main thread and the callback will be called on the main thread as well. The
|
| // callback will always be called. The returned image is nil if the image is
|
| // not present in the store.
|
| - void RetrieveImageFromStore(const GURL& page_url,
|
| - BookmarkImageService::Callback callback);
|
| + void RetrieveImageFromStore(const GURL& page_url, ImageCallback callback);
|
|
|
| // Maps a pageUrl to an image.
|
| scoped_ptr<ImageStore> store_;
|
|
|
| // All the callbacks waiting for a particular image.
|
| - std::map<const GURL, std::vector<Callback> > callbacks_;
|
| + std::map<const GURL, std::vector<ImageCallback>> callbacks_;
|
|
|
| // When a bookmark is changed, two messages are received on the
|
| // bookmarkModelObserver, one with the old state, one with the new. The url
|
| // before the change is saved in this instance variable.
|
| GURL previous_url_;
|
|
|
| - // The worker pool to enqueue the store requests onto.
|
| + // The worker pool to enqueue the requests onto.
|
| scoped_refptr<base::SequencedWorkerPool> pool_;
|
| DISALLOW_COPY_AND_ASSIGN(BookmarkImageService);
|
| };
|
|
|