Chromium Code Reviews| Index: chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h |
| diff --git a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h |
| index 6212b1692eb49449edb1d595c7d44d6abbaf7d30..266e3fa7457139c005a915156d8ffb01974dd48e 100644 |
| --- a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h |
| +++ b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h |
| @@ -5,8 +5,9 @@ |
| #ifndef CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_ |
| #define CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_ |
| +#include <utility> |
| + |
| #include "base/macros.h" |
|
dominickn
2017/07/05 03:04:40
Nit: #include "base/memory/weak_ptr.h"
|
| -#include "base/memory/ref_counted.h" |
| #include "base/strings/string16.h" |
| #include "base/task/cancelable_task_tracker.h" |
| #include "base/timer/timer.h" |
| @@ -18,20 +19,13 @@ namespace favicon_base { |
| struct FaviconRawBitmapResult; |
| } |
| -class GURL; |
| class InstallableManager; |
| struct InstallableData; |
| struct WebApplicationInfo; |
| // Aysnchronously fetches and processes data needed to create a shortcut for an |
| // Android Home screen launcher. |
| -// |
| -// Because of the various asynchronous calls made by this class, it is |
| -// refcounted to prevent the class from being prematurely deleted. If the |
| -// |weak_observer_| pointer becomes invalid, the pipeline should kill itself. |
| -class AddToHomescreenDataFetcher |
| - : public base::RefCounted<AddToHomescreenDataFetcher>, |
| - public content::WebContentsObserver { |
| +class AddToHomescreenDataFetcher : public content::WebContentsObserver { |
| public: |
| class Observer { |
| public: |
| @@ -43,13 +37,6 @@ class AddToHomescreenDataFetcher |
| // OnDidDetermineWebApkCompatibility. |
| virtual void OnUserTitleAvailable(const base::string16& title) = 0; |
| - // Converts the icon into one that can be used on the Android Home screen. |
| - // |is_generated| is an out-param that indicates whether the icon was |
| - // generated by Chrome. |
| - virtual SkBitmap FinalizeLauncherIconInBackground(const SkBitmap& icon, |
| - const GURL& url, |
| - bool* is_generated) = 0; |
| - |
| // Called when all the data needed to create a shortcut is available. |
| virtual void OnDataAvailable(const ShortcutInfo& info, |
| const SkBitmap& primary_icon, |
| @@ -62,6 +49,7 @@ class AddToHomescreenDataFetcher |
| // Initialize the fetcher by requesting the information about the page from |
| // the renderer process. The initialization is asynchronous and |
| // OnDidGetWebApplicationInfo is expected to be called when finished. |
| + // |observer| must outlive AddToHomescreenDataFetcher. |
| AddToHomescreenDataFetcher(content::WebContents* web_contents, |
| int ideal_icon_size_in_px, |
| int minimum_icon_size_in_px, |
| @@ -72,20 +60,17 @@ class AddToHomescreenDataFetcher |
| bool check_webapk_compatible, |
| Observer* observer); |
| + ~AddToHomescreenDataFetcher() override; |
| + |
| // IPC message received when the initialization is finished. |
| void OnDidGetWebApplicationInfo(const WebApplicationInfo& web_app_info); |
| // Accessors, etc. |
| - void set_weak_observer(Observer* observer) { weak_observer_ = observer; } |
| const SkBitmap& badge_icon() const { return badge_icon_; } |
| const SkBitmap& primary_icon() const { return primary_icon_; } |
| ShortcutInfo& shortcut_info() { return shortcut_info_; } |
| private: |
| - friend class base::RefCounted<AddToHomescreenDataFetcher>; |
| - |
| - ~AddToHomescreenDataFetcher() override; |
| - |
| // WebContentsObserver: |
| bool OnMessageReceived(const IPC::Message& message, |
| content::RenderFrameHost* sender) override; |
| @@ -104,21 +89,14 @@ class AddToHomescreenDataFetcher |
| void OnFaviconFetched( |
| const favicon_base::FaviconRawBitmapResult& bitmap_result); |
| - // Creates the launcher icon from the given bitmap. shortcut_info_.url is |
| - // used to generate an icon if there is no bitmap in |bitmap_result| or the |
| - // bitmap is not large enough. |
| - SkBitmap CreateLauncherIconFromFaviconInBackground( |
| - const favicon_base::FaviconRawBitmapResult& bitmap_result); |
| - |
| // Creates the primary launcher icon from the given |icon|. |
| void CreateLauncherIcon(const SkBitmap& icon); |
| - SkBitmap CreateLauncherIconInBackground(const SkBitmap& icon); |
| // Notifies the observer that the shortcut data is all available. |
| - void NotifyObserver(const SkBitmap& icon); |
| + void NotifyObserver(const std::pair<SkBitmap, bool /*is_generated*/>& icon); |
| InstallableManager* installable_manager_; |
| - Observer* weak_observer_; |
| + Observer* observer_; |
| // The icons must only be set on the UI thread for thread safety. |
| SkBitmap raw_primary_icon_; |
| @@ -139,7 +117,8 @@ class AddToHomescreenDataFetcher |
| // Indicates whether to check WebAPK compatibility. |
| bool check_webapk_compatibility_; |
| bool is_waiting_for_web_application_info_; |
| - bool is_installable_check_complete_; |
| + |
| + base::WeakPtrFactory<AddToHomescreenDataFetcher> weak_ptr_factory_; |
| DISALLOW_COPY_AND_ASSIGN(AddToHomescreenDataFetcher); |
| }; |