blob: b51442ab5e0165e35ce1ebed5ff0c74a2b0bd00a [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 "third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h"
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
namespace blink {
CredentialManagerProxy::CredentialManagerProxy(Document& document)
: document_(document) {
LocalFrame* frame = document_->GetFrame();
DCHECK(frame);
frame->GetBrowserInterfaceBroker().GetInterface(
credential_manager_.BindNewPipeAndPassReceiver(
frame->GetTaskRunner(TaskType::kUserInteraction)));
frame->GetBrowserInterfaceBroker().GetInterface(
authenticator_.BindNewPipeAndPassReceiver(
frame->GetTaskRunner(TaskType::kUserInteraction)));
}
CredentialManagerProxy::~CredentialManagerProxy() = default;
mojom::blink::SmsReceiver* CredentialManagerProxy::SmsReceiver() {
if (!sms_receiver_) {
LocalFrame* frame = document_->GetFrame();
DCHECK(frame);
frame->GetBrowserInterfaceBroker().GetInterface(
sms_receiver_.BindNewPipeAndPassReceiver(
frame->GetTaskRunner(TaskType::kMiscPlatformAPI)));
}
return sms_receiver_.get();
}
// static
CredentialManagerProxy* CredentialManagerProxy::From(Document& document) {
auto* supplement =
Supplement<Document>::From<CredentialManagerProxy>(document);
if (!supplement) {
supplement = MakeGarbageCollected<CredentialManagerProxy>(document);
ProvideTo(document, supplement);
}
return supplement;
}
// static
CredentialManagerProxy* CredentialManagerProxy::From(
ScriptState* script_state) {
DCHECK(script_state->ContextIsValid());
return From(Document::From(*ExecutionContext::From(script_state)));
}
void CredentialManagerProxy::Trace(Visitor* visitor) {
visitor->Trace(document_);
Supplement<Document>::Trace(visitor);
}
// static
const char CredentialManagerProxy::kSupplementName[] = "CredentialManagerProxy";
} // namespace blink