#include "base/debug/task_trace.h"
#include <algorithm>
#include <iostream>
#include <sstream>
#include "base/pending_task.h"
#include "base/ranges/algorithm.h"
#include "base/task/common/task_annotator.h"
#include "build/build_config.h"
#if BUILDFLAG(IS_ANDROID)
#include <android/log.h>
#include "base/no_destructor.h"
#endif
namespace base {
namespace debug {
namespace {
#if BUILDFLAG(IS_ANDROID)
class AndroidErrBuffer : public std::stringbuf {
protected:
int sync() override {
__android_log_write(ANDROID_LOG_ERROR, "chromium", str().c_str());
return 0;
}
};
std::ostream& DefaultOutputStream() {
static NoDestructor<AndroidErrBuffer> buf;
static NoDestructor<std::ostream> out(buf.get());
return *out;
}
#else
std::ostream& DefaultOutputStream() { … }
#endif
}
TaskTrace::TaskTrace() { … }
bool TaskTrace::empty() const { … }
void TaskTrace::Print() const { … }
void TaskTrace::OutputToStream(std::ostream* os) const { … }
std::string TaskTrace::ToString() const { … }
size_t TaskTrace::GetAddresses(span<const void*> addresses) const { … }
std::ostream& operator<<(std::ostream& os, const TaskTrace& task_trace) { … }
}
}