| Index: net/log/file_net_log_observer.cc
|
| diff --git a/net/log/file_net_log_observer.cc b/net/log/file_net_log_observer.cc
|
| index ef2c6164889a8febb5c2af4152ba9a6b988d8e64..16f160c05def0e8c2983f831b854b0d049bdab2a 100644
|
| --- a/net/log/file_net_log_observer.cc
|
| +++ b/net/log/file_net_log_observer.cc
|
| @@ -216,87 +216,64 @@ class FileNetLogObserver::UnboundedFileWriter
|
| DISALLOW_COPY_AND_ASSIGN(UnboundedFileWriter);
|
| };
|
|
|
| -FileNetLogObserver::FileNetLogObserver(
|
| - scoped_refptr<base::SingleThreadTaskRunner> file_task_runner)
|
| - : file_task_runner_(file_task_runner) {}
|
| -
|
| -FileNetLogObserver::~FileNetLogObserver() {
|
| - if (net_log()) {
|
| - // StopObserving was not called.
|
| - file_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&FileNetLogObserver::FileWriter::DeleteAllFiles,
|
| - base::Unretained(file_writer_)));
|
| - net_log()->DeprecatedRemoveObserver(this);
|
| - }
|
| -
|
| - file_task_runner_->DeleteSoon(FROM_HERE, file_writer_);
|
| -}
|
| -
|
| -void FileNetLogObserver::StartObservingBounded(
|
| - NetLog* net_log,
|
| - NetLogCaptureMode capture_mode,
|
| +std::unique_ptr<FileNetLogObserver> FileNetLogObserver::CreateBounded(
|
| + scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
|
| const base::FilePath& directory,
|
| - std::unique_ptr<base::Value> constants,
|
| - URLRequestContext* url_request_context,
|
| size_t max_total_size,
|
| - size_t total_num_files) {
|
| + size_t total_num_files,
|
| + std::unique_ptr<base::Value> constants) {
|
| DCHECK_GT(total_num_files, 0u);
|
| -
|
| - file_writer_ =
|
| - new BoundedFileWriter(directory, max_total_size / total_num_files,
|
| - total_num_files, file_task_runner_);
|
| -
|
| - // The |file_writer_| uses a soft limit to write events to file that allows
|
| - // the size of the file to exceed the limit, but the |write_queue_| uses a
|
| - // hard limit which the size of the |queue_| cannot exceed. Thus, the
|
| - // |file_writer_| may write more events to file than can be contained by the
|
| - // |write_queue_| if they have the same size limit. The maximum size of the
|
| - // |write_queue_| is doubled to allow the |queue_| to hold enough events for
|
| - // the |file_writer_| to fill all files. As long as all events have sizes <=
|
| - // the size of an individual event file, the discrepancy between the hard
|
| - // limit and the soft limit will not cause an issue.
|
| - // TODO(dconnol): Handle the case when the |write_queue_| still doesn't
|
| + // The BoundedFileWriter uses a soft limit to write events to file that allows
|
| + // the size of the file to exceed the limit, but the WriteQueue uses a hard
|
| + // limit which the size of |WriteQueue::queue_| cannot exceed. Thus, the
|
| + // BoundedFileWriter may write more events to file than can be contained by
|
| + // the WriteQueue if they have the same size limit. The maximum size of the
|
| + // WriteQueue is doubled to allow |WriteQueue::queue_| to hold enough events
|
| + // for the BoundedFileWriter to fill all files. As long as all events have
|
| + // sizes <= the size of an individual event file, the discrepancy between the
|
| + // hard limit and the soft limit will not cause an issue.
|
| + // TODO(dconnol): Handle the case when the WriteQueue still doesn't
|
| // contain enough events to fill all files, because of very large events
|
| // relative to file size.
|
| - write_queue_ = new WriteQueue(max_total_size * 2);
|
| + std::unique_ptr<FileWriter> file_writer(
|
| + new BoundedFileWriter(directory, max_total_size / total_num_files,
|
| + total_num_files, file_task_runner));
|
| +
|
| + scoped_refptr<WriteQueue> write_queue(new WriteQueue(max_total_size * 2));
|
|
|
| - StartObservingHelper(net_log, capture_mode, std::move(constants),
|
| - url_request_context);
|
| + return std::unique_ptr<FileNetLogObserver>(
|
| + new FileNetLogObserver(file_task_runner, std::move(file_writer),
|
| + std::move(write_queue), std::move(constants)));
|
| }
|
|
|
| -void FileNetLogObserver::StartObservingUnbounded(
|
| - NetLog* net_log,
|
| - NetLogCaptureMode capture_mode,
|
| - const base::FilePath& filepath,
|
| - std::unique_ptr<base::Value> constants,
|
| - URLRequestContext* url_request_context) {
|
| - file_writer_ = new UnboundedFileWriter(filepath, file_task_runner_);
|
| +std::unique_ptr<FileNetLogObserver> FileNetLogObserver::CreateUnbounded(
|
| + scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
|
| + const base::FilePath& log_path,
|
| + std::unique_ptr<base::Value> constants) {
|
| + std::unique_ptr<FileWriter> file_writer(
|
| + new UnboundedFileWriter(log_path, file_task_runner));
|
|
|
| - write_queue_ = new WriteQueue(std::numeric_limits<size_t>::max());
|
| + scoped_refptr<WriteQueue> write_queue(
|
| + new WriteQueue(std::numeric_limits<size_t>::max()));
|
|
|
| - StartObservingHelper(net_log, capture_mode, std::move(constants),
|
| - url_request_context);
|
| + return std::unique_ptr<FileNetLogObserver>(
|
| + new FileNetLogObserver(file_task_runner, std::move(file_writer),
|
| + std::move(write_queue), std::move(constants)));
|
| }
|
|
|
| -void FileNetLogObserver::StartObservingHelper(
|
| - NetLog* net_log,
|
| - NetLogCaptureMode capture_mode,
|
| - std::unique_ptr<base::Value> constants,
|
| - URLRequestContext* url_request_context) {
|
| - if (!constants)
|
| - constants = GetNetConstants();
|
| - file_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&FileNetLogObserver::FileWriter::Initialize,
|
| - base::Unretained(file_writer_), base::Passed(&constants)));
|
| -
|
| - if (url_request_context) {
|
| - DCHECK(url_request_context->CalledOnValidThread());
|
| - std::set<URLRequestContext*> contexts;
|
| - contexts.insert(url_request_context);
|
| - CreateNetLogEntriesForActiveObjects(contexts, this);
|
| +FileNetLogObserver::~FileNetLogObserver() {
|
| + if (net_log()) {
|
| + // StopObserving was not called.
|
| + file_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&FileNetLogObserver::FileWriter::DeleteAllFiles,
|
| + base::Unretained(file_writer_)));
|
| + net_log()->DeprecatedRemoveObserver(this);
|
| }
|
| + file_task_runner_->DeleteSoon(FROM_HERE, file_writer_);
|
| +}
|
|
|
| +void FileNetLogObserver::StartObserving(NetLog* net_log,
|
| + NetLogCaptureMode capture_mode) {
|
| net_log->DeprecatedAddObserver(this, capture_mode);
|
| }
|
|
|
| @@ -331,6 +308,22 @@ void FileNetLogObserver::OnAddEntry(const NetLogEntry& entry) {
|
| }
|
| }
|
|
|
| +FileNetLogObserver::FileNetLogObserver(
|
| + scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
|
| + std::unique_ptr<FileWriter> file_writer,
|
| + scoped_refptr<WriteQueue> write_queue,
|
| + std::unique_ptr<base::Value> constants)
|
| + : file_task_runner_(std::move(file_task_runner)),
|
| + write_queue_(std::move(write_queue)),
|
| + file_writer_(file_writer.release()) {
|
| + if (!constants)
|
| + constants = GetNetConstants();
|
| + file_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&FileNetLogObserver::FileWriter::Initialize,
|
| + base::Unretained(file_writer_), base::Passed(&constants)));
|
| +}
|
| +
|
| FileNetLogObserver::WriteQueue::WriteQueue(size_t memory_max)
|
| : memory_(0), memory_max_(memory_max) {}
|
|
|
|
|