Home | History | Annotate | Download | only in thumbnails
      1 // Copyright (c) 2012 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 CHROME_BROWSER_THUMBNAILS_THUMBNAIL_SERVICE_H_
      6 #define CHROME_BROWSER_THUMBNAILS_THUMBNAIL_SERVICE_H_
      7 
      8 #include "chrome/common/thumbnail_score.h"
      9 #include "components/browser_context_keyed_service/refcounted_browser_context_keyed_service.h"
     10 #include "ui/gfx/image/image.h"
     11 #include "url/gurl.h"
     12 
     13 namespace base {
     14 class RefCountedMemory;
     15 }
     16 
     17 namespace thumbnails {
     18 
     19 class ThumbnailingAlgorithm;
     20 struct ThumbnailingContext;
     21 
     22 // An interface abstracting access to thumbnails. Intended as a temporary
     23 // bridge facilitating switch from TopSites as the thumbnail source to a more
     24 // robust way of handling these artefacts.
     25 class ThumbnailService : public RefcountedBrowserContextKeyedService {
     26  public:
     27   // Sets the given thumbnail for the given URL. Returns true if the thumbnail
     28   // was updated. False means either the URL wasn't known to us, or we felt
     29   // that our current thumbnail was superior to the given one.
     30   virtual bool SetPageThumbnail(const ThumbnailingContext& context,
     31                                 const gfx::Image& thumbnail) = 0;
     32 
     33   // Returns the ThumbnailingAlgorithm used for processing thumbnails.
     34   // It is always a new instance, the caller owns it. It will encapsulate the
     35   // process of creating a thumbnail from tab contents. The lifetime of these
     36   // instances is limited to the act of processing a single tab image. They
     37   // are permitted to hold the state of such process.
     38   virtual ThumbnailingAlgorithm* GetThumbnailingAlgorithm() const = 0;
     39 
     40   // Gets a thumbnail for a given page. Returns true iff we have the thumbnail.
     41   // This may be invoked on any thread.
     42   // As this method may be invoked on any thread the ref count needs to be
     43   // incremented before this method returns, so this takes a scoped_refptr*.
     44   virtual bool GetPageThumbnail(
     45       const GURL& url,
     46       scoped_refptr<base::RefCountedMemory>* bytes) = 0;
     47 
     48   // Returns true if the page thumbnail should be updated.
     49   virtual bool ShouldAcquirePageThumbnail(const GURL& url) = 0;
     50 
     51  protected:
     52   virtual ~ThumbnailService() {}
     53 };
     54 
     55 }
     56 
     57 #endif  // CHROME_BROWSER_THUMBNAILS_THUMBNAIL_SERVICE_H_
     58