blob: d3b159c1e349377dc6a7ae64b7c0ca2c0f51c068 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "modules/credentialmanager/FederatedCredential.h"
#include "bindings/core/v8/ExceptionState.h"
#include "modules/credentialmanager/FederatedCredentialData.h"
#include "platform/credentialmanager/PlatformFederatedCredential.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "public/platform/WebFederatedCredential.h"
namespace blink {
FederatedCredential* FederatedCredential::create(WebFederatedCredential* webFederatedCredential)
{
return new FederatedCredential(webFederatedCredential);
}
FederatedCredential* FederatedCredential::create(const FederatedCredentialData& data, ExceptionState& exceptionState)
{
if (data.id().isEmpty()) {
exceptionState.throwTypeError("'id' must not be empty.");
return nullptr;
}
if (data.provider().isEmpty()) {
exceptionState.throwTypeError("'provider' must not be empty.");
return nullptr;
}
KURL iconURL = parseStringAsURL(data.iconURL(), exceptionState);
KURL providerURL = parseStringAsURL(data.provider(), exceptionState);
if (exceptionState.hadException())
return nullptr;
return new FederatedCredential(data.id(), providerURL, data.name(), iconURL);
}
FederatedCredential::FederatedCredential(WebFederatedCredential* webFederatedCredential)
: SiteBoundCredential(webFederatedCredential->getPlatformCredential())
{
}
FederatedCredential::FederatedCredential(const String& id, const KURL& provider, const String& name, const KURL& icon)
: SiteBoundCredential(PlatformFederatedCredential::create(id, SecurityOrigin::create(provider), name, icon))
{
}
const String FederatedCredential::provider() const
{
return static_cast<PlatformFederatedCredential*>(m_platformCredential.get())->provider()->toString();
}
} // namespace blink