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

Unified Diff: content/renderer/image_downloader/single_image_downloader.cc

Issue 2538853002: Media Remoting: Draw remoting interstitial on poster image. (Closed)
Patch Set: Addressed comments. Created 4 years 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
Index: content/renderer/image_downloader/single_image_downloader.cc
diff --git a/content/renderer/image_downloader/single_image_downloader.cc b/content/renderer/image_downloader/single_image_downloader.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b62f5eb5010f34a9662918968e92521c8cc6b68b
--- /dev/null
+++ b/content/renderer/image_downloader/single_image_downloader.cc
@@ -0,0 +1,58 @@
+// 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.
+
+#include "content/renderer/image_downloader/single_image_downloader.h"
+
+#include "base/bind.h"
+#include "base/logging.h"
+
+namespace content {
+
+// Static
+void SingleImageDownloader::DownloadImage(
+ const base::WeakPtr<RenderFrame>& render_frame,
+ const GURL& url,
+ const DownloadImageCallback& cb) {
+ if (cb.is_null())
miu 2016/12/03 01:05:31 Should be DCHECK().
xjz 2016/12/06 19:50:55 Done.
+ return;
+
+ if (!render_frame)
+ cb.Run(SkBitmap());
miu 2016/12/03 01:05:31 ditto: Should be DCHECK().
xjz 2016/12/06 19:50:55 Done.
+
+ // Will request to download the image and run |cb| when done. This will be
+ // self-destructed after done or when |this| is destructed.
+ new SingleImageDownloader(render_frame.get(), url, false, false, cb);
+}
+
+SingleImageDownloader::SingleImageDownloader(
+ RenderFrame* render_frame,
+ const GURL& url,
+ bool is_favicon,
+ bool bypass_cache,
+ const DownloadImageCallback& callback)
+ : RenderFrameObserver(render_frame), image_downloader_(render_frame) {
+ DCHECK(render_frame);
+ DCHECK(callback);
+ image_downloader_.DownloadImage(
+ url, is_favicon, bypass_cache,
+ base::Bind(&SingleImageDownloader::DidDownloadImage,
+ base::Unretained(this), callback));
+}
+
+SingleImageDownloader::~SingleImageDownloader() {}
+
+void SingleImageDownloader::DidDownloadImage(
+ const DownloadImageCallback& callback,
+ int http_status_code,
+ const std::vector<SkBitmap>& images) {
+ DCHECK(callback);
+ callback.Run(images[0]);
miu 2016/12/03 01:05:31 Can the |images| vector ever be empty? How about:
xjz 2016/12/06 19:50:55 Done.
+ delete this;
+}
+
+void SingleImageDownloader::OnDestruct() {
+ delete this;
miu 2016/12/03 01:05:30 This second path-to-delete is dangerous and could
xjz 2016/12/06 19:50:55 I don't think this will cause duplicated delete. T
xjz 2016/12/06 23:58:17 Now after making ImageDownloaderBase run callbacks
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698