Chromium Code Reviews| Index: chrome/browser/ui/app_list/arc/arc_app_list_prefs.h | 
| diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h | 
| index cc30435a60ca245da93194b22182ee5e2182b738..742dd5b94ddcdba5b1ce4b7e501fa0b246349ad2 100644 | 
| --- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h | 
| +++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.h | 
| @@ -199,11 +199,9 @@ class ArcAppListPrefs | 
| // Sets last launched time for the requested app. | 
| void SetLastLaunchTime(const std::string& app_id, const base::Time& time); | 
| - // Requests to load an app icon for specific scale factor. If the app or ARC | 
| - // bridge service is not ready, then defer this request until the app gets | 
| - // available. Once new icon is installed notifies an observer | 
| - // OnAppIconUpdated. | 
| - void RequestIcon(const std::string& app_id, ui::ScaleFactor scale_factor); | 
| + // Calls RequestIcon is not request is recorded. | 
| 
 
Luis Héctor Chávez
2017/03/15 20:28:51
nit: if no request is recorded?
 
xiyuan
2017/03/15 20:30:26
nit: not -> no ?
 
lgcheng
2017/03/15 22:05:34
Done.
 
 | 
| + void MaybeRequestIcon(const std::string& app_id, | 
| + ui::ScaleFactor scale_factor); | 
| // Sets notification enabled flag for given value. If the app or ARC bridge | 
| // service is not ready, then defer this request until the app gets | 
| @@ -249,6 +247,7 @@ class ArcAppListPrefs | 
| private: | 
| friend class ChromeLauncherControllerImplTest; | 
| + friend class ArcAppModelBuilderTest; | 
| // See the Create methods. | 
| ArcAppListPrefs( | 
| @@ -343,6 +342,12 @@ class ArcAppListPrefs | 
| ui::ScaleFactor scale_factor, | 
| bool install_succeed); | 
| + // Requests to load an app icon for specific scale factor. If the app or ARC | 
| + // bridge service is not ready, then defer this request until the app gets | 
| + // available. Once new icon is installed notifies an observer | 
| + // OnAppIconUpdated. | 
| + void RequestIcon(const std::string& app_id, ui::ScaleFactor scale_factor); | 
| + | 
| // This checks if app is not registered yet and in this case creates | 
| // non-launchable app entry. | 
| void MaybeAddNonLaunchableApp(const base::Optional<std::string>& name, | 
| @@ -369,6 +374,14 @@ class ArcAppListPrefs | 
| // some default app is not available yet. | 
| void MaybeSetDefaultAppLoadingTimeout(); | 
| + bool IsIconRequestRecorded(const std::string& app_id, | 
| + ui::ScaleFactor scale_factor) const; | 
| + | 
| + // Remove the IconRequestRecord associated with app_id. | 
| + void MaybeRemoveIconRequestRecord(const std::string& app_id); | 
| + | 
| + void ClearIconRequestRecord(); | 
| + | 
| Profile* const profile_; | 
| // Owned by the BrowserContext. | 
| @@ -387,10 +400,15 @@ class ArcAppListPrefs | 
| std::unordered_set<std::string> tracked_apps_; | 
| // Contains number of ARC packages that are currently installing. | 
| int installing_packages_count_ = 0; | 
| - // Keeps deferred icon load requests. Each app may contain several requests | 
| - // for different scale factor. Scale factor is defined by specific bit | 
| - // position. | 
| - std::map<std::string, uint32_t> request_icon_deferred_; | 
| + // Keeps record for icon request. Each app may contain several requests for | 
| + // different scale factor. Scale factor is defined by specific bit position. | 
| + // Mainly two usage: | 
| 
 
Luis Héctor Chávez
2017/03/15 20:28:51
nit: usages
 
lgcheng
2017/03/15 22:05:34
Done.
 
 | 
| + // 1. Keeps deferred icon load requests when apps are not ready. Request will | 
| + // be sent when apps becomes ready. | 
| + // 2. Keeps record of icon request sent to Android. In each user session, one | 
| + // request per app per scale_factor is allowed once. | 
| + // When Arc is disabled or the app is uninstalled the record will be erased. | 
| 
 
Luis Héctor Chávez
2017/03/15 20:28:51
nit: ARC. "uninstalled, the record"
 
lgcheng
2017/03/15 22:05:33
Done.
 
 | 
| + std::map<std::string, uint32_t> request_icon_recorded_; | 
| // True if this preference has been initialized once. | 
| bool is_initialized_ = false; | 
| // True if apps were restored. |