Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Unified Diff: chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h

Issue 2968693003: [Android Webapps] Make AddToHomescreenDataFetcher easier to test (Closed)
Patch Set: Merge branch 'master' into homescreen_fetcher_weak_ptr2 Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..f2750666c64f40896a9a0de94bbc28ae9068cba2 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,10 @@
#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"
-#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
#include "base/task/cancelable_task_tracker.h"
#include "base/timer/timer.h"
@@ -18,20 +20,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 +38,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 +50,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 +61,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 +90,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 +118,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);
};
« no previous file with comments | « no previous file | chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698