@@ -1932,34 +1932,43 @@ void DomainDispatcherImpl::getDocument(const v8_crdtp::Dispatchable& dispatchabl
19321932 errors->SetName (" depth" );
19331933 in_depth = ValueConversions<int >::fromValue (depthValue, errors);
19341934 }
1935+
19351936 protocol::Value* pierceValue = params ? params->get (" pierce" ) : nullptr ;
19361937 Maybe<bool > in_pierce;
19371938 if (pierceValue) {
19381939 errors->SetName (" pierce" );
19391940 in_pierce = ValueConversions<bool >::fromValue (pierceValue, errors);
19401941 }
1942+
19411943 if (MaybeReportInvalidParams (dispatchable, *errors)) return ;
19421944 // Declare output parameters.
19431945 std::unique_ptr<protocol::DOM::Node> out_root;
19441946
19451947 std::unique_ptr<DomainDispatcher::WeakPtr> weak = weakPtr ();
1946- DispatchResponse response = m_backend->getDocument (std::move (in_depth), std::move (in_pierce), &out_root);
1947- if (response.IsFallThrough ()) {
1948- channel ()->FallThrough (dispatchable.CallId (), v8_crdtp::SpanFrom (" DOM.getDocument" ), dispatchable.Serialized ());
1949- return ;
1950- }
1951- if (weak->get ()) {
1952- std::vector<uint8_t > result;
1953- if (response.IsSuccess ()) {
1954- v8_crdtp::cbor::EnvelopeEncoder envelope_encoder;
1955- envelope_encoder.EncodeStart (&result);
1956- result.push_back (v8_crdtp::cbor::EncodeIndefiniteLengthMapStart ());
1957- v8_crdtp::SerializeField (v8_crdtp::SpanFrom (" root" ), out_root, &result);
1958- result.push_back (v8_crdtp::cbor::EncodeStop ());
1959- envelope_encoder.EncodeStop (&result);
1948+
1949+ if (depthValue && pierceValue) {
1950+ // NOTE: in_depth & in_pierce are not used in the method getDocument, see in v8-dom-agent-impl.cpp:63
1951+ DispatchResponse response = m_backend->getDocument (std::move (in_depth),
1952+ std::move (in_pierce), &out_root);
1953+ if (response.IsFallThrough ()) {
1954+ channel ()->FallThrough (dispatchable.CallId (), v8_crdtp::SpanFrom (" DOM.getDocument" ),
1955+ dispatchable.Serialized ());
1956+ return ;
19601957 }
1961- weak->get ()->sendResponse (dispatchable.CallId (), response, v8_crdtp::Serializable::From (std::move (result)));
1962- }
1958+ if (weak->get ()) {
1959+ std::vector<uint8_t > result;
1960+ if (response.IsSuccess ()) {
1961+ v8_crdtp::cbor::EnvelopeEncoder envelope_encoder;
1962+ envelope_encoder.EncodeStart (&result);
1963+ result.push_back (v8_crdtp::cbor::EncodeIndefiniteLengthMapStart ());
1964+ v8_crdtp::SerializeField (v8_crdtp::SpanFrom (" root" ), out_root, &result);
1965+ result.push_back (v8_crdtp::cbor::EncodeStop ());
1966+ envelope_encoder.EncodeStop (&result);
1967+ }
1968+ weak->get ()->sendResponse (dispatchable.CallId (), response,
1969+ v8_crdtp::Serializable::From (std::move (result)));
1970+ }
1971+ }
19631972 return ;
19641973}
19651974
0 commit comments