chromium/chrome/browser/ash/system_logs/ui_hierarchy_log_source.cc

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ash/system_logs/ui_hierarchy_log_source.h"

#include <memory>
#include <utility>

#include "ash/public/cpp/debug_utils.h"

namespace system_logs {

void UiHierarchyLogSource::Fetch(SysLogsSourceCallback callback) {
  DCHECK(!callback.is_null());

  auto response = std::make_unique<SystemLogsResponse>();

  {
    std::ostringstream out;
    ash::debug::PrintWindowHierarchy(&out, scrub_data_);
    response->emplace("UI Hierarchy: Windows", out.str());
  }

  {
    std::ostringstream out;
    ash::debug::PrintViewHierarchy(&out);
    response->emplace("UI Hierarchy: Views", out.str());
  }

  {
    std::ostringstream out;
    ash::debug::PrintLayerHierarchy(&out);
    response->emplace("UI Hierarchy: Layers", out.str());
  }

  std::move(callback).Run(std::move(response));
}

}  // namespace system_logs