| // Copyright 2021 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef CONTENT_BROWSER_DEVTOOLS_NETWORK_SERVICE_DEVTOOLS_OBSERVER_H_ | |
| #define CONTENT_BROWSER_DEVTOOLS_NETWORK_SERVICE_DEVTOOLS_OBSERVER_H_ | |
| #include <string> | |
| #include "base/time/time.h" | |
| #include "base/types/pass_key.h" | |
| #include "base/unguessable_token.h" | |
| #include "content/public/browser/frame_tree_node_id.h" | |
| #include "mojo/public/cpp/bindings/pending_remote.h" | |
| #include "services/network/public/mojom/devtools_observer.mojom.h" | |
| namespace content { | |
| class DevToolsAgentHostImpl; | |
| class FrameTreeNode; | |
| // A springboard class to be able to bind to the network service as a | |
| // DevToolsObserver but not requiring the creation of a DevToolsAgentHostImpl. | |
| class NetworkServiceDevToolsObserver : public network::mojom::DevToolsObserver { | |
| public: | |
| NetworkServiceDevToolsObserver( | |
| base::PassKey<NetworkServiceDevToolsObserver> pass_key, | |
| const std::string& devtools_agent_id, | |
| FrameTreeNodeId frame_tree_node_id); | |
| ~NetworkServiceDevToolsObserver() override; | |
| static mojo::PendingRemote<network::mojom::DevToolsObserver> MakeSelfOwned( | |
| const std::string& id); | |
| static mojo::PendingRemote<network::mojom::DevToolsObserver> MakeSelfOwned( | |
| FrameTreeNode* frame_tree_node); | |
| private: | |
| // network::mojom::DevToolsObserver overrides. | |
| void OnRawRequest( | |
| const std::string& devtools_request_id, | |
| const net::CookieAccessResultList& request_cookie_list, | |
| std::vector<network::mojom::HttpRawHeaderPairPtr> request_headers, | |
| const base::TimeTicks timestamp, | |
| std::vector<network::mojom::DeviceBoundSessionWithUsagePtr> | |
| device_bound_session_usages, | |
| network::mojom::ClientSecurityStatePtr security_state, | |
| network::mojom::OtherPartitionInfoPtr other_partition_info, | |
| const std::optional<base::UnguessableToken>& | |
| applied_network_conditions_id) override; | |
| void OnRawResponse( | |
| const std::string& devtools_request_id, | |
| const net::CookieAndLineAccessResultList& response_cookie_list, | |
| std::vector<network::mojom::HttpRawHeaderPairPtr> response_headers, | |
| const std::optional<std::string>& response_headers_text, | |
| network::mojom::IPAddressSpace resource_address_space, | |
| int32_t http_status_code, | |
| const std::optional<net::CookiePartitionKey>& cookie_partition_key) | |
| override; | |
| void OnEarlyHintsResponse( | |
| const std::string& devtools_request_id, | |
| std::vector<network::mojom::HttpRawHeaderPairPtr> headers) override; | |
| void OnTrustTokenOperationDone( | |
| const std::string& devtools_request_id, | |
| network::mojom::TrustTokenOperationResultPtr result) override; | |
| void OnLocalNetworkRequest( | |
| const std::optional<std::string>& devtools_request_id, | |
| const GURL& url, | |
| bool is_warning, | |
| network::mojom::IPAddressSpace resource_address_space, | |
| network::mojom::ClientSecurityStatePtr client_security_state) override; | |
| void OnCorsPreflightRequest( | |
| const base::UnguessableToken& devtools_request_id, | |
| const net::HttpRequestHeaders& request_headers, | |
| network::mojom::URLRequestDevToolsInfoPtr request_info, | |
| const GURL& initiator_url, | |
| const std::string& initiator_devtools_request_id) override; | |
| void OnCorsPreflightResponse( | |
| const base::UnguessableToken& devtools_request_id, | |
| const GURL& url, | |
| network::mojom::URLResponseHeadDevToolsInfoPtr head) override; | |
| void OnCorsPreflightRequestCompleted( | |
| const base::UnguessableToken& devtools_request_id, | |
| const network::URLLoaderCompletionStatus& status) override; | |
| void OnCorsError(const std::optional<std::string>& devtool_request_id, | |
| const std::optional<::url::Origin>& initiator_origin, | |
| network::mojom::ClientSecurityStatePtr client_security_state, | |
| const GURL& url, | |
| const network::CorsErrorStatus& status, | |
| bool is_warning) override; | |
| void OnOrbError(const std::optional<std::string>& devtools_request_id, | |
| const GURL& url) override; | |
| void OnSharedDictionaryError( | |
| const std::string& devtool_request_id, | |
| const GURL& url, | |
| network::mojom::SharedDictionaryError error) override; | |
| void OnSRIMessageSignatureIssue( | |
| const std::string& devtool_request_id, | |
| const GURL& url, | |
| std::vector<network::mojom::SRIMessageSignatureIssuePtr> issues) override; | |
| void OnUnencodedDigestError( | |
| const std::string& devtool_request_id, | |
| const GURL& url, | |
| network::mojom::UnencodedDigestIssue issue) override; | |
| void OnConnectionAllowlistIssue( | |
| const std::string& devtool_request_id, | |
| const GURL& url, | |
| network::mojom::ConnectionAllowlistIssue issue) override; | |
| void Clone(mojo::PendingReceiver<network::mojom::DevToolsObserver> listener) | |
| override; | |
| DevToolsAgentHostImpl* GetDevToolsAgentHost(); | |
| // This will be set for devtools observers that are created with a worker | |
| // context, empty otherwise. | |
| const std::string devtools_agent_id_; | |
| // This will be set for devtools observers that are created with a frame | |
| // context, otherwise it will be unset. | |
| const FrameTreeNodeId frame_tree_node_id_; | |
| }; | |
| } // namespace content | |
| #endif // CONTENT_BROWSER_DEVTOOLS_NETWORK_SERVICE_DEVTOOLS_OBSERVER_H_ |