Index: Source/modules/credentialmanager/Credential.cpp |
diff --git a/Source/modules/credentialmanager/Credential.cpp b/Source/modules/credentialmanager/Credential.cpp |
index f1500537dbbd56d18c7c0925188bd96804c0bba7..87449e08955975ea3ada0b4f2ca5065324501761 100644 |
--- a/Source/modules/credentialmanager/Credential.cpp |
+++ b/Source/modules/credentialmanager/Credential.cpp |
@@ -5,10 +5,21 @@ |
#include "config.h" |
#include "modules/credentialmanager/Credential.h" |
+#include "bindings/core/v8/ExceptionState.h" |
+#include "core/dom/ExceptionCode.h" |
+ |
namespace blink { |
-Credential* Credential::create(const String& id, const String& name, const String& avatarURL) |
+Credential* Credential::create(const String& id, const String& name, const KURL& avatarURL) |
+{ |
+ return new Credential(id, name, avatarURL); |
+} |
+ |
+Credential* Credential::create(const String& id, const String& name, const String& avatar, ExceptionState& exceptionState) |
{ |
+ KURL avatarURL = parseStringAsURL(avatar, exceptionState); |
+ if (exceptionState.hadException()) |
+ return nullptr; |
return new Credential(id, name, avatarURL); |
} |
@@ -17,12 +28,20 @@ Credential::Credential(PlatformCredential* credential) |
{ |
} |
-Credential::Credential(const String& id, const String& name, const String& avatarURL) |
+Credential::Credential(const String& id, const String& name, const KURL& avatarURL) |
: m_platformCredential(PlatformCredential::create(id, name, avatarURL)) |
{ |
ScriptWrappable::init(this); |
} |
+KURL Credential::parseStringAsURL(const String& url, ExceptionState& exceptionState) |
+{ |
+ KURL parsedURL = KURL(KURL(), url); |
+ if (!parsedURL.isValid()) |
+ exceptionState.throwDOMException(SyntaxError, "'" + url + "' is not a valid URL."); |
+ return parsedURL; |
+} |
+ |
void Credential::trace(Visitor* visitor) |
{ |
visitor->trace(m_platformCredential); |