| Index: content/shell/browser/layout_test/layout_test_notification_manager.cc
 | 
| diff --git a/content/shell/browser/layout_test/layout_test_notification_manager.cc b/content/shell/browser/layout_test/layout_test_notification_manager.cc
 | 
| index cf078f9434dcb32ec88b19066f55a2372711bf52..791e370072dd3e4accf27933dc9f589cde28eebd 100644
 | 
| --- a/content/shell/browser/layout_test/layout_test_notification_manager.cc
 | 
| +++ b/content/shell/browser/layout_test/layout_test_notification_manager.cc
 | 
| @@ -4,187 +4,16 @@
 | 
|  
 | 
|  #include "content/shell/browser/layout_test/layout_test_notification_manager.h"
 | 
|  
 | 
| -#include "base/guid.h"
 | 
| -#include "base/strings/nullable_string16.h"
 | 
| -#include "base/strings/utf_string_conversions.h"
 | 
| -#include "content/public/browser/browser_thread.h"
 | 
| -#include "content/public/browser/desktop_notification_delegate.h"
 | 
| -#include "content/public/browser/notification_event_dispatcher.h"
 | 
|  #include "content/public/browser/permission_type.h"
 | 
| -#include "content/public/common/persistent_notification_status.h"
 | 
| -#include "content/public/common/platform_notification_data.h"
 | 
|  #include "content/shell/browser/layout_test/layout_test_browser_context.h"
 | 
|  #include "content/shell/browser/layout_test/layout_test_content_browser_client.h"
 | 
|  #include "content/shell/browser/layout_test/layout_test_permission_manager.h"
 | 
|  
 | 
