blob: 96e8e565fcb88894c2e2aceb8084138ffd2a038e [file] [log] [blame]
// Copyright 2018 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 "chrome/browser/notifications/system_notification_helper.h"
#include "chrome/browser/notifications/notification_display_service_impl.h"
namespace {
SystemNotificationHelper* g_instance = nullptr;
} // namespace
SystemNotificationHelper* SystemNotificationHelper::GetInstance() {
DCHECK(g_instance);
return g_instance;
}
SystemNotificationHelper::SystemNotificationHelper() {
DCHECK(!g_instance);
g_instance = this;
}
SystemNotificationHelper::~SystemNotificationHelper() {
DCHECK_EQ(g_instance, this);
g_instance = nullptr;
if (system_service_)
system_service_->Shutdown();
}
void SystemNotificationHelper::Display(
const message_center::Notification& notification) {
GetSystemService()->Display(NotificationHandler::Type::TRANSIENT,
notification, /*metadata=*/nullptr);
}
void SystemNotificationHelper::Close(const std::string& notification_id) {
GetSystemService()->Close(NotificationHandler::Type::TRANSIENT,
notification_id);
}
void SystemNotificationHelper::SetSystemServiceForTesting(
std::unique_ptr<NotificationDisplayService> service) {
system_service_ = std::move(service);
}
NotificationDisplayService* SystemNotificationHelper::GetSystemService() {
if (!system_service_)
system_service_ = std::make_unique<NotificationDisplayServiceImpl>(nullptr);
return system_service_.get();
}