From 6cd816859e462e8741ced8dc24c00b7cd8304e2a Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Thu, 3 May 2018 21:53:11 -0700 Subject: tests: Add tests for ScreenRecoveryUI. In order to support that, this CL adds Paths::set_resource_dir() to override the default resource dir ("/res/images/") that's only available under recovery. Note that since there're external modules depending on libminui, it adds a separate function of res_set_resource_dir(), instead of requiring the dependency on libotautil for everyone. Test: mmma -j bootable/recovery Test: Run recovery_unit_test on marlin. Change-Id: I0a7dcf4476808bea9e634eaffc9676f6cbaf92b7 --- minui/include/private/resources.h | 3 +++ minui/resources.cpp | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'minui') diff --git a/minui/include/private/resources.h b/minui/include/private/resources.h index 2a83a1028..047ebe2e3 100644 --- a/minui/include/private/resources.h +++ b/minui/include/private/resources.h @@ -82,3 +82,6 @@ class PngHandler { // After initialization, we'll keep the file pointer open before destruction of PngHandler. std::unique_ptr png_fp_{ nullptr, fclose }; }; + +// Overrides the default resource dir, for testing purpose. +void res_set_resource_dir(const std::string&); diff --git a/minui/resources.cpp b/minui/resources.cpp index 9f67cf844..c018d9b8c 100644 --- a/minui/resources.cpp +++ b/minui/resources.cpp @@ -32,7 +32,6 @@ #include #include -#include #include #include @@ -40,6 +39,8 @@ #define SURFACE_DATA_ALIGNMENT 8 +static std::string g_resource_dir{ "/res/images" }; + static GRSurface* malloc_surface(size_t data_size) { size_t size = sizeof(GRSurface) + data_size + SURFACE_DATA_ALIGNMENT; unsigned char* temp = static_cast(malloc(size)); @@ -51,7 +52,7 @@ static GRSurface* malloc_surface(size_t data_size) { } PngHandler::PngHandler(const std::string& name) { - std::string res_path = android::base::StringPrintf("/res/images/%s.png", name.c_str()); + std::string res_path = g_resource_dir + "/" + name + ".png"; png_fp_.reset(fopen(res_path.c_str(), "rbe")); // Try to read from |name| if the resource path does not work. if (!png_fp_) { @@ -340,6 +341,10 @@ int res_create_alpha_surface(const char* name, GRSurface** pSurface) { return 0; } +void res_set_resource_dir(const std::string& dirname) { + g_resource_dir = dirname; +} + // This function tests if a locale string stored in PNG (prefix) matches // the locale string provided by the system (locale). bool matches_locale(const std::string& prefix, const std::string& locale) { -- cgit v1.2.3