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
|
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_NOTIFICATIONS_NOTIFICATION_STORAGE_H_
#define CONTENT_BROWSER_NOTIFICATIONS_NOTIFICATION_STORAGE_H_
#include "content/browser/service_worker/service_worker_context_wrapper.h"
#include "content/common/content_export.h"
#include "content/public/browser/platform_notification_context.h"
#include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
namespace content {
// The NotificationStorage class is a wrapper around persistent storage, the
// Service Worker database, exposing APIs for read and write queries relating to
// persistent notifications.
class CONTENT_EXPORT NotificationStorage {
public:
explicit NotificationStorage(
scoped_refptr<ServiceWorkerContextWrapper> service_worker_context);
~NotificationStorage();
void WriteNotificationData(
const NotificationDatabaseData& data,
PlatformNotificationContext::WriteResultCallback callback);
void ReadNotificationDataAndRecordInteraction(
int64_t service_worker_registration_id,
const std::string& notification_id,
PlatformNotificationContext::Interaction interaction,
PlatformNotificationContext::ReadResultCallback callback);
private:
void OnWriteComplete(
const NotificationDatabaseData& data,
PlatformNotificationContext::WriteResultCallback callback,
blink::ServiceWorkerStatusCode status);
void OnReadCompleteUpdateInteraction(
int64_t service_worker_registration_id,
PlatformNotificationContext::Interaction interaction,
PlatformNotificationContext::ReadResultCallback callback,
const std::vector<std::string>& database_data,
blink::ServiceWorkerStatusCode status);
void OnInteractionUpdateComplete(
std::unique_ptr<NotificationDatabaseData> data,
PlatformNotificationContext::ReadResultCallback callback,
blink::ServiceWorkerStatusCode status);
scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_;
base::WeakPtrFactory<NotificationStorage> weak_ptr_factory_{
this}; // Must be last member.
};
} // namespace content
#endif // CONTENT_BROWSER_NOTIFICATIONS_NOTIFICATION_STORAGE_H_
|