blob: 9cb839dd1565ae0675d574e10171ff3581b6d5dd [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_MESSAGE_CENTER_NOTIFICATION_VIEW_CONTROLLER_H_
#define UI_MESSAGE_CENTER_NOTIFICATION_VIEW_CONTROLLER_H_
#include <string>
#include "ui/message_center/message_center_export.h"
namespace message_center {
class MessageView;
// A controller class to manage adding, removing and updating group
// notifications.
class MESSAGE_CENTER_EXPORT NotificationViewController {
public:
virtual ~NotificationViewController() = default;
// Returns the `MessageView` associated with `notification_id`
virtual MessageView* GetMessageViewForNotificationId(
const std::string& notification_id) = 0;
// Animate all notification views after a resize.
virtual void AnimateResize() = 0;
// Updates the notification id associated with a `MessageCenterView` and
// popup if required. We do this to covert an existing message view into
// a message view that acts as a container for grouped notifications.
// Creating a new view for this would make the code simpler but we need
// to do it in place to make it easier to animate the conversion between
// grouped and non-grouped notifications.
virtual void ConvertNotificationViewToGroupedNotificationView(
const std::string& ungrouped_notification_id,
const std::string& new_grouped_notification_id) = 0;
// Updates the notification id associated with a `MessageCenterView` and
// popup if needed. This is done to convert an existing grouped notification
// view back into a single notification view.
virtual void ConvertGroupedNotificationViewToNotificationView(
const std::string& grouped_notification_id,
const std::string& new_single_notification_id) = 0;
// Called to update child notification view inside a parent view.
virtual void OnChildNotificationViewUpdated(
const std::string& parent_notification_id,
const std::string& child_notification_id) = 0;
};
} // namespace message_center
#endif // UI_MESSAGE_CENTER_NOTIFICATION_VIEW_CONTROLLER_H_