Fix atest SkQP crash at startup.

Support for GM tests was removed from SkQP at
http://review.skia.org/516336. However, the Java harness still expects
us to supply a non-null GM array, and will crash if we don't.

Change-Id: I1f093254e680bf8d40dcb303cd29ae7b44e09b0a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/520538
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This commit is contained in:
John Stiles 2022-03-14 12:37:10 -04:00 committed by SkCQ
parent c9e9131f44
commit b9802c75ef

View File

@ -63,6 +63,16 @@ static SkQP gSkQP;
__FILE__ ": assert(" #cond ") failed."); \ __FILE__ ": assert(" #cond ") failed."); \
return ret; } } while (0) return ret; } } while (0)
////////////////////////////////////////////////////////////////////////////////
static jobjectArray make_java_string_array(JNIEnv* env, jint arraySize) {
jclass stringClass = env->FindClass("java/lang/String");
jassert(env, stringClass, nullptr);
jobjectArray jarray = env->NewObjectArray(arraySize, stringClass, nullptr);
jassert(env, jarray != nullptr, nullptr);
return jarray;
}
static void set_string_array_element(JNIEnv* env, jobjectArray a, const char* s, unsigned i) { static void set_string_array_element(JNIEnv* env, jobjectArray a, const char* s, unsigned i) {
jstring jstr = env->NewStringUTF(s); jstring jstr = env->NewStringUTF(s);
jassert(env, jstr != nullptr,); jassert(env, jstr != nullptr,);
@ -70,16 +80,11 @@ static void set_string_array_element(JNIEnv* env, jobjectArray a, const char* s,
env->DeleteLocalRef(jstr); env->DeleteLocalRef(jstr);
} }
////////////////////////////////////////////////////////////////////////////////
template <typename T, typename F> template <typename T, typename F>
jobjectArray to_java_string_array(JNIEnv* env, static jobjectArray to_java_string_array(JNIEnv* env,
const std::vector<T>& array, const std::vector<T>& array,
F toString) { F toString) {
jclass stringClass = env->FindClass("java/lang/String"); jobjectArray jarray = make_java_string_array(env, (jint)array.size());
jassert(env, stringClass, nullptr);
jobjectArray jarray = env->NewObjectArray((jint)array.size(), stringClass, nullptr);
jassert(env, jarray != nullptr, nullptr);
for (unsigned i = 0; i < array.size(); ++i) { for (unsigned i = 0; i < array.size(); ++i) {
set_string_array_element(env, jarray, std::string(toString(array[i])).c_str(), i); set_string_array_element(env, jarray, std::string(toString(array[i])).c_str(), i);
} }
@ -120,6 +125,8 @@ void Java_org_skia_skqp_SkQP_nInit(JNIEnv* env, jobject object, jobject assetMan
to_java_string_array(env, backends, SkQP::GetBackendName)); to_java_string_array(env, backends, SkQP::GetBackendName));
env->SetObjectField(object, env->GetFieldID(SkQP_class, "mUnitTests", kStringArrayType), env->SetObjectField(object, env->GetFieldID(SkQP_class, "mUnitTests", kStringArrayType),
to_java_string_array(env, unitTests, SkQP::GetUnitTestName)); to_java_string_array(env, unitTests, SkQP::GetUnitTestName));
env->SetObjectField(object, env->GetFieldID(SkQP_class, "mGMs", kStringArrayType),
make_java_string_array(env, 0));
} }
jlong Java_org_skia_skqp_SkQP_nExecuteGM(JNIEnv* env, jlong Java_org_skia_skqp_SkQP_nExecuteGM(JNIEnv* env,