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