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
75
76
77
78
79
80
81
82
83
84
content / browser / background_fetch / background_fetch_registration_id.h [blame]
// Copyright 2017 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_BACKGROUND_FETCH_BACKGROUND_FETCH_REGISTRATION_ID_H_
#define CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_REGISTRATION_ID_H_
#include <stdint.h>
#include <string>
#include "content/common/content_export.h"
#include "third_party/blink/public/common/storage_key/storage_key.h"
namespace content {
// The Background Fetch registration id corresponds to the information required
// to uniquely identify a Background Fetch registration in scope of a profile.
class CONTENT_EXPORT BackgroundFetchRegistrationId {
public:
// Constructs a null ID.
BackgroundFetchRegistrationId();
// See corresponding getters for descriptions of |developer_id| and
// |unique_id|.
BackgroundFetchRegistrationId(int64_t service_worker_registration_id,
const blink::StorageKey& storage_key,
const std::string& developer_id,
const std::string& unique_id);
// Copyable and movable.
BackgroundFetchRegistrationId(const BackgroundFetchRegistrationId& other);
BackgroundFetchRegistrationId(BackgroundFetchRegistrationId&& other);
BackgroundFetchRegistrationId& operator=(
const BackgroundFetchRegistrationId& other);
BackgroundFetchRegistrationId& operator=(
BackgroundFetchRegistrationId&& other);
~BackgroundFetchRegistrationId();
// Return whether the |other| registration id are identical or different.
bool operator==(const BackgroundFetchRegistrationId& other) const;
bool operator!=(const BackgroundFetchRegistrationId& other) const;
// Enables this type to be used in an std::map and std::set.
bool operator<(const BackgroundFetchRegistrationId& other) const;
// Returns whether this registration id refers to valid data.
bool is_null() const;
int64_t service_worker_registration_id() const {
return service_worker_registration_id_;
}
const blink::StorageKey& storage_key() const { return storage_key_; }
// The IDL 'id' attribute provided by the website.
//
// Should not be used as a primary key in any data structures, since not only
// are they per-ServiceWorkerRegistration, but there can exist two or more
// different Background Fetch registrations at once with the same
// |developer_id|. For example, if JavaScript holds a reference to a
// BackgroundFetchRegistration object after that registration is
// completed/failed/aborted and then the website creates a new registration
// with the same |developer_id|, the original BackgroundFetchRegistration
// object is still valid and must continue to refer to the old data.
const std::string& developer_id() const { return developer_id_; }
// The opaque globally unique ID for the Background Fetch registration.
//
// Values are never re-used. Internal only, never exposed to JavaScript.
// Always use this instead of |developer_id| (APIs that receive a
// |developer_id| from the website must look up the associated |unique_id| as
// soon as possible).
const std::string& unique_id() const { return unique_id_; }
private:
int64_t service_worker_registration_id_;
blink::StorageKey storage_key_;
std::string developer_id_;
std::string unique_id_;
};
} // namespace content
#endif // CONTENT_BROWSER_BACKGROUND_FETCH_BACKGROUND_FETCH_REGISTRATION_ID_H_