Chromium Code Reviews| Index: Source/modules/credentialmanager/CredentialsContainer.cpp |
| diff --git a/Source/modules/credentialmanager/CredentialsContainer.cpp b/Source/modules/credentialmanager/CredentialsContainer.cpp |
| index f6eaa7647f1b953908d32d988f49505380d1c1c3..00ba1b9a47ae8dd0e01a9f9f3f52a2480aa2003e 100644 |
| --- a/Source/modules/credentialmanager/CredentialsContainer.cpp |
| +++ b/Source/modules/credentialmanager/CredentialsContainer.cpp |
| @@ -12,11 +12,14 @@ |
| #include "core/dom/ExceptionCode.h" |
| #include "core/dom/ExecutionContext.h" |
| #include "modules/credentialmanager/Credential.h" |
| +#include "modules/credentialmanager/CredentialManagerClient.h" |
| +#include "modules/credentialmanager/LocalCredential.h" |
| #include "platform/weborigin/SecurityOrigin.h" |
| #include "public/platform/Platform.h" |
| #include "public/platform/WebCredential.h" |
| #include "public/platform/WebCredentialManagerClient.h" |
| #include "public/platform/WebCredentialManagerError.h" |
| +#include "public/platform/WebLocalCredential.h" |
| namespace blink { |
| @@ -62,8 +65,13 @@ public: |
| virtual void onSuccess(WebCredential* credential) OVERRIDE |
| { |
| - // FIXME: Split this into Local/Federated types. |
| - m_resolver->resolve(Credential::create(credential->id(), credential->name(), credential->avatarURL())); |
| + if (!credential) { |
| + m_resolver->resolve(); |
| + return; |
| + } |
| + |
| + // FIXME: Split this into Local/Federated types. Right now it's hard-coded to be a LocalCredential. :( |
| + m_resolver->resolve(LocalCredential::create(credential->id(), credential->name(), credential->avatarURL(), static_cast<WebLocalCredential*>(credential)->password())); |
| } |
| virtual void onError(WebCredentialManagerError* reason) OVERRIDE |
| @@ -96,36 +104,69 @@ static bool canAccessCredentialManagerAPI(ScriptState* scriptState, PassRefPtr<S |
| return true; |
| } |
| -static ScriptPromise stubImplementation(ScriptState* scriptState) |
| +ScriptPromise CredentialsContainer::request(ScriptState* scriptState, const Dictionary&) |
| { |
| + CredentialManagerClient* client = CredentialManagerClient::from(scriptState); |
| + if (!client) |
| + return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "Could not establish connection to the credential manager.")); |
| + |
| RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
| ScriptPromise promise = resolver->promise(); |
| if (!canAccessCredentialManagerAPI(scriptState, resolver)) |
| return promise; |
| - resolver->resolve(); |
| + WebVector<WebURL> tempVector; |
| + client->dispatchRequest(false, tempVector, new RequestCallbacks(resolver)); |
| return promise; |
| } |
| -ScriptPromise CredentialsContainer::request(ScriptState* scriptState, const Dictionary&) |
| -{ |
| - return stubImplementation(scriptState); |
| -} |
| - |
| ScriptPromise CredentialsContainer::notifySignedIn(ScriptState* scriptState, Credential* credential) |
| { |
| - return stubImplementation(scriptState); |
| + CredentialManagerClient* client = CredentialManagerClient::from(scriptState); |
|
sof
2014/09/15 07:57:17
There's a fair bit of duplicated code in these met
|
| + if (!client) |
| + return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "Could not establish connection to the credential manager.")); |
| + |
| + RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
| + ScriptPromise promise = resolver->promise(); |
| + |
| + if (!canAccessCredentialManagerAPI(scriptState, resolver)) |
| + return promise; |
| + |
| + client->dispatchSignedIn(WebCredential(credential->platformCredential()), new NotificationCallbacks(resolver)); |
| + return promise; |
| } |
| ScriptPromise CredentialsContainer::notifyFailedSignIn(ScriptState* scriptState, Credential* credential) |
| { |
| - return stubImplementation(scriptState); |
| + CredentialManagerClient* client = CredentialManagerClient::from(scriptState); |
| + if (!client) |
| + return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "Could not establish connection to the credential manager.")); |
| + |
| + RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
| + ScriptPromise promise = resolver->promise(); |
| + |
| + if (!canAccessCredentialManagerAPI(scriptState, resolver)) |
| + return promise; |
| + |
| + client->dispatchFailedSignIn(WebCredential(credential->platformCredential()), new NotificationCallbacks(resolver)); |
| + return promise; |
| } |
| ScriptPromise CredentialsContainer::notifySignedOut(ScriptState* scriptState) |
| { |
| - return stubImplementation(scriptState); |
| + CredentialManagerClient* client = CredentialManagerClient::from(scriptState); |
| + if (!client) |
| + return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "Could not establish connection to the credential manager.")); |
| + |
| + RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
| + ScriptPromise promise = resolver->promise(); |
| + |
| + if (!canAccessCredentialManagerAPI(scriptState, resolver)) |
| + return promise; |
| + |
| + client->dispatchSignedOut(new NotificationCallbacks(resolver)); |
| + return promise; |
| } |
| } // namespace blink |