Cache ARC++/crostini icons for app-list searches.

Currently individual ArcAppResult / CrostiniAppResult instance
keeps icon loader and the results will be recreated every time
the search is conducted (including suggestion chip). This means
the ARC++ / Crostini searchers always attempt to load the same
icon every time the app-list is shown and some query is searched.

This is apparently inefficient; this CL allows to cache the icon
images for such search results so that no further image loading
and decoding won't be conducted.

This CL doesn't change the performance numbers on the
LauncherAnimations test cases since they use dummy data. By
measuring on a real session with my test account, I see
improvements AnimationSmoothness.Peeking by ~10%. Mean 51.0 to
60.2 for 10 attempts, mode value improved from 41 to 58.

Bug: 978461
Test: manually
Change-Id: Ie34ad979d6fdf94addc2959ea74a4e4d9652add0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677260
Reviewed-by: Jenny Zhang <jennyz@chromium.org>
Reviewed-by: Alex Newcomer <newcomer@chromium.org>
Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
Commit-Queue: Jun Mukai <mukai@chromium.org>
Cr-Commit-Position: refs/heads/master@{#673417}
6 files changed