diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/document_metadata/document_metadata_server.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/document_metadata/document_metadata_server.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/modules/document_metadata/document_metadata_server.cc b/chromium/third_party/blink/renderer/modules/document_metadata/document_metadata_server.cc new file mode 100644 index 00000000000..d5f96165b60 --- /dev/null +++ b/chromium/third_party/blink/renderer/modules/document_metadata/document_metadata_server.cc @@ -0,0 +1,39 @@ +// Copyright 2017 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/document_metadata/document_metadata_server.h" + +#include <memory> +#include <utility> + +#include "mojo/public/cpp/bindings/self_owned_receiver.h" +#include "third_party/blink/renderer/core/frame/local_frame.h" +#include "third_party/blink/renderer/modules/document_metadata/document_metadata_extractor.h" + +namespace blink { + +DocumentMetadataServer::DocumentMetadataServer(LocalFrame& frame) + : frame_(frame) {} + +void DocumentMetadataServer::BindMojoReceiver( + LocalFrame* frame, + mojo::PendingReceiver<mojom::blink::DocumentMetadata> receiver) { + DCHECK(frame); + + // TODO(wychen): remove BindMojoReceiver pattern, and make this a service + // associated with frame lifetime. + mojo::MakeSelfOwnedReceiver(std::make_unique<DocumentMetadataServer>(*frame), + std::move(receiver)); +} + +void DocumentMetadataServer::GetEntities(GetEntitiesCallback callback) { + if (!frame_ || !frame_->GetDocument()) { + std::move(callback).Run(nullptr); + return; + } + std::move(callback).Run( + DocumentMetadataExtractor::Extract(*frame_->GetDocument())); +} + +} // namespace blink |