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

Unified Diff: Source/modules/credentialmanager/CredentialsContainer.cpp

Issue 573663002: Credential Manager: Wire up the client. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Oops. Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698