chromium/content/browser/notifications/notification_database.cc

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/browser/notifications/notification_database.h"

#include <string>
#include <utility>

#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "content/browser/notifications/notification_database_conversions.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_database_data.h"
#include "storage/common/database/database_identifier.h"
#include "third_party/blink/public/common/notifications/notification_resources.h"
#include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h"
#include "third_party/leveldatabase/env_chromium.h"
#include "third_party/leveldatabase/leveldb_chrome.h"
#include "third_party/leveldatabase/src/include/leveldb/db.h"
#include "third_party/leveldatabase/src/include/leveldb/filter_policy.h"
#include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
#include "url/gurl.h"

// Notification LevelDB database schema (in alphabetized order)
// =======================
//
// key: "DATA:" <origin identifier> '\x00' <notification_id>
// value: String containing the NotificationDatabaseDataProto protocol buffer
//        in serialized form.
//
// key: "RESOURCES:" <origin identifier> '\x00' <notification_id>
// value: String containing the NotificationDatabaseResourcesProto protocol
//        buffer in serialized form.

namespace content {
namespace {

// Keys of the fields defined in the database.
const char kDataKeyPrefix[] =;
const char kResourcesKeyPrefix[] =;

// Separates the components of compound keys.
const char kNotificationKeySeparator =;

// Converts the LevelDB |status| to one of the notification database's values.
NotificationDatabase::Status LevelDBStatusToNotificationDatabaseStatus(
    const leveldb::Status& status) {}

// Creates a prefix for the data entries based on |origin|.
std::string CreateDataPrefix(const GURL& origin) {}

// Creates the compound data key in which notification data is stored.
std::string CreateDataKey(const GURL& origin,
                          const std::string& notification_id) {}

// Creates a prefix for the resources entries based on |origin|.
std::string CreateResourcesPrefix(const GURL& origin) {}

// Creates the compound data key in which notification resources are stored.
std::string CreateResourcesKey(const GURL& origin,
                               const std::string& notification_id) {}

// Deserializes data in |serialized_data| to |notification_database_data|.
// Will return if the deserialization was successful.
NotificationDatabase::Status DeserializedNotificationData(
    const std::string& serialized_data,
    NotificationDatabaseData* notification_database_data) {}

// Deserializes resources in |serialized_resources| to |notification_resources|.
// Will return if the deserialization was successful.
NotificationDatabase::Status DeserializedNotificationResources(
    const std::string& serialized_resources,
    blink::NotificationResources* notification_resources) {}

// Updates the time of the last click on the notification, and the first if
// necessary.
void UpdateNotificationTimestamps(NotificationDatabaseData* data) {}

}  // namespace

NotificationDatabase::NotificationDatabase(const base::FilePath& path,
                                           UkmCallback callback)
    :{}

NotificationDatabase::~NotificationDatabase() {}

NotificationDatabase::Status NotificationDatabase::Open(
    bool create_if_missing) {}

NotificationDatabase::Status NotificationDatabase::ReadNotificationData(
    const std::string& notification_id,
    const GURL& origin,
    NotificationDatabaseData* notification_database_data) const {}

NotificationDatabase::Status NotificationDatabase::ReadNotificationResources(
    const std::string& notification_id,
    const GURL& origin,
    blink::NotificationResources* notification_resources) const {}

NotificationDatabase::Status
NotificationDatabase::ReadNotificationDataAndRecordInteraction(
    const std::string& notification_id,
    const GURL& origin,
    PlatformNotificationContext::Interaction interaction,
    NotificationDatabaseData* notification_database_data) {}

NotificationDatabase::Status NotificationDatabase::ForEachNotificationData(
    ReadAllNotificationsCallback callback) const {}

NotificationDatabase::Status
NotificationDatabase::ForEachNotificationDataForServiceWorkerRegistration(
    const GURL& origin,
    int64_t service_worker_registration_id,
    ReadAllNotificationsCallback callback) const {}

NotificationDatabase::Status
NotificationDatabase::ReadAllNotificationDataForOrigin(
    const GURL& origin,
    std::vector<NotificationDatabaseData>* notification_data_vector) const {}

NotificationDatabase::Status
NotificationDatabase::ReadAllNotificationDataForServiceWorkerRegistration(
    const GURL& origin,
    int64_t service_worker_registration_id,
    std::optional<bool> is_shown_by_browser,
    std::vector<NotificationDatabaseData>* notification_data_vector) const {}

NotificationDatabase::Status NotificationDatabase::WriteNotificationData(
    const GURL& origin,
    const NotificationDatabaseData& notification_data) {}

NotificationDatabase::Status NotificationDatabase::DeleteNotificationData(
    const std::string& notification_id,
    const GURL& origin) {}

NotificationDatabase::Status NotificationDatabase::DeleteNotificationResources(
    const std::string& notification_id,
    const GURL& origin) {}

NotificationDatabase::Status
NotificationDatabase::DeleteAllNotificationDataForOrigin(
    const GURL& origin,
    const std::string& tag,
    std::optional<bool> is_shown_by_browser,
    std::set<std::string>* deleted_notification_ids) {}

NotificationDatabase::Status
NotificationDatabase::DeleteAllNotificationDataForServiceWorkerRegistration(
    const GURL& origin,
    int64_t service_worker_registration_id,
    std::set<std::string>* deleted_notification_ids) {}

NotificationDatabase::Status NotificationDatabase::Destroy() {}

NotificationDatabase::Status
NotificationDatabase::ReadAllNotificationDataInternal(
    const GURL& origin,
    int64_t service_worker_registration_id,
    std::optional<bool> is_shown_by_browser,
    std::vector<NotificationDatabaseData>* notification_data_vector) const {}

NotificationDatabase::Status
NotificationDatabase::ForEachNotificationDataInternal(
    const GURL& origin,
    int64_t service_worker_registration_id,
    std::optional<bool> is_shown_by_browser,
    ReadAllNotificationsCallback callback) const {}

NotificationDatabase::Status
NotificationDatabase::DeleteAllNotificationDataInternal(
    const GURL& origin,
    const std::string& tag,
    std::optional<bool> is_shown_by_browser,
    int64_t service_worker_registration_id,
    std::set<std::string>* deleted_notification_ids) {}

}  // namespace content