[FedCM] Make nonce an optional field in FederatedIdentityProvider

nonce should not be required in FederatedIdentityProvider. If RP does
not specify a nonce, IDP may create one instead.

Bug: 1275311
Change-Id: Ic6cf70c5662e735444009181ad19a0b94040c17b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3308919
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Commit-Queue: Yi Gu <yigu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#947074}
diff --git a/credential-management/fedcm.https.html b/credential-management/fedcm.https.html
index 6933e58..4b10b17 100644
--- a/credential-management/fedcm.https.html
+++ b/credential-management/fedcm.https.html
@@ -77,8 +77,9 @@
     return promise_rejects_dom(t, "InvalidStateError", result);
   }, "Reject when clientId is empty");
 
-  promise_test(async t => {
-    const result = navigator.credentials.get({
+  fedcm_test(async (t, mock) => {
+    mock.returnIdToken("a_token");
+    const token = await navigator.credentials.get({
     federated: {
       providers: [{
         url: 'https://idp.test',
@@ -86,21 +87,9 @@
       }]
     }
     });
-    return promise_rejects_js(t, TypeError, result);
-  }, "Reject when nonce is missing" );
 
-  promise_test(async t => {
-    const result = navigator.credentials.get({
-    federated: {
-      providers: [{
-        url: 'https://idp.test',
-        clientId: '1',
-        nonce: '',
-      }]
-    }
-    });
-    return promise_rejects_dom(t, "InvalidStateError", result);
-  }, "Reject when nonce is empty");
+    assert_equals(token, "a_token");
+  }, "nonce is not required in FederatedIdentityProvider.");
 
   promise_test(function(t) {
     // Logout API not supported yet.