 Chromium Code Reviews
 Chromium Code Reviews Issue 1261143004:
  Implement manifest icon downloader  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1261143004:
  Implement manifest icon downloader  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: chrome/browser/manifest/manifest_icon_downloader.h | 
| diff --git a/chrome/browser/manifest/manifest_icon_downloader.h b/chrome/browser/manifest/manifest_icon_downloader.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..d7fad6ff8d42e4cd3a10cb446d3fff49dc6c7967 | 
| --- /dev/null | 
| +++ b/chrome/browser/manifest/manifest_icon_downloader.h | 
| @@ -0,0 +1,61 @@ | 
| +// Copyright 2015 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef CHROME_BROWSER_MANIFEST_MANIFEST_ICON_DOWNLOADER_H_ | 
| +#define CHROME_BROWSER_MANIFEST_MANIFEST_ICON_DOWNLOADER_H_ | 
| + | 
| +#include "base/basictypes.h" | 
| +#include "base/bind.h" | 
| +#include "base/memory/ref_counted.h" | 
| +#include "content/public/browser/web_contents_observer.h" | 
| +#include "third_party/skia/include/core/SkBitmap.h" | 
| + | 
| +namespace content { | 
| +class WebContents; | 
| +} // namespace content | 
| + | 
| +namespace gfx { | 
| +class Size; | 
| +} // namespace gfx | 
| + | 
| +class GURL; | 
| + | 
| +class ManifestIconDownloader | 
| + : public content::WebContentsObserver { | 
| + public: | 
| + using IconFetchCallback = base::Callback<void(const SkBitmap&)>; | 
| + | 
| + explicit ManifestIconDownloader(content::WebContents* web_contents); | 
| + ~ManifestIconDownloader() override = default; | 
| + | 
| + // Downloads the icon located at icon_url. If the file contains multiple icons | 
| + // then it attempts to pick the one closest in size bigger than or | 
| + // equal to ideal_icon_size_in_dp, taking into account the density of the | 
| + // device. If a bigger icon is chosen then ,the icon is scaled down to be | 
| + // equal to ideal_icon_size_in_dp. | 
| + // The boolean return value indicates if the download could be successfully | 
| + // started. If this is false then the callback will NOT be called. | 
| 
mlamouri (slow - plz ping)
2015/08/07 10:11:12
Could you change the last two lines to:
Returns wh
 
Lalit Maganti
2015/08/07 13:04:30
Done.
 | 
| + bool Download(const GURL& icon_url, | 
| + int ideal_icon_size_in_dp, | 
| + const IconFetchCallback& callback); | 
| + | 
| + private: | 
| + // Callback run after an attempt to download the manifest icon has been made. | 
| 
mlamouri (slow - plz ping)
2015/08/07 10:11:11
nit: this comment is confusing because it might be
 
Lalit Maganti
2015/08/07 13:04:30
Fixed.
 | 
| + static void OnIconFetched(const int ideal_icon_size_in_px, | 
| + const IconFetchCallback& callback, | 
| + int id, | 
| + int http_status_code, | 
| + const GURL& url, | 
| + const std::vector<SkBitmap>& bitmaps, | 
| + const std::vector<gfx::Size>& sizes); | 
| + | 
| + static int FindClosestBitmapIndex(const int ideal_icon_size_in_px, | 
| + const std::vector<SkBitmap>& bitmaps); | 
| + | 
| + friend class ManifestIconDownloaderTest; | 
| + | 
| + DISALLOW_COPY_AND_ASSIGN(ManifestIconDownloader); | 
| +}; | 
| + | 
| +#endif // CHROME_BROWSER_MANIFEST_MANIFEST_ICON_DOWNLOADER_H_ |