|  namespace content {
 | 
| -namespace {
 | 
| -
 | 
| -// The Web Notification layout tests don't care about the lifetime of the
 | 
| -// Service Worker when a notificationclick event has been dispatched.
 | 
| -void OnEventDispatchComplete(PersistentNotificationStatus status) {}
 | 
| -
 | 
| -}  // namespace
 | 
| -
 | 
| -LayoutTestNotificationManager::LayoutTestNotificationManager()
 | 
| -    : weak_factory_(this) {}
 | 
|  
 | 
| +LayoutTestNotificationManager::LayoutTestNotificationManager() {}
 | 
|  LayoutTestNotificationManager::~LayoutTestNotificationManager() {}
 | 
|  
 | 
| -void LayoutTestNotificationManager::DisplayNotification(
 | 
| -    BrowserContext* browser_context,
 | 
| -    const std::string& notification_id,
 | 
| -    const GURL& origin,
 | 
| -    const PlatformNotificationData& notification_data,
 | 
| -    const NotificationResources& notification_resources,
 | 
| -    std::unique_ptr<DesktopNotificationDelegate> delegate,
 | 
| -    base::Closure* cancel_callback) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -  DCHECK(cancel_callback);
 | 
| -
 | 
| -  *cancel_callback = base::Bind(&LayoutTestNotificationManager::Close,
 | 
| -                                weak_factory_.GetWeakPtr(), notification_id);
 | 
| -
 | 
| -  ReplaceNotificationIfNeeded(notification_id);
 | 
| -
 | 
| -  non_persistent_notifications_[notification_id] = std::move(delegate);
 | 
| -  non_persistent_notifications_[notification_id]->NotificationDisplayed();
 | 
| -
 | 
| -  notification_id_map_[base::UTF16ToUTF8(notification_data.title)] =
 | 
| -      notification_id;
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::DisplayPersistentNotification(
 | 
| -    BrowserContext* browser_context,
 | 
| -    const std::string& notification_id,
 | 
| -    const GURL& service_worker_scope,
 | 
| -    const GURL& origin,
 | 
| -    const PlatformNotificationData& notification_data,
 | 
| -    const NotificationResources& notification_resources) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -
 | 
| -  ReplaceNotificationIfNeeded(notification_id);
 | 
| -
 | 
| -  PersistentNotification notification;
 | 
| -  notification.browser_context = browser_context;
 | 
| -  notification.origin = origin;
 | 
| -
 | 
| -  persistent_notifications_[notification_id] = notification;
 | 
| -
 | 
| -  notification_id_map_[base::UTF16ToUTF8(notification_data.title)] =
 | 
| -      notification_id;
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::ClosePersistentNotification(
 | 
| -    BrowserContext* browser_context,
 | 
| -    const std::string& notification_id) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -
 | 
| -  persistent_notifications_.erase(notification_id);
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::GetDisplayedNotifications(
 | 
| -    BrowserContext* browser_context,
 | 
| -    const DisplayedNotificationsCallback& callback) {
 | 
| -  auto displayed_notifications = base::MakeUnique<std::set<std::string>>();
 | 
| -  BrowserThread::PostTask(
 | 
| -      BrowserThread::UI, FROM_HERE,
 | 
| -      base::Bind(callback, base::Passed(&displayed_notifications),
 | 
| -                 false /* supports_synchronization */));
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::SimulateClick(
 | 
| -    const std::string& title,
 | 
| -    int action_index,
 | 
| -    const base::NullableString16& reply) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -
 | 
| -  const auto notification_id_iter = notification_id_map_.find(title);
 | 
| -  if (notification_id_iter == notification_id_map_.end())
 | 
| -    return;
 | 
| -
 | 
| -  const std::string& notification_id = notification_id_iter->second;
 | 
| -
 | 
| -  const auto persistent_iter = persistent_notifications_.find(notification_id);
 | 
| -  const auto non_persistent_iter =
 | 
| -      non_persistent_notifications_.find(notification_id);
 | 
| -
 | 
| -  if (persistent_iter != persistent_notifications_.end()) {
 | 
| -    DCHECK(non_persistent_iter == non_persistent_notifications_.end());
 | 
| -
 | 
| -    const PersistentNotification& notification = persistent_iter->second;
 | 
| -    NotificationEventDispatcher::GetInstance()->DispatchNotificationClickEvent(
 | 
| -        notification.browser_context, notification_id, notification.origin,
 | 
| -        action_index, reply, base::Bind(&OnEventDispatchComplete));
 | 
| -  } else if (non_persistent_iter != non_persistent_notifications_.end()) {
 | 
| -    DCHECK_EQ(action_index, -1) << "Action buttons are only supported for "
 | 
| -                                   "persistent notifications";
 | 
| -
 | 
| -    non_persistent_iter->second->NotificationClick();
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::SimulateClose(const std::string& title,
 | 
| -                                                  bool by_user) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -
 | 
| -  const auto notification_id_iter = notification_id_map_.find(title);
 | 
| -  if (notification_id_iter == notification_id_map_.end())
 | 
| -    return;
 | 
| -
 | 
| -  const std::string& notification_id = notification_id_iter->second;
 | 
| -
 | 
| -  const auto& persistent_iter = persistent_notifications_.find(notification_id);
 | 
| -  if (persistent_iter == persistent_notifications_.end())
 | 
| -    return;
 | 
| -
 | 
| -  const PersistentNotification& notification = persistent_iter->second;
 | 
| -  NotificationEventDispatcher::GetInstance()->DispatchNotificationCloseEvent(
 | 
| -      notification.browser_context, notification_id, notification.origin,
 | 
| -      by_user, base::Bind(&OnEventDispatchComplete));
 | 
| -}
 | 
| -
 | 
| -blink::mojom::PermissionStatus
 | 
| -LayoutTestNotificationManager::CheckPermissionOnUIThread(
 | 
| -    BrowserContext* browser_context,
 | 
| -    const GURL& origin,
 | 
| -    int render_process_id) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -  return CheckPermission(origin);
 | 
| -}
 | 
| -
 | 
| -blink::mojom::PermissionStatus
 | 
| -LayoutTestNotificationManager::CheckPermissionOnIOThread(
 | 
| -    ResourceContext* resource_context,
 | 
| -    const GURL& origin,
 | 
| -    int render_process_id) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::IO);
 | 
| -  return CheckPermission(origin);
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::Close(const std::string& notification_id) {
 | 
| -  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 | 
| -  auto iterator = non_persistent_notifications_.find(notification_id);
 | 
| -  if (iterator == non_persistent_notifications_.end())
 | 
| -    return;
 | 
| -
 | 
| -  iterator->second->NotificationClosed();
 | 
| -}
 | 
| -
 | 
| -void LayoutTestNotificationManager::ReplaceNotificationIfNeeded(
 | 
| -    const std::string& notification_id) {
 | 
| -  const auto persistent_iter = persistent_notifications_.find(notification_id);
 | 
| -  const auto non_persistent_iter =
 | 
| -      non_persistent_notifications_.find(notification_id);
 | 
| -
 | 
| -  if (persistent_iter != persistent_notifications_.end()) {
 | 
| -    DCHECK(non_persistent_iter == non_persistent_notifications_.end());
 | 
| -    persistent_notifications_.erase(persistent_iter);
 | 
| -  } else if (non_persistent_iter != non_persistent_notifications_.end()) {
 | 
| -    non_persistent_iter->second->NotificationClosed();
 | 
| -    non_persistent_notifications_.erase(non_persistent_iter);
 | 
| -  }
 | 
| -}
 | 
|  
 | 
|  blink::mojom::PermissionStatus
 | 
|  LayoutTestNotificationManager::CheckPermission(const GURL& origin) {
 | 
| 
 |