web_engine_net_log_observer.cc 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "fuchsia_web/webengine/browser/web_engine_net_log_observer.h"
  5. #include <string>
  6. #include <utility>
  7. #include "base/bind.h"
  8. #include "base/callback.h"
  9. #include "base/command_line.h"
  10. #include "base/files/file_path.h"
  11. #include "base/values.h"
  12. #include "net/log/file_net_log_observer.h"
  13. #include "net/log/net_log.h"
  14. #include "net/log/net_log_util.h"
  15. namespace {
  16. std::unique_ptr<base::Value> GetWebEngineConstants() {
  17. base::Value::Dict constants_dict = net::GetNetConstants();
  18. base::Value::Dict dict;
  19. dict.Set("name", "WebEngine");
  20. dict.Set("command_line",
  21. base::CommandLine::ForCurrentProcess()->GetCommandLineString());
  22. constants_dict.Set("clientInfo", std::move(dict));
  23. return std::make_unique<base::Value>(std::move(constants_dict));
  24. }
  25. } // namespace
  26. WebEngineNetLogObserver::WebEngineNetLogObserver(
  27. const base::FilePath& log_path) {
  28. if (!log_path.empty()) {
  29. net::NetLogCaptureMode capture_mode = net::NetLogCaptureMode::kDefault;
  30. file_net_log_observer_ = net::FileNetLogObserver::CreateUnbounded(
  31. log_path, capture_mode, GetWebEngineConstants());
  32. file_net_log_observer_->StartObserving(net::NetLog::Get());
  33. }
  34. }
  35. WebEngineNetLogObserver::~WebEngineNetLogObserver() {
  36. if (file_net_log_observer_)
  37. file_net_log_observer_->StopObserving(nullptr, base::OnceClosure());
  38. }