#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "components/viz/service/debugger/viz_debugger.h"
#include <algorithm>
#include <atomic>
#include <string>
#include <utility>
#include "base/base64.h"
#include "base/strings/string_number_conversions.h"
#include "base/task/sequenced_task_runner.h"
#include "base/values.h"
#include "third_party/skia/include/core/SkStream.h"
#include "third_party/skia/include/core/SkSwizzle.h"
#include "third_party/skia/include/encode/SkPngEncoder.h"
#if VIZ_DEBUGGER_IS_ON()
#include "base/threading/platform_thread.h"
#include "base/threading/thread_id_name_manager.h"
namespace viz {
static const int kVizDebuggerVersion = …;
std::atomic<bool> VizDebugger::enabled_ = …;
VizDebugger::BufferInfo::BufferInfo() = default;
VizDebugger::BufferInfo::~BufferInfo() = default;
VizDebugger::BufferInfo::BufferInfo(const BufferInfo& a) = default;
VizDebugger* VizDebugger::GetInstance() { … }
VizDebugger::FilterBlock::FilterBlock(const std::string file_str,
const std::string func_str,
const std::string anno_str,
bool is_active,
bool is_enabled)
: … { … }
VizDebugger::FilterBlock::~FilterBlock() = default;
VizDebugger::FilterBlock::FilterBlock(const FilterBlock& other) = default;
base::Value::Dict VizDebugger::CallSubmitCommon::GetDictionaryValue() const { … }
VizDebugger::StaticSource::StaticSource(const char* anno_name,
const char* file_name,
int file_line,
const char* func_name)
: … { … }
VizDebugger::VizDebugger()
: … { … }
VizDebugger::~VizDebugger() = default;
void VizDebugger::SubmitBuffer(int buff_id, VizDebugger::BufferInfo&& buffer) { … }
base::Value VizDebugger::FrameAsJson(const uint64_t counter,
const gfx::Size& window_pix,
base::TimeTicks time_ticks) { … }
void VizDebugger::UpdateFilters() { … }
void VizDebugger::CompleteFrame(uint64_t counter,
const gfx::Size& window_pix,
base::TimeTicks time_ticks) { … }
void VizDebugger::ApplyFilters(VizDebugger::StaticSource* src) { … }
void VizDebugger::RegisterSource(StaticSource* src) { … }
void VizDebugger::Draw(const gfx::SizeF& obj_size,
const gfx::Vector2dF& pos,
const VizDebugger::StaticSource* dcs,
VizDebugger::DrawOption option,
int* id,
const gfx::RectF& uv,
const std::string& text) { … }
void VizDebugger::DrawInternal(const gfx::SizeF& obj_size,
const gfx::Vector2dF& pos,
const VizDebugger::StaticSource* dcs,
VizDebugger::DrawOption option,
int* id,
const gfx::RectF& uv,
const std::string& text) { … }
void VizDebugger::AddFrame() { … }
void VizDebugger::FilterDebugStream(base::Value::Dict json) { … }
void VizDebugger::StartDebugStream(
mojo::PendingRemote<mojom::VizDebugOutput> pending_debug_output) { … }
void VizDebugger::StopDebugStream() { … }
void VizDebugger::AddLogMessage(std::string log,
const VizDebugger::StaticSource* dcs,
DrawOption option) { … }
}
#else
namespace viz {
VizDebugger::BufferInfo::BufferInfo() = default;
VizDebugger::BufferInfo::~BufferInfo() = default;
VizDebugger::BufferInfo::BufferInfo(const BufferInfo& a) = default;
std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
DrawRectToTraceValue(const gfx::Vector2dF& pos,
const gfx::SizeF& size,
const std::string& text) {
std::unique_ptr<base::trace_event::TracedValue> state(
new base::trace_event::TracedValue());
state->SetString("pos_x", base::NumberToString(pos.x()));
state->SetString("pos_y", base::NumberToString(pos.y()));
state->SetString("size_x", base::NumberToString(size.width()));
state->SetString("size_y", base::NumberToString(size.height()));
state->SetString("text", text);
return state;
}
}
#endif