Skip to content

Commit 9feaf55

Browse files
committed
Bug 1753919 - Remove copy constructor from AndroidWebAuthnResult. r=geckoview-reviewers,agi
Let's remove copy situation of `AndroidWebAuthnResult`. Differential Revision: https://phabricator.services.mozilla.com/D137975
1 parent b2edc69 commit 9feaf55

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

dom/webauthn/AndroidWebAuthnTokenManager.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -229,22 +229,22 @@ RefPtr<U2FRegisterPromise> AndroidWebAuthnTokenManager::Register(
229229
// This is likely running on the main thread, so we'll always dispatch
230230
// to the background for state updates.
231231
MozPromise<AndroidWebAuthnResult, AndroidWebAuthnResult,
232-
false>::FromGeckoResult(geckoResult)
232+
true>::FromGeckoResult(geckoResult)
233233
->Then(
234234
GetMainThreadSerialEventTarget(), __func__,
235-
[self = std::move(self)](const AndroidWebAuthnResult& aValue) {
236-
self->HandleRegisterResult(aValue);
235+
[self = std::move(self)](AndroidWebAuthnResult&& aValue) {
236+
self->HandleRegisterResult(std::move(aValue));
237237
},
238-
[self = std::move(self)](const AndroidWebAuthnResult& aValue) {
239-
self->HandleRegisterResult(aValue);
238+
[self = std::move(self)](AndroidWebAuthnResult&& aValue) {
239+
self->HandleRegisterResult(std::move(aValue));
240240
});
241241
}));
242242

243243
return mRegisterPromise.Ensure(__func__);
244244
}
245245

246246
void AndroidWebAuthnTokenManager::HandleRegisterResult(
247-
const AndroidWebAuthnResult& aResult) {
247+
AndroidWebAuthnResult&& aResult) {
248248
if (!gAndroidPBackgroundThread) {
249249
// Promise is already rejected when shutting down background thread
250250
return;
@@ -262,7 +262,8 @@ void AndroidWebAuthnTokenManager::HandleRegisterResult(
262262
} else {
263263
gAndroidPBackgroundThread->Dispatch(NS_NewRunnableFunction(
264264
"AndroidWebAuthnTokenManager::RegisterComplete",
265-
[self = RefPtr<AndroidWebAuthnTokenManager>(this), aResult]() {
265+
[self = RefPtr<AndroidWebAuthnTokenManager>(this),
266+
aResult = std::move(aResult)]() {
266267
CryptoBuffer emptyBuffer;
267268
nsTArray<WebAuthnExtensionResult> extensions;
268269
WebAuthnMakeCredentialResult result(
@@ -350,22 +351,22 @@ RefPtr<U2FSignPromise> AndroidWebAuthnTokenManager::Sign(
350351
extensionsBundle);
351352
auto geckoResult = java::GeckoResult::LocalRef(std::move(result));
352353
MozPromise<AndroidWebAuthnResult, AndroidWebAuthnResult,
353-
false>::FromGeckoResult(geckoResult)
354+
true>::FromGeckoResult(geckoResult)
354355
->Then(
355356
GetMainThreadSerialEventTarget(), __func__,
356-
[self = std::move(self)](const AndroidWebAuthnResult& aValue) {
357-
self->HandleSignResult(aValue);
357+
[self = std::move(self)](AndroidWebAuthnResult&& aValue) {
358+
self->HandleSignResult(std::move(aValue));
358359
},
359-
[self = std::move(self)](const AndroidWebAuthnResult& aValue) {
360-
self->HandleSignResult(aValue);
360+
[self = std::move(self)](AndroidWebAuthnResult&& aValue) {
361+
self->HandleSignResult(std::move(aValue));
361362
});
362363
}));
363364

364365
return mSignPromise.Ensure(__func__);
365366
}
366367

367368
void AndroidWebAuthnTokenManager::HandleSignResult(
368-
const AndroidWebAuthnResult& aResult) {
369+
AndroidWebAuthnResult&& aResult) {
369370
if (!gAndroidPBackgroundThread) {
370371
// Promise is already rejected when shutting down background thread
371372
return;
@@ -383,7 +384,8 @@ void AndroidWebAuthnTokenManager::HandleSignResult(
383384
} else {
384385
gAndroidPBackgroundThread->Dispatch(NS_NewRunnableFunction(
385386
"AndroidWebAuthnTokenManager::SignComplete",
386-
[self = RefPtr<AndroidWebAuthnTokenManager>(this), aResult]() {
387+
[self = RefPtr<AndroidWebAuthnTokenManager>(this),
388+
aResult = std::move(aResult)]() {
387389
CryptoBuffer emptyBuffer;
388390

389391
nsTArray<WebAuthnExtensionResult> emptyExtensions;

dom/webauthn/AndroidWebAuthnTokenManager.h

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,8 @@ class AndroidWebAuthnResult {
8080
}
8181
}
8282

83-
AndroidWebAuthnResult(const AndroidWebAuthnResult& aOther)
84-
: mAttObj(aOther.mAttObj.InfallibleClone()),
85-
mKeyHandle(aOther.mKeyHandle.InfallibleClone()),
86-
mClientDataJSON(aOther.mClientDataJSON),
87-
mAuthData(aOther.mAuthData.InfallibleClone()),
88-
mSignature(aOther.mSignature.InfallibleClone()),
89-
mUserHandle(aOther.mUserHandle.InfallibleClone()),
90-
mErrorCode(aOther.mErrorCode) {}
83+
AndroidWebAuthnResult(const AndroidWebAuthnResult&) = delete;
84+
AndroidWebAuthnResult(AndroidWebAuthnResult&&) = default;
9185

9286
// Attestation-only
9387
CryptoBuffer mAttObj;
@@ -126,9 +120,9 @@ class AndroidWebAuthnTokenManager final : public U2FTokenTransport {
126120
static AndroidWebAuthnTokenManager* GetInstance();
127121

128122
private:
129-
void HandleRegisterResult(const AndroidWebAuthnResult& aResult);
123+
void HandleRegisterResult(AndroidWebAuthnResult&& aResult);
130124

131-
void HandleSignResult(const AndroidWebAuthnResult& aResult);
125+
void HandleSignResult(AndroidWebAuthnResult&& aResult);
132126

133127
void ClearPromises() {
134128
mRegisterPromise.RejectIfExists(NS_ERROR_DOM_UNKNOWN_ERR, __func__);

0 commit comments

Comments
 (0)