blob: 5bbda24068ddbd09f340acb2a86519a21038c097 [file] [log] [blame]
// Copyright 2016 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_NOTIFICATION_COMMON_H_
#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_COMMON_H_
#include "base/feature_list.h"
#include "chrome/browser/notifications/notification_handler.h"
#include "url/gurl.h"
class GURL;
class Profile;
// Shared functionality for both in page and persistent notification
class NotificationCommon {
public:
// A struct that contains extra data about a notification specific to one of
// the above types.
struct Metadata {
virtual ~Metadata();
NotificationHandler::Type type;
};
// Open the Notification settings screen when clicking the right button.
static void OpenNotificationSettings(Profile* profile, const GURL& origin);
};
// Metadata for PERSISTENT notifications.
struct PersistentNotificationMetadata : public NotificationCommon::Metadata {
PersistentNotificationMetadata();
~PersistentNotificationMetadata() override;
static const PersistentNotificationMetadata* From(const Metadata* metadata);
GURL service_worker_scope;
bool is_suspicious = false;
// Skips appending UA buttons such as "Unsubscribe" and "Site Settings".
// Developer buttons are unaffected.
bool skip_ua_buttons = false;
};
// Metadata for NON_PERSISTENT notifications.
struct NonPersistentNotificationMetadata : public NotificationCommon::Metadata {
NonPersistentNotificationMetadata();
~NonPersistentNotificationMetadata() override;
static const NonPersistentNotificationMetadata* From(
const Metadata* metadata);
// This is empty when used for a worker.
GURL document_url;
};
#endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_COMMON_H_