Skip to content

Commit d1c1345

Browse files
Googlera-maurice
authored andcommitted
Add content provider support to the FTL Android initialization
The FTL game loop runner was recently changed to add a content provider to share game loop data with the app under test (cl/307423902). This is a more robust way of passing game loop scenario data since the content provider can always be queried, but the intent that starts the game loop can be lost (e.g. when Unity transitions to a different scene). This adds support for the SDK to retrieve the data from the content provider at initialization, and fall back on the intent for backwards compatability. #FTLGameSDK PiperOrigin-RevId: 311586597
1 parent 4124b48 commit d1c1345

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

app/src/util_android.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ METHOD_LOOKUP_DEFINITION(class_class, "java/lang/Class", CLASS_METHODS)
194194
METHOD_LOOKUP_DEFINITION(content_resolver, "android/content/ContentResolver",
195195
CONTENTRESOLVER_METHODS)
196196
METHOD_LOOKUP_DEFINITION(context, "android/content/Context", CONTEXT_METHODS)
197+
METHOD_LOOKUP_DEFINITION(cursor, "android/database/Cursor", CURSOR_METHODS)
197198
METHOD_LOOKUP_DEFINITION(date, "java/util/Date", DATE_METHODS);
198199
METHOD_LOOKUP_DEFINITION(double_class, "java/lang/Double", DOUBLE_METHODS)
199200
METHOD_LOOKUP_DEFINITION(file, "java/io/File", FILE_METHODS)
@@ -372,6 +373,7 @@ static void ReleaseClasses(JNIEnv* env) {
372373
class_class::ReleaseClass(env);
373374
content_resolver::ReleaseClass(env);
374375
context::ReleaseClass(env);
376+
cursor::ReleaseClass(env);
375377
date::ReleaseClass(env);
376378
dex_class_loader::ReleaseClass(env);
377379
double_class::ReleaseClass(env);
@@ -468,6 +470,7 @@ bool Initialize(JNIEnv* env, jobject activity_object) {
468470
class_class::CacheMethodIds(env, activity_object) &&
469471
content_resolver::CacheMethodIds(env, activity_object) &&
470472
context::CacheMethodIds(env, activity_object) &&
473+
cursor::CacheMethodIds(env, activity_object) &&
471474
date::CacheMethodIds(env, activity_object) &&
472475
dex_class_loader::CacheMethodIds(env, activity_object) &&
473476
double_class::CacheMethodIds(env, activity_object) &&

app/src/util_android.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -692,10 +692,13 @@ METHOD_LOOKUP_DECLARATION(uri, URI_METHODS)
692692
METHOD_LOOKUP_DECLARATION(object, OBJECT_METHODS)
693693

694694
// clang-format off
695-
#define CONTENTRESOLVER_METHODS(X) \
696-
X(OpenAssetFileDescriptor, "openAssetFileDescriptor", \
697-
"(Landroid/net/Uri;Ljava/lang/String;)" \
698-
"Landroid/content/res/AssetFileDescriptor;")
695+
#define CONTENTRESOLVER_METHODS(X) \
696+
X(OpenAssetFileDescriptor, "openAssetFileDescriptor", \
697+
"(Landroid/net/Uri;Ljava/lang/String;)" \
698+
"Landroid/content/res/AssetFileDescriptor;"), \
699+
X(Query, "query", \
700+
"(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;" \
701+
"[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;")
699702
// clang-format on
700703
METHOD_LOOKUP_DECLARATION(content_resolver, CONTENTRESOLVER_METHODS)
701704

@@ -705,13 +708,22 @@ METHOD_LOOKUP_DECLARATION(content_resolver, CONTENTRESOLVER_METHODS)
705708
"()Landroid/os/ParcelFileDescriptor;")
706709
// clang-format on
707710
METHOD_LOOKUP_DECLARATION(asset_file_descriptor, ASSETFILEDESCRIPTOR_METHODS)
708-
//
711+
709712
// clang-format off
710713
#define PARCELFILEDESCRIPTOR_METHODS(X) \
711714
X(DetachFd, "detachFd", "()I")
712715
// clang-format on
713716
METHOD_LOOKUP_DECLARATION(parcel_file_descriptor, PARCELFILEDESCRIPTOR_METHODS)
714717

718+
// clang-format off
719+
#define CURSOR_METHODS(X) \
720+
X(GetColumnIndex, "getColumnIndex", "(Ljava/lang/String;)I"), \
721+
X(GetInt, "getInt", "(I)I"), \
722+
X(GetString, "getString", "(I)Ljava/lang/String;"), \
723+
X(MoveToFirst, "moveToFirst", "()Z")
724+
// clang-format on
725+
METHOD_LOOKUP_DECLARATION(cursor, CURSOR_METHODS)
726+
715727
// Holds a reference to a Java thread that will execute a C++ method.
716728
//
717729
// To support cancelation (i.e. using ReleaseExecuteCancelLock() and

0 commit comments

Comments
 (0)