Skip to content

Commit

Permalink
Reland "[FedCM] Split get() into get()+login()"
Browse files Browse the repository at this point in the history
This reverts commit 2b540bc952136e552b98559fe0ddb4e149b39941.

Reason for revert: Fixed compile error

Original change's description:
> Revert "[FedCM] Split get() into get()+login()"
>
> This reverts commit a6fba024e6fdead47455a413362261326e0ab7a6.
>
> Reason for revert: Might have caused compile failure
> https://ci.chromium.org/p/chromium/builders/ci/linux-archive-rel/62048?
>
> Original change's description:
> > [FedCM] Split get() into get()+login()
> >
> > This is a consequence of
> > fedidcg/FedCM@e49c2bb
> >
> > Bug: 1300009
> > Change-Id: I36839e0e5748d1014e624d64f40d393fec4d2b91
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3499423
> > Reviewed-by: Yi Gu <yigu@chromium.org>
> > Reviewed-by: Sam Goto <goto@chromium.org>
> > Commit-Queue: Christian Biesinger <cbiesinger@chromium.org>
> > Cr-Commit-Position: refs/heads/main@{#977460}
>
> Bug: 1300009
> Change-Id: I6a1e3250f82f4111eac6c841127d044d197af97f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3499935
> Auto-Submit: Keishi Hattori <keishi@chromium.org>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Takashi Sakamoto <tasak@google.com>
> Commit-Queue: Keishi Hattori <keishi@chromium.org>
> Owners-Override: Keishi Hattori <keishi@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#977469}

Bug: 1300009
Change-Id: Ibac6509a4a0657b8d2b8c6ff0c32dd1e25fcaf9c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3498694
Reviewed-by: Yi Gu <yigu@chromium.org>
Commit-Queue: Yi Gu <yigu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#977759}
  • Loading branch information
cbiesinger authored and chromium-wpt-export-bot committed Mar 4, 2022
1 parent 6cf95e9 commit 9ab272c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 17 deletions.
4 changes: 2 additions & 2 deletions credential-management/fedcm-network-requests.sub.https.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
providers: [{
url: url_prefix,
clientId: '1',
nonce: '1',
}]
}
});
assert_equals(result, 'token');
const token = await result.login({nonce: '1'});
assert_equals(token.idToken, 'token');
}, 'Test that COEP policy do not apply to FedCM requests');
</script>
45 changes: 30 additions & 15 deletions credential-management/fedcm.https.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,36 @@
providers: [{
url: 'https://idp.test',
clientId: '1',
nonce: '2',
}]
}
};
const login_options = {
nonce: '2',
};


fedcm_test(async (t, mock) => {
mock.returnIdToken("a_token");
const token = await navigator.credentials.get(test_options);
assert_equals(token, "a_token");
const cred = await navigator.credentials.get(test_options);
const token = await cred.login(login_options);
assert_equals(token.idToken, "a_token");
}, "Successfully obtaining id_token should resolve the promise.");

fedcm_test(async (t, mock) => {
mock.returnError("ApprovalDeclined");
const result = navigator.credentials.get(test_options);
return promise_rejects_dom(t, 'AbortError', result);
const cred = await navigator.credentials.get(test_options);
const token = cred.login(login_options);
return promise_rejects_dom(t, 'AbortError', token);
}, "User approval decline should reject the promise.");

fedcm_test(async (t, mock) => {
mock.returnError("ErrorTooManyRequests");
const first = await navigator.credentials.get(test_options);
const first_token = await first.login(login_options);
const second = await navigator.credentials.get(test_options);
assert_equals(first, undefined);
return promise_rejects_dom(t, 'AbortError', second);
const second_token = await second.login(login_options);
assert_equals(first_token.idToken, undefined);
return promise_rejects_dom(t, 'AbortError', second_token);
},
"When there's a pending request, a second `get` call should be rejected. ",
"Only one navigator.credentials.get request may be outstanding at one time.");
Expand Down Expand Up @@ -90,30 +97,34 @@

fedcm_test(async (t, mock) => {
mock.returnIdToken("a_token");
const token = await navigator.credentials.get({
const cred = await navigator.credentials.get({
federated: {
providers: [{
url: 'https://idp.test',
clientId: '1',
}]
}
});
const token = await cred.login(login_options);

assert_equals(token, "a_token");
assert_equals(token.idToken, "a_token");
}, "nonce is not required in FederatedIdentityProvider.");

fedcm_test(async (t, mock) => {
let controller = new AbortController();
mock.returnPendingPromise();
let aborted = false;
const token_promise = navigator.credentials.get({
const cred = await navigator.credentials.get({
federated: {
providers: [{
url: 'https://idp.test',
clientId: '1',
}],
},
signal: controller.signal,
});
const token_promise = cred.login({
nonce: '2',
signal: controller.signal,
});
assert_equals(aborted, false);
controller.abort();
Expand All @@ -130,14 +141,17 @@
let controller = new AbortController();
mock.returnPendingPromise();
let aborted = false;
const token_promise = navigator.credentials.get({
const cred = await navigator.credentials.get({
federated: {
providers: [{
url: 'https://idp.test',
clientId: '1',
}],
},
signal: controller.signal,
});
const token_promise = cred.login({
nonce: '2',
signal: controller.signal,
});
assert_equals(aborted, false);
controller.abort();
Expand All @@ -150,8 +164,9 @@
assert_equals(aborted, true);

mock.returnIdToken("a_token");
const token = await navigator.credentials.get(test_options);
assert_equals(token, "a_token");
const cred2 = await navigator.credentials.get(test_options);
const token = await cred2.login(login_options);
assert_equals(token.idToken, "a_token");
}, "get after abort should work");

promise_test(async t => {
Expand Down

0 comments on commit 9ab272c

Please sign in to comment.