1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "third_party/blink/renderer/modules/document_metadata/document_metadata_server.h" 6 7 #include <memory> 8 #include <utility> 9 10 #include "mojo/public/cpp/bindings/self_owned_receiver.h" 11 #include "third_party/blink/renderer/core/frame/local_frame.h" 12 #include "third_party/blink/renderer/modules/document_metadata/document_metadata_extractor.h" 13 14 namespace blink { 15 DocumentMetadataServer(LocalFrame & frame)16DocumentMetadataServer::DocumentMetadataServer(LocalFrame& frame) 17 : frame_(frame) {} 18 BindMojoReceiver(LocalFrame * frame,mojo::PendingReceiver<mojom::blink::DocumentMetadata> receiver)19void DocumentMetadataServer::BindMojoReceiver( 20 LocalFrame* frame, 21 mojo::PendingReceiver<mojom::blink::DocumentMetadata> receiver) { 22 DCHECK(frame); 23 24 // TODO(wychen): remove BindMojoReceiver pattern, and make this a service 25 // associated with frame lifetime. 26 mojo::MakeSelfOwnedReceiver(std::make_unique<DocumentMetadataServer>(*frame), 27 std::move(receiver)); 28 } 29 GetEntities(GetEntitiesCallback callback)30void DocumentMetadataServer::GetEntities(GetEntitiesCallback callback) { 31 if (!frame_ || !frame_->GetDocument()) { 32 std::move(callback).Run(nullptr); 33 return; 34 } 35 std::move(callback).Run( 36 DocumentMetadataExtractor::Extract(*frame_->GetDocument())); 37 } 38 39 } // namespace blink 40