OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "modules/credentialmanager/CredentialsContainer.h" | 5 #include "modules/credentialmanager/CredentialsContainer.h" |
6 | 6 |
7 #include "bindings/core/v8/Dictionary.h" | 7 #include "bindings/core/v8/Dictionary.h" |
8 #include "bindings/core/v8/ScriptPromise.h" | 8 #include "bindings/core/v8/ScriptPromise.h" |
9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
10 #include "core/dom/DOMException.h" | 10 #include "core/dom/DOMException.h" |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 { | 95 { |
96 return new CredentialsContainer(); | 96 return new CredentialsContainer(); |
97 } | 97 } |
98 | 98 |
99 CredentialsContainer::CredentialsContainer() | 99 CredentialsContainer::CredentialsContainer() |
100 { | 100 { |
101 } | 101 } |
102 | 102 |
103 static bool checkBoilerplate(ScriptPromiseResolver* resolver) | 103 static bool checkBoilerplate(ScriptPromiseResolver* resolver) |
104 { | 104 { |
105 CredentialManagerClient* client = CredentialManagerClient::from(resolver->sc
riptState()->executionContext()); | 105 CredentialManagerClient* client = CredentialManagerClient::from(resolver->ge
tScriptState()->getExecutionContext()); |
106 if (!client) { | 106 if (!client) { |
107 resolver->reject(DOMException::create(InvalidStateError, "Could not esta
blish connection to the credential manager.")); | 107 resolver->reject(DOMException::create(InvalidStateError, "Could not esta
blish connection to the credential manager.")); |
108 return false; | 108 return false; |
109 } | 109 } |
110 | 110 |
111 String errorMessage; | 111 String errorMessage; |
112 if (!resolver->scriptState()->executionContext()->isSecureContext(errorMessa
ge)) { | 112 if (!resolver->getScriptState()->getExecutionContext()->isSecureContext(erro
rMessage)) { |
113 resolver->reject(DOMException::create(SecurityError, errorMessage)); | 113 resolver->reject(DOMException::create(SecurityError, errorMessage)); |
114 return false; | 114 return false; |
115 } | 115 } |
116 | 116 |
117 return true; | 117 return true; |
118 } | 118 } |
119 | 119 |
120 ScriptPromise CredentialsContainer::get(ScriptState* scriptState, const Credenti
alRequestOptions& options) | 120 ScriptPromise CredentialsContainer::get(ScriptState* scriptState, const Credenti
alRequestOptions& options) |
121 { | 121 { |
122 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 122 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
123 ScriptPromise promise = resolver->promise(); | 123 ScriptPromise promise = resolver->promise(); |
124 if (!checkBoilerplate(resolver)) | 124 if (!checkBoilerplate(resolver)) |
125 return promise; | 125 return promise; |
126 | 126 |
127 Vector<KURL> providers; | 127 Vector<KURL> providers; |
128 if (options.hasFederated() && options.federated().hasProviders()) { | 128 if (options.hasFederated() && options.federated().hasProviders()) { |
129 // TODO(mkwst): CredentialRequestOptions::federated() needs to return a
reference, not a value. | 129 // TODO(mkwst): CredentialRequestOptions::federated() needs to return a
reference, not a value. |
130 // Because it returns a temporary value now, a for loop that directly re
ferences the value | 130 // Because it returns a temporary value now, a for loop that directly re
ferences the value |
131 // generates code that holds a reference to a value that no longer exist
s by the time the loop | 131 // generates code that holds a reference to a value that no longer exist
s by the time the loop |
132 // starts looping. In order to avoid this crazyness for the moment, we'r
e making a copy of the | 132 // starts looping. In order to avoid this crazyness for the moment, we'r
e making a copy of the |
133 // vector. https://crbug.com/587088 | 133 // vector. https://crbug.com/587088 |
134 const Vector<String> providerStrings = options.federated().providers(); | 134 const Vector<String> providerStrings = options.federated().providers(); |
135 for (const auto& string : providerStrings) { | 135 for (const auto& string : providerStrings) { |
136 KURL url = KURL(KURL(), string); | 136 KURL url = KURL(KURL(), string); |
137 if (url.isValid()) | 137 if (url.isValid()) |
138 providers.append(url); | 138 providers.append(url); |
139 } | 139 } |
140 } | 140 } |
141 | 141 |
142 UseCounter::count(scriptState->executionContext(), options.unmediated() ? Us
eCounter::CredentialManagerGetWithoutUI : UseCounter::CredentialManagerGetWithUI
); | 142 UseCounter::count(scriptState->getExecutionContext(), options.unmediated() ?
UseCounter::CredentialManagerGetWithoutUI : UseCounter::CredentialManagerGetWit
hUI); |
143 | 143 |
144 CredentialManagerClient::from(scriptState->executionContext())->dispatchGet(
options.unmediated(), options.password(), providers, new RequestCallbacks(resolv
er)); | 144 CredentialManagerClient::from(scriptState->getExecutionContext())->dispatchG
et(options.unmediated(), options.password(), providers, new RequestCallbacks(res
olver)); |
145 return promise; | 145 return promise; |
146 } | 146 } |
147 | 147 |
148 ScriptPromise CredentialsContainer::store(ScriptState* scriptState, Credential*
credential) | 148 ScriptPromise CredentialsContainer::store(ScriptState* scriptState, Credential*
credential) |
149 { | 149 { |
150 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 150 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
151 ScriptPromise promise = resolver->promise(); | 151 ScriptPromise promise = resolver->promise(); |
152 if (!checkBoilerplate(resolver)) | 152 if (!checkBoilerplate(resolver)) |
153 return promise; | 153 return promise; |
154 | 154 |
155 CredentialManagerClient::from(scriptState->executionContext())->dispatchStor
e(WebCredential::create(credential->platformCredential()), new NotificationCallb
acks(resolver)); | 155 CredentialManagerClient::from(scriptState->getExecutionContext())->dispatchS
tore(WebCredential::create(credential->getPlatformCredential()), new Notificatio
nCallbacks(resolver)); |
156 return promise; | 156 return promise; |
157 } | 157 } |
158 | 158 |
159 ScriptPromise CredentialsContainer::requireUserMediation(ScriptState* scriptStat
e) | 159 ScriptPromise CredentialsContainer::requireUserMediation(ScriptState* scriptStat
e) |
160 { | 160 { |
161 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 161 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
162 ScriptPromise promise = resolver->promise(); | 162 ScriptPromise promise = resolver->promise(); |
163 if (!checkBoilerplate(resolver)) | 163 if (!checkBoilerplate(resolver)) |
164 return promise; | 164 return promise; |
165 | 165 |
166 CredentialManagerClient::from(scriptState->executionContext())->dispatchRequ
ireUserMediation(new NotificationCallbacks(resolver)); | 166 CredentialManagerClient::from(scriptState->getExecutionContext())->dispatchR
equireUserMediation(new NotificationCallbacks(resolver)); |
167 return promise; | 167 return promise; |
168 } | 168 } |
169 | 169 |
170 } // namespace blink | 170 } // namespace blink |
OLD | NEW |