@@ -86,9 +86,10 @@ return Promise.all([
86
86
let hasDeepLinking = false ;
87
87
let hasCredentialSharing = false ;
88
88
data . forEach ( statement => {
89
- if ( statement . relation === 'delegate_permission/common.handle_all_urls' ) {
89
+ if ( statement . relation . includes ( 'delegate_permission/common.handle_all_urls' ) ) {
90
90
hasDeepLinking = true ;
91
- } else if ( statement . relation === 'delegate_permission/common.get_login_creds' ) {
91
+ }
92
+ if ( statement . relation . includes ( 'delegate_permission/common.get_login_creds' ) ) {
92
93
hasCredentialSharing = true ;
93
94
}
94
95
} ) ;
@@ -115,6 +116,57 @@ return Promise.all([
115
116
return data ;
116
117
} ) ;
117
118
} ) ,
119
+ // FedCM
120
+ parseResponse ( '/.well-known/web-identity' , r => {
121
+ return r . text ( ) . then ( text => {
122
+ let result = {
123
+ provider_urls : [ ] ,
124
+ accounts_endpoint : null ,
125
+ login_url : null
126
+ } ;
127
+ try {
128
+ let data = JSON . parse ( text ) ;
129
+ result . provider_urls = Array . isArray ( data . provider_urls ) && data . provider_urls . length > 0 ? data . provider_urls : [ ] ;
130
+ result . accounts_endpoint = data . accounts_endpoint || null ;
131
+ result . login_url = data . login_url || null ;
132
+ } catch ( e ) {
133
+ // Failed to parse JSON
134
+ }
135
+ return result ;
136
+ } ) ;
137
+ } ) ,
138
+ // Passkey
139
+ parseResponse ( '/.well-known/passkey-endpoints' , r => {
140
+ return r . text ( ) . then ( text => {
141
+ let result = {
142
+ enroll : null ,
143
+ manage : null
144
+ } ;
145
+ try {
146
+ let data = JSON . parse ( text ) ;
147
+ result . enroll = data . enroll || null ;
148
+ result . manage = data . manage || null ;
149
+ } catch ( e ) {
150
+ // Failed to parse JSON
151
+ }
152
+ return result ;
153
+ } ) ;
154
+ } ) ,
155
+ // Related Origin Requests
156
+ parseResponse ( '/.well-known/webauthn' , r => {
157
+ return r . text ( ) . then ( text => {
158
+ let result = {
159
+ origins : [ ]
160
+ } ;
161
+ try {
162
+ let data = JSON . parse ( text ) ;
163
+ result . origins = Array . isArray ( data . origins ) && data . origins . length > 0 ? data . origins : [ ] ;
164
+ } catch ( e ) {
165
+ // Failed to parse JSON
166
+ }
167
+ return result ;
168
+ } ) ;
169
+ } ) ,
118
170
// security
119
171
parseResponse ( '/robots.txt' , r => {
120
172
return r . text ( ) . then ( text => {
0 commit comments