Bug 1883861 - Part 2: Remove unnecessary SSE2 check for x86 memory barrier. r=jandem
[gecko.git] / dom / serviceworkers / ServiceWorkerDescriptor.cpp
blob898f271feaf32e933be77d95d4c41fe952c4ea5d
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "ServiceWorkerDescriptor.h"
8 #include "mozilla/dom/IPCServiceWorkerDescriptor.h"
9 #include "mozilla/dom/ServiceWorkerBinding.h"
10 #include "mozilla/ipc/PBackgroundSharedTypes.h"
12 namespace mozilla::dom {
14 using mozilla::ipc::PrincipalInfo;
15 using mozilla::ipc::PrincipalInfoToPrincipal;
17 ServiceWorkerDescriptor::ServiceWorkerDescriptor(
18 uint64_t aId, uint64_t aRegistrationId, uint64_t aRegistrationVersion,
19 nsIPrincipal* aPrincipal, const nsACString& aScope,
20 const nsACString& aScriptURL, ServiceWorkerState aState)
21 : mData(MakeUnique<IPCServiceWorkerDescriptor>()) {
22 MOZ_ALWAYS_SUCCEEDS(
23 PrincipalToPrincipalInfo(aPrincipal, &mData->principalInfo()));
25 mData->id() = aId;
26 mData->registrationId() = aRegistrationId;
27 mData->registrationVersion() = aRegistrationVersion;
28 mData->scope() = aScope;
29 mData->scriptURL() = aScriptURL;
30 mData->state() = aState;
31 // Set HandlesFetch as true in default
32 mData->handlesFetch() = true;
35 ServiceWorkerDescriptor::ServiceWorkerDescriptor(
36 uint64_t aId, uint64_t aRegistrationId, uint64_t aRegistrationVersion,
37 const mozilla::ipc::PrincipalInfo& aPrincipalInfo, const nsACString& aScope,
38 const nsACString& aScriptURL, ServiceWorkerState aState)
39 : mData(MakeUnique<IPCServiceWorkerDescriptor>(
40 aId, aRegistrationId, aRegistrationVersion, aPrincipalInfo,
41 nsCString(aScriptURL), nsCString(aScope), aState, true)) {}
43 ServiceWorkerDescriptor::ServiceWorkerDescriptor(
44 const IPCServiceWorkerDescriptor& aDescriptor)
45 : mData(MakeUnique<IPCServiceWorkerDescriptor>(aDescriptor)) {}
47 ServiceWorkerDescriptor::ServiceWorkerDescriptor(
48 const ServiceWorkerDescriptor& aRight) {
49 operator=(aRight);
52 ServiceWorkerDescriptor& ServiceWorkerDescriptor::operator=(
53 const ServiceWorkerDescriptor& aRight) {
54 if (this == &aRight) {
55 return *this;
57 mData.reset();
58 mData = MakeUnique<IPCServiceWorkerDescriptor>(*aRight.mData);
59 return *this;
62 ServiceWorkerDescriptor::ServiceWorkerDescriptor(
63 ServiceWorkerDescriptor&& aRight)
64 : mData(std::move(aRight.mData)) {}
66 ServiceWorkerDescriptor& ServiceWorkerDescriptor::operator=(
67 ServiceWorkerDescriptor&& aRight) {
68 mData.reset();
69 mData = std::move(aRight.mData);
70 return *this;
73 ServiceWorkerDescriptor::~ServiceWorkerDescriptor() = default;
75 bool ServiceWorkerDescriptor::operator==(
76 const ServiceWorkerDescriptor& aRight) const {
77 return *mData == *aRight.mData;
80 uint64_t ServiceWorkerDescriptor::Id() const { return mData->id(); }
82 uint64_t ServiceWorkerDescriptor::RegistrationId() const {
83 return mData->registrationId();
86 uint64_t ServiceWorkerDescriptor::RegistrationVersion() const {
87 return mData->registrationVersion();
90 const mozilla::ipc::PrincipalInfo& ServiceWorkerDescriptor::PrincipalInfo()
91 const {
92 return mData->principalInfo();
95 Result<nsCOMPtr<nsIPrincipal>, nsresult> ServiceWorkerDescriptor::GetPrincipal()
96 const {
97 AssertIsOnMainThread();
98 return PrincipalInfoToPrincipal(mData->principalInfo());
101 const nsCString& ServiceWorkerDescriptor::Scope() const {
102 return mData->scope();
105 const nsCString& ServiceWorkerDescriptor::ScriptURL() const {
106 return mData->scriptURL();
109 ServiceWorkerState ServiceWorkerDescriptor::State() const {
110 return mData->state();
113 void ServiceWorkerDescriptor::SetState(ServiceWorkerState aState) {
114 mData->state() = aState;
117 void ServiceWorkerDescriptor::SetRegistrationVersion(uint64_t aVersion) {
118 MOZ_DIAGNOSTIC_ASSERT(aVersion > mData->registrationVersion());
119 mData->registrationVersion() = aVersion;
122 bool ServiceWorkerDescriptor::HandlesFetch() const {
123 return mData->handlesFetch();
126 void ServiceWorkerDescriptor::SetHandlesFetch(bool aHandlesFetch) {
127 mData->handlesFetch() = aHandlesFetch;
130 bool ServiceWorkerDescriptor::Matches(
131 const ServiceWorkerDescriptor& aDescriptor) const {
132 return Id() == aDescriptor.Id() && Scope() == aDescriptor.Scope() &&
133 ScriptURL() == aDescriptor.ScriptURL() &&
134 PrincipalInfo() == aDescriptor.PrincipalInfo();
137 const IPCServiceWorkerDescriptor& ServiceWorkerDescriptor::ToIPC() const {
138 return *mData;
141 } // namespace mozilla::dom