123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright 2020 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 SERVICES_NETWORK_NET_LOG_PROXY_SINK_H_
- #define SERVICES_NETWORK_NET_LOG_PROXY_SINK_H_
- #include "base/component_export.h"
- #include "base/memory/weak_ptr.h"
- #include "mojo/public/cpp/bindings/receiver_set.h"
- #include "mojo/public/cpp/bindings/remote_set.h"
- #include "net/log/net_log.h"
- #include "services/network/public/mojom/network_service.mojom.h"
- namespace base {
- class SequencedTaskRunner;
- }
- namespace network {
- // Implementation of NetLogProxySink mojo interface which receives external
- // NetLog events and injects them into the NetLog. Also notifies attached
- // sources when the NetLog capture mode changes.
- class COMPONENT_EXPORT(NETWORK_SERVICE) NetLogProxySink
- : public net::NetLog::ThreadSafeCaptureModeObserver,
- public network::mojom::NetLogProxySink {
- public:
- NetLogProxySink();
- ~NetLogProxySink() override;
- NetLogProxySink(const NetLogProxySink&) = delete;
- NetLogProxySink& operator=(const NetLogProxySink&) = delete;
- // Attaches a source of external NetLog events. The source is automatically
- // removed if the mojo pipes are closed.
- void AttachSource(mojo::PendingRemote<network::mojom::NetLogProxySource>
- proxy_source_remote,
- mojo::PendingReceiver<network::mojom::NetLogProxySink>
- proxy_sink_receiver);
- // net::NetLog::ThreadSafeCaptureModeObserver:
- // Notifies attached sources that the capture mode has changed.
- void OnCaptureModeUpdated(net::NetLogCaptureModeSet modes) override;
- // mojom::NetLogProxySink:
- void AddEntry(uint32_t type,
- uint32_t source_type,
- uint32_t source_id,
- base::TimeTicks source_start_time,
- net::NetLogEventPhase phase,
- base::TimeTicks time,
- base::Value params) override;
- private:
- mojo::RemoteSet<network::mojom::NetLogProxySource> proxy_source_remotes_;
- mojo::ReceiverSet<network::mojom::NetLogProxySink> proxy_sink_receivers_;
- scoped_refptr<base::SequencedTaskRunner> task_runner_;
- // A WeakPtr to |this|, which is used when posting tasks from the
- // NetLog::ThreadSafeCaptureModeObserver to |task_runner_|. This single
- // WeakPtr instance is used for all tasks as the ThreadSafeObserver may call
- // on any thread, so the weak_factory_ cannot be accessed safely from those
- // threads.
- base::WeakPtr<NetLogProxySink> weak_this_;
- base::WeakPtrFactory<NetLogProxySink> weak_factory_{this};
- };
- } // namespace network
- #endif // SERVICES_NETWORK_NET_LOG_PROXY_SINK_H_
|