
This CL logs UKM events that hopefully will aid in proactively identifying extensions that might be impacted by the changes behind the CorbAllowlistAlsoAppliesToOorCors feature. New UKM collection review (Google-internal): https://docs.google.com/document/d/1RyAO8Con16my4lPkIVe2d1V89HMAISp9uO9h8tHfcNs Bug: 1057232 Change-Id: I6c35c26ec418e1876c088e08d36a1aeeb12ffa47 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2097020 Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Reviewed-by: Martin Barbella <mbarbella@chromium.org> Reviewed-by: Robert Kaplow <rkaplow@chromium.org> Reviewed-by: Xiyuan Xia <xiyuan@chromium.org> Reviewed-by: Alex Moshchuk <alexmos@chromium.org> Reviewed-by: Steven Holte <holte@chromium.org> Auto-Submit: Łukasz Anforowicz <lukasza@chromium.org> Commit-Queue: Martin Barbella <mbarbella@chromium.org> Cr-Commit-Position: refs/heads/master@{#750700}
133 lines
4.8 KiB
C++
133 lines
4.8 KiB
C++
// 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.
|
|
|
|
#ifndef CONTENT_BROWSER_NETWORK_SERVICE_IMPL_H_
|
|
#define CONTENT_BROWSER_NETWORK_SERVICE_IMPL_H_
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/macros.h"
|
|
#include "base/memory/memory_pressure_listener.h"
|
|
#include "base/unguessable_token.h"
|
|
#include "build/build_config.h"
|
|
#include "content/common/content_export.h"
|
|
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
|
#include "mojo/public/cpp/bindings/receiver.h"
|
|
#include "mojo/public/cpp/bindings/remote.h"
|
|
#include "net/cert/cert_database.h"
|
|
#include "services/network/public/mojom/network_service.mojom.h"
|
|
#include "url/gurl.h"
|
|
|
|
#if defined(OS_ANDROID)
|
|
#include "base/android/application_status_listener.h"
|
|
#endif
|
|
|
|
namespace content {
|
|
|
|
class WebRtcConnectionsObserver;
|
|
|
|
class CONTENT_EXPORT NetworkServiceClient
|
|
: public network::mojom::NetworkServiceClient,
|
|
#if defined(OS_ANDROID)
|
|
public net::NetworkChangeNotifier::ConnectionTypeObserver,
|
|
public net::NetworkChangeNotifier::MaxBandwidthObserver,
|
|
public net::NetworkChangeNotifier::IPAddressObserver,
|
|
public net::NetworkChangeNotifier::DNSObserver,
|
|
#endif
|
|
public net::CertDatabase::Observer {
|
|
public:
|
|
explicit NetworkServiceClient(
|
|
mojo::PendingReceiver<network::mojom::NetworkServiceClient>
|
|
network_service_client_receiver);
|
|
~NetworkServiceClient() override;
|
|
|
|
// network::mojom::NetworkServiceClient implementation:
|
|
void OnLoadingStateUpdate(std::vector<network::mojom::LoadInfoPtr> infos,
|
|
OnLoadingStateUpdateCallback callback) override;
|
|
void OnDataUseUpdate(int32_t network_traffic_annotation_id_hash,
|
|
int64_t recv_bytes,
|
|
int64_t sent_bytes) override;
|
|
void OnRawRequest(
|
|
int32_t process_id,
|
|
int32_t routing_id,
|
|
const std::string& devtools_request_id,
|
|
const net::CookieStatusList& cookies_with_status,
|
|
std::vector<network::mojom::HttpRawHeaderPairPtr> headers) override;
|
|
void OnRawResponse(
|
|
int32_t process_id,
|
|
int32_t routing_id,
|
|
const std::string& devtools_request_id,
|
|
const net::CookieAndLineStatusList& cookies_with_status,
|
|
std::vector<network::mojom::HttpRawHeaderPairPtr> headers,
|
|
const base::Optional<std::string>& raw_response_headers) override;
|
|
void OnCorsPreflightRequest(int32_t process_id,
|
|
int32_t render_frame_id,
|
|
const base::UnguessableToken& devtool_request_id,
|
|
const network::ResourceRequest& request,
|
|
const GURL& initiator_url) override;
|
|
void OnCorsPreflightResponse(
|
|
int32_t process_id,
|
|
int32_t render_frame_id,
|
|
const base::UnguessableToken& devtool_request_id,
|
|
const GURL& url,
|
|
network::mojom::URLResponseHeadPtr head) override;
|
|
void OnCorsPreflightRequestCompleted(
|
|
int32_t process_id,
|
|
int32_t render_frame_id,
|
|
const base::UnguessableToken& devtool_request_id,
|
|
const network::URLLoaderCompletionStatus& status) override;
|
|
void LogCrossOriginFetchFromContentScript3(
|
|
const std::string& isolated_world_host) override;
|
|
|
|
// net::CertDatabase::Observer implementation:
|
|
void OnCertDBChanged() override;
|
|
|
|
void OnMemoryPressure(
|
|
base::MemoryPressureListener::MemoryPressureLevel memory_presure_level);
|
|
|
|
// Called when there is a change in the count of media connections that
|
|
// require low network latency.
|
|
void OnPeerToPeerConnectionsCountChange(uint32_t count);
|
|
|
|
#if defined(OS_ANDROID)
|
|
void OnApplicationStateChange(base::android::ApplicationState state);
|
|
|
|
// net::NetworkChangeNotifier::ConnectionTypeObserver implementation:
|
|
void OnConnectionTypeChanged(
|
|
net::NetworkChangeNotifier::ConnectionType type) override;
|
|
|
|
// net::NetworkChangeNotifier::MaxBandwidthObserver implementation:
|
|
void OnMaxBandwidthChanged(
|
|
double max_bandwidth_mbps,
|
|
net::NetworkChangeNotifier::ConnectionType type) override;
|
|
|
|
// net::NetworkChangeNotifier::IPAddressObserver implementation:
|
|
void OnIPAddressChanged() override;
|
|
|
|
// net::NetworkChangeNotifier::DNSObserver implementation:
|
|
void OnDNSChanged() override;
|
|
#endif
|
|
|
|
private:
|
|
mojo::Receiver<network::mojom::NetworkServiceClient> receiver_;
|
|
|
|
std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
|
|
|
|
std::unique_ptr<WebRtcConnectionsObserver> webrtc_connections_observer_;
|
|
|
|
#if defined(OS_ANDROID)
|
|
std::unique_ptr<base::android::ApplicationStatusListener>
|
|
app_status_listener_;
|
|
mojo::Remote<network::mojom::NetworkChangeManager> network_change_manager_;
|
|
#endif
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(NetworkServiceClient);
|
|
};
|
|
|
|
} // namespace content
|
|
|
|
#endif // CONTENT_BROWSER_NETWORK_SERVICE_IMPL_H_
|