1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_PUBLIC_NOTIFICATION_DATA_H_
#define CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_PUBLIC_NOTIFICATION_DATA_H_
#include <map>
#include <string>
#include <vector>
#include "chrome/browser/notifications/scheduler/public/icon_bundle.h"
#include "chrome/browser/notifications/scheduler/public/notification_scheduler_types.h"
namespace notifications {
// Contains data used to display a scheduled notification. All fields will be
// persisted to disk as protobuffer NotificationData. The clients of
// notification scheduler can optionally use the texts or icon in this struct,
// or retrieving the hard coded assets and rewrites the data before notification
// is shown in NotificationSchedulerClient::BeforeShowNotification().
struct NotificationData {
// Represents a button on the notification UI.
struct Button {
Button();
Button(const Button& other);
Button(Button&& other);
Button& operator=(const Button& other);
Button& operator=(Button&& other);
~Button();
bool operator==(const Button& other) const;
// The text associated with the button.
std::u16string text;
// The button type.
ActionButtonType type;
// The id of the button.
std::string id;
};
using CustomData = std::map<std::string, std::string>;
NotificationData();
NotificationData(const NotificationData& other);
NotificationData(NotificationData&& other);
NotificationData& operator=(const NotificationData& other);
NotificationData& operator=(NotificationData&& other);
~NotificationData();
bool operator==(const NotificationData& other) const;
// The title of the notification.
std::u16string title;
// The body text of the notification.
std::u16string message;
// The icons of the notification.
std::map<IconType, IconBundle> icons;
// Custom key value pair data associated with each notification. Will be sent
// back after user interaction.
CustomData custom_data;
// A list of buttons on the notification.
std::vector<Button> buttons;
};
} // namespace notifications
#endif // CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_PUBLIC_NOTIFICATION_DATA_H_
|