Index: content/child/notifications/pending_notification.cc |
diff --git a/content/child/notifications/pending_notification.cc b/content/child/notifications/pending_notification.cc |
deleted file mode 100644 |
index c6365f84b5f605876e10c3392cb632e53135019c..0000000000000000000000000000000000000000 |
--- a/content/child/notifications/pending_notification.cc |
+++ /dev/null |
@@ -1,123 +0,0 @@ |
-// Copyright 2016 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/child/notifications/pending_notification.h" |
- |
-#include <algorithm> |
- |
-#include "base/barrier_closure.h" |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/location.h" |
-#include "base/metrics/histogram_macros.h" |
-#include "base/thread_task_runner_handle.h" |
-#include "content/common/notification_constants.h" |
-#include "content/public/common/notification_resources.h" |
-#include "skia/ext/image_operations.h" |
-#include "url/gurl.h" |
- |
-namespace content { |
- |
-namespace { |
- |
-// Scales down |icon| to fit within |max_size_px| if its width or height is |
-// larger than |max_size_px| and returns the result. Otherwise does nothing and |
-// returns |icon| unchanged. |
-SkBitmap ScaleDownIfNeeded(const SkBitmap& icon, int max_size_px) { |
- if (icon.width() > max_size_px || icon.height() > max_size_px) { |
- SCOPED_UMA_HISTOGRAM_TIMER("Notifications.Icon.ScaleDownTime"); |
- return skia::ImageOperations::Resize(icon, |
- skia::ImageOperations::RESIZE_BEST, |
- std::min(icon.width(), max_size_px), |
- std::min(icon.height(), max_size_px)); |
- } |
- return icon; |
-} |
- |
-} // namespace |
- |
-PendingNotification::PendingNotification( |
- const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner) |
- : main_task_runner_(main_task_runner), weak_factory_(this) {} |
- |
-PendingNotification::~PendingNotification() {} |
- |
-void PendingNotification::FetchResources( |
- const blink::WebNotificationData& notification_data, |
- const base::Closure& fetches_finished_callback) { |
- // TODO(mvanouwerkerk): Add a timeout mechanism: crbug.com/579137 |
- |
- size_t num_actions = notification_data.actions.size(); |
- action_icons_.resize(num_actions); |
- |
- size_t num_closures = 2 /* notification icon and badge */ + num_actions; |
- fetches_finished_barrier_closure_ = |
- base::BarrierClosure(num_closures, fetches_finished_callback); |
- |
- FetchImageResource(notification_data.icon, |
- base::Bind(&PendingNotification::DidFetchNotificationIcon, |
- weak_factory_.GetWeakPtr())); |
- FetchImageResource(notification_data.badge, |
- base::Bind(&PendingNotification::DidFetchBadge, |
- weak_factory_.GetWeakPtr())); |
- for (size_t i = 0; i < num_actions; i++) { |
- FetchImageResource(notification_data.actions[i].icon, |
- base::Bind(&PendingNotification::DidFetchActionIcon, |
- weak_factory_.GetWeakPtr(), i)); |
- } |
-} |
- |
-NotificationResources PendingNotification::GetResources() const { |
- NotificationResources resources; |
- resources.notification_icon = notification_icon_; |
- resources.badge = badge_; |
- resources.action_icons = action_icons_; |
- return resources; |
-} |
- |
-void PendingNotification::FetchImageResource( |
- const blink::WebURL& image_web_url, |
- const ImageLoadCompletedCallback& image_callback) { |
- if (image_web_url.isEmpty()) { |
- image_callback.Run(SkBitmap()); |
- return; |
- } |
- |
- // Explicitly convert the WebURL to a GURL before passing it to a different |
- // thread. This is important because WebURLs must not be passed between |
- // threads, and per base::Bind() semantics conversion would otherwise be done |
- // on the receiving thread. |
- GURL image_gurl(image_web_url); |
- |
- scoped_refptr<NotificationImageLoader> image_loader( |
- new NotificationImageLoader(image_callback, |
- base::ThreadTaskRunnerHandle::Get(), |
- main_task_runner_)); |
- image_loaders_.push_back(image_loader); |
- main_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&NotificationImageLoader::StartOnMainThread, |
- image_loader, image_gurl)); |
-} |
- |
-void PendingNotification::DidFetchNotificationIcon(const SkBitmap& bitmap) { |
- notification_icon_ = |
- ScaleDownIfNeeded(bitmap, kPlatformNotificationMaxIconSizePx); |
- fetches_finished_barrier_closure_.Run(); |
-} |
- |
-void PendingNotification::DidFetchBadge(const SkBitmap& bitmap) { |
- badge_ = ScaleDownIfNeeded(bitmap, kPlatformNotificationMaxBadgeSizePx); |
- fetches_finished_barrier_closure_.Run(); |
-} |
- |
-void PendingNotification::DidFetchActionIcon(size_t action_index, |
- const SkBitmap& bitmap) { |
- DCHECK_LT(action_index, action_icons_.size()); |
- |
- action_icons_[action_index] = |
- ScaleDownIfNeeded(bitmap, kPlatformNotificationMaxActionIconSizePx); |
- fetches_finished_barrier_closure_.Run(); |
-} |
- |
-} // namespace content |