Index: chrome/browser/android/shortcut_helper.h |
diff --git a/chrome/browser/android/shortcut_helper.h b/chrome/browser/android/shortcut_helper.h |
index 48009608c1f622ad46add5cdb937d5f210d006d6..fda61b8d98c521cb09a6264643bb4898754aed39 100644 |
--- a/chrome/browser/android/shortcut_helper.h |
+++ b/chrome/browser/android/shortcut_helper.h |
@@ -58,41 +58,105 @@ class ShortcutHelper : public content::WebContentsObserver { |
jstring title, |
jint launcher_large_icon_size); |
- void FinishAddingShortcut( |
+ // Callback run when the requested Manifest icon is ready to be used. |
+ void OnDidDownloadIcon(int id, |
+ int http_status_code, |
+ const GURL& url, |
+ const std::vector<SkBitmap>& bitmaps, |
+ const std::vector<gfx::Size>& sizes); |
+ |
+ // Called after AddShortcut() and OnDidDownloadIcon() are run if |
+ // OnDidDownloadIcon has a valid icon. |
+ void AddShortcutUsingManifestIcon(); |
+ |
+ // Use FaviconService to get the best available favicon and create the |
+ // shortcut using it. This is used when no Manifest icons are available or |
+ // appropriate. |
+ void AddShortcutUsingFavicon(); |
+ |
+ // Callback run when a favicon is received from GetFavicon() call. |
+ void OnDidGetFavicon( |
const favicon_base::FaviconRawBitmapResult& bitmap_result); |
// WebContentsObserver |
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
virtual void WebContentsDestroyed() OVERRIDE; |
- // Adds a shortcut to the launcher. Must be called from a WorkerPool task. |
- static void AddShortcutInBackground( |
+ // Adds a shortcut to the launcher using a FaviconRawBitmapResult. |
+ // Must be called from a WorkerPool task. |
+ static void AddShortcutInBackgroundWithRawBitmap( |
const GURL& url, |
const base::string16& title, |
content::Manifest::DisplayMode display, |
const favicon_base::FaviconRawBitmapResult& bitmap_result, |
blink::WebScreenOrientationLockType orientation); |
+ // Adds a shortcut to the launcher using a SkBitmap. |
+ // Must be called from a WorkerPool task. |
+ static void AddShortcutInBackgroundWithSkBitmap( |
+ const GURL& url, |
+ const base::string16& title, |
+ content::Manifest::DisplayMode display, |
+ const SkBitmap& icon_bitmap, |
+ blink::WebScreenOrientationLockType orientation); |
+ |
// Registers JNI hooks. |
static bool RegisterShortcutHelper(JNIEnv* env); |
private: |
+ enum ManifestIconStatus { |
+ MANIFEST_ICON_STATUS_NONE, |
+ MANIFEST_ICON_STATUS_FETCHING, |
+ MANIFEST_ICON_STATUS_DONE |
+ }; |
+ |
virtual ~ShortcutHelper(); |
void Destroy(); |
+ // Runs the algorithm to find the best matching icon in the icons listed in |
+ // the Manifest. |
+ // Returns the icon url if a suitable icon is found. An empty URL otherwise. |
+ GURL FindBestMatchingIcon( |
+ const std::vector<content::Manifest::Icon>& icons) const; |
+ |
+ // Runs an algorithm only based on icon declared sizes. It will try to find |
+ // size that is the closest to preferred_icon_size_in_px_ but bigger than |
+ // preferred_icon_size_in_px_ if possible. |
+ // Returns the icon url if a suitable icon is found. An empty URL otherwise. |
+ GURL FindBestMatchingIcon(const std::vector<content::Manifest::Icon>& icons, |
+ float density) const; |
+ |
+ // Returns an array containing the items in |icons| without the unsupported |
+ // image MIME types. |
+ static std::vector<content::Manifest::Icon> FilterIconsByType( |
+ const std::vector<content::Manifest::Icon>& icons); |
+ |
+ // Returns whether the preferred_icon_size_in_px_ is in the given |sizes|. |
+ bool IconSizesContainsPreferredSize( |
+ const std::vector<gfx::Size>& sizes) const; |
+ |
+ // Returns whether the 'any' (ie. gfx::Size(0,0)) is in the given |sizes|. |
+ bool IconSizesContainsAny(const std::vector<gfx::Size>& sizes) const; |
+ |
JavaObjectWeakGlobalRef java_ref_; |
GURL url_; |
base::string16 title_; |
- int launcher_large_icon_size_; |
content::Manifest::DisplayMode display_; |
- favicon_base::FaviconRawBitmapResult icon_; |
+ SkBitmap manifest_icon_; |
base::CancelableTaskTracker cancelable_task_tracker_; |
blink::WebScreenOrientationLockType orientation_; |
+ bool add_shortcut_requested_; |
+ |
+ ManifestIconStatus manifest_icon_status_; |
+ const int preferred_icon_size_in_px_; |
+ static const int kPreferredIconSizeInDp; |
+ |
base::WeakPtrFactory<ShortcutHelper> weak_ptr_factory_; |
+ friend class ShortcutHelperTest; |
DISALLOW_COPY_AND_ASSIGN(ShortcutHelper); |
}; |