aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp')
-rw-r--r--tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp b/tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp
index 7864fc43c4..2203888062 100644
--- a/tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp
+++ b/tools/skqp/jni/org_skia_skqp_SkQPRunner.cpp
@@ -13,10 +13,12 @@
#include <jni.h>
#include <sys/stat.h>
-#include "gm_runner.h"
+#include "ResourceFactory.h"
+#include "SkOSPath.h"
+#include "SkStream.h"
#include "gm_knowledge.h"
+#include "gm_runner.h"
#include "skqp_asset_manager.h"
-#include "SkStream.h"
////////////////////////////////////////////////////////////////////////////////
extern "C" {
@@ -108,6 +110,25 @@ static jclass gStringClass = nullptr;
////////////////////////////////////////////////////////////////////////////////
+sk_sp<SkData> get_resource(const char* resource) {
+ AAssetManager* mgr = gAssetManager.fMgr;
+ if (!mgr) {
+ return nullptr;
+ }
+ SkString path = SkOSPath::Join("resources", resource);
+ AAsset* asset = AAssetManager_open(mgr, path.c_str(), AASSET_MODE_STREAMING);
+ if (!asset) {
+ return nullptr;
+ }
+ size_t size = SkToSizeT(AAsset_getLength(asset));
+ sk_sp<SkData> data = SkData::MakeUninitialized(size);
+ (void)AAsset_read(asset, data->writable_data(), size);
+ AAsset_close(asset);
+ return data;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
template <typename T, typename F>
jobjectArray to_java_string_array(JNIEnv* env,
const std::vector<T>& array,
@@ -131,6 +152,7 @@ void Java_org_skia_skqp_SkQP_nInit(JNIEnv* env, jobject object, jobject assetMan
gm_runner::InitSkia(experimentalMode ? gm_runner::Mode::kExperimentalMode
: gm_runner::Mode::kCompatibilityTestMode,
&gAssetManager);
+ gResourceFactory = &get_resource;
const char* dataDirString = env->GetStringUTFChars(dataDir, nullptr);
jassert(env, dataDirString && dataDirString[0]);