Home | History | Annotate | Download | only in browser
      1 // Copyright (c) 2013 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 ANDROID_WEBVIEW_BROWSER_ICON_HELPER_H_
      6 #define ANDROID_WEBVIEW_BROWSER_ICON_HELPER_H_
      7 
      8 #include <string>
      9 #include "content/public/browser/web_contents_observer.h"
     10 #include "url/gurl.h"
     11 
     12 class SkBitmap;
     13 
     14 namespace content {
     15 struct FaviconURL;
     16 }
     17 
     18 namespace android_webview {
     19 
     20 // A helper that observes favicon changes for Webview.
     21 class IconHelper : public content::WebContentsObserver {
     22  public:
     23   class Listener {
     24    public:
     25     virtual bool ShouldDownloadFavicon(const GURL& icon_url) = 0;
     26     virtual void OnReceivedIcon(const GURL& icon_url,
     27                                 const SkBitmap& bitmap) = 0;
     28     virtual void OnReceivedTouchIconUrl(const std::string& url,
     29                                         const bool precomposed) = 0;
     30    protected:
     31     virtual ~Listener() {}
     32   };
     33 
     34   explicit IconHelper(content::WebContents* web_contents);
     35   virtual ~IconHelper();
     36 
     37   void SetListener(Listener* listener);
     38 
     39   // From WebContentsObserver
     40   virtual void DidUpdateFaviconURL(int32 page_id,
     41       const std::vector<content::FaviconURL>& candidates) OVERRIDE;
     42 
     43   void DownloadFaviconCallback(int id, int http_status_code,
     44       const GURL& image_url, int requested_size,
     45       const std::vector<SkBitmap>& bitmaps);
     46 
     47  private:
     48   Listener* listener_;
     49 
     50   DISALLOW_COPY_AND_ASSIGN(IconHelper);
     51 };
     52 
     53 }  // namespace android_webview
     54 
     55 #endif  // ANDROID_WEBVIEW_BROWSER_ICON_HELPER_H_
     56