Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: third_party/WebKit/Source/modules/credentialmanager/CredentialsContainer.cpp

Issue 2848743003: Speed up CredentialsContainer::get for federations (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <memory> 7 #include <memory>
8 #include <utility>
8 #include "bindings/core/v8/Dictionary.h" 9 #include "bindings/core/v8/Dictionary.h"
9 #include "bindings/core/v8/ScriptPromise.h" 10 #include "bindings/core/v8/ScriptPromise.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 11 #include "bindings/core/v8/ScriptPromiseResolver.h"
11 #include "core/dom/DOMException.h" 12 #include "core/dom/DOMException.h"
12 #include "core/dom/Document.h" 13 #include "core/dom/Document.h"
13 #include "core/dom/ExceptionCode.h" 14 #include "core/dom/ExceptionCode.h"
14 #include "core/dom/ExecutionContext.h" 15 #include "core/dom/ExecutionContext.h"
15 #include "core/frame/Frame.h" 16 #include "core/frame/Frame.h"
16 #include "core/frame/UseCounter.h" 17 #include "core/frame/UseCounter.h"
17 #include "core/page/FrameTree.h" 18 #include "core/page/FrameTree.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 ScriptPromise CredentialsContainer::get( 161 ScriptPromise CredentialsContainer::get(
161 ScriptState* script_state, 162 ScriptState* script_state,
162 const CredentialRequestOptions& options) { 163 const CredentialRequestOptions& options) {
163 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); 164 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
164 ScriptPromise promise = resolver->Promise(); 165 ScriptPromise promise = resolver->Promise();
165 if (!CheckBoilerplate(resolver)) 166 if (!CheckBoilerplate(resolver))
166 return promise; 167 return promise;
167 168
168 Vector<KURL> providers; 169 Vector<KURL> providers;
169 if (options.hasFederated() && options.federated().hasProviders()) { 170 if (options.hasFederated() && options.federated().hasProviders()) {
170 // TODO(mkwst): CredentialRequestOptions::federated() needs to return a 171 for (const auto& string : options.federated().providers()) {
171 // reference, not a value. Because it returns a temporary value now, a for
172 // loop that directly references the value generates code that holds a
173 // reference to a value that no longer exists by the time the loop starts
174 // looping. In order to avoid this crazyness for the moment, we're making a
175 // copy of the vector. https://crbug.com/587088
176 const Vector<String> provider_strings = options.federated().providers();
177 for (const auto& string : provider_strings) {
178 KURL url = KURL(KURL(), string); 172 KURL url = KURL(KURL(), string);
179 if (url.IsValid()) 173 if (url.IsValid())
180 providers.push_back(url); 174 providers.push_back(std::move(url));
181 } 175 }
182 } 176 }
183 177
184 UseCounter::Count(ExecutionContext::From(script_state), 178 UseCounter::Count(ExecutionContext::From(script_state),
185 options.unmediated() 179 options.unmediated()
186 ? UseCounter::kCredentialManagerGetWithoutUI 180 ? UseCounter::kCredentialManagerGetWithoutUI
187 : UseCounter::kCredentialManagerGetWithUI); 181 : UseCounter::kCredentialManagerGetWithUI);
188 182
189 CredentialManagerClient::From(ExecutionContext::From(script_state)) 183 CredentialManagerClient::From(ExecutionContext::From(script_state))
190 ->DispatchGet(options.unmediated(), options.password(), providers, 184 ->DispatchGet(options.unmediated(), options.password(), providers,
(...skipping 21 matching lines...) Expand all
212 ScriptPromise promise = resolver->Promise(); 206 ScriptPromise promise = resolver->Promise();
213 if (!CheckBoilerplate(resolver)) 207 if (!CheckBoilerplate(resolver))
214 return promise; 208 return promise;
215 209
216 CredentialManagerClient::From(ExecutionContext::From(script_state)) 210 CredentialManagerClient::From(ExecutionContext::From(script_state))
217 ->DispatchRequireUserMediation(new NotificationCallbacks(resolver)); 211 ->DispatchRequireUserMediation(new NotificationCallbacks(resolver));
218 return promise; 212 return promise;
219 } 213 }
220 214
221 } // namespace blink 215 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698