// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_NET_LOG_NET_EXPORT_FILE_WRITER_H_ #define COMPONENTS_NET_LOG_NET_EXPORT_FILE_WRITER_H_ #include <memory> #include <string> #include "base/command_line.h" #include "base/files/file.h" #include "base/files/file_path.h" #include "base/functional/callback.h" #include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/threading/thread_checker.h" #include "base/values.h" #include "mojo/public/cpp/bindings/remote.h" #include "net/log/net_log_capture_mode.h" #include "services/network/public/mojom/network_service.mojom.h" namespace base { class TaskRunner; } // namespace base namespace network { namespace mojom { class NetworkContext; } } // namespace network namespace net_log { // NetExportFileWriter is used exclusively as a support class for // chrome://net-export/. There's a single instance created globally that acts as // the interface to all NetExportMessageHandlers which can tell it to start or // stop logging in response to user actions from chrome://net-export/ UIs. // Because there's only one instance, the logging state can be shared between // multiple instances of the chrome://net-export/ UI. Internally, it manages a // pipe to an instance of network::NetLogExporter and handles the // attaching/detaching of it to the NetLog. This class is used by the iOS and // non-iOS implementations of chrome://net-export/. // // NetExportFileWriter maintains the current logging state using the members // |state_|, |log_exists_|, |log_capture_mode_known_|, |log_capture_mode_|. // Its three main commands are Initialize(), StartNetLog(), and StopNetLog(). // These are the only functions that may cause NetExportFileWriter to change // state. Initialize() must be called before NetExportFileWriter can process any // other commands. A portion of the initialization needs to run on the // |file_task_runner_|. // // This class is created and destroyed on the UI thread, and all public entry // points are to be called on the UI thread. Internally, the class may run some // code on the |file_task_runner_|. class NetExportFileWriter { … }; } // namespace net_log #endif // COMPONENTS_NET_LOG_NET_EXPORT_FILE_WRITER_H_