#include "services/screen_ai/screen_ai_library_wrapper_impl.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/stringprintf.h"
#include "components/crash/core/common/crash_key.h"
#include "ui/accessibility/accessibility_features.h"
namespace screen_ai {
namespace {
#if BUILDFLAG(IS_CHROMEOS_ASH)
void HandleLibraryLogging(int severity, const char* message) {
switch (severity) {
case logging::LOGGING_VERBOSE:
case logging::LOGGING_INFO:
VLOG(2) << message;
break;
case logging::LOGGING_WARNING:
VLOG(1) << message;
break;
case logging::LOGGING_ERROR:
case logging::LOGGING_FATAL:
VLOG(0) << message;
break;
}
}
#endif
}
ScreenAILibraryWrapperImpl::ScreenAILibraryWrapperImpl() = default;
template <typename T>
bool ScreenAILibraryWrapperImpl::LoadFunction(T& function_variable,
const char* function_name) { … }
bool ScreenAILibraryWrapperImpl::Load(const base::FilePath& library_path) { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
NO_SANITIZE("cfi-icall")
void ScreenAILibraryWrapperImpl::ScreenAILibraryWrapperImpl::SetLogger() {
CHECK(set_logger_);
set_logger_(&HandleLibraryLogging);
}
#endif
NO_SANITIZE("cfi-icall")
void ScreenAILibraryWrapperImpl::GetLibraryVersion(uint32_t& major,
uint32_t& minor) { … }
NO_SANITIZE("cfi-icall")
void ScreenAILibraryWrapperImpl::SetFileContentFunctions(
uint32_t (*get_file_content_size)(const char* ),
void (*get_file_content)(const char* ,
uint32_t ,
char* )) { … }
NO_SANITIZE("cfi-icall")
void ScreenAILibraryWrapperImpl::EnableDebugMode() { … }
NO_SANITIZE("cfi-icall")
bool ScreenAILibraryWrapperImpl::InitOCR() { … }
NO_SANITIZE("cfi-icall")
bool ScreenAILibraryWrapperImpl::InitMainContentExtraction() { … }
NO_SANITIZE("cfi-icall")
std::optional<chrome_screen_ai::VisualAnnotation>
ScreenAILibraryWrapperImpl::PerformOcr(const SkBitmap& image) { … }
NO_SANITIZE("cfi-icall")
std::optional<std::vector<int32_t>>
ScreenAILibraryWrapperImpl::ExtractMainContent(
const std::string& serialized_view_hierarchy) { … }
}