From 52ba4434015497bfd19f1fae28899f36bdb7913e Mon Sep 17 00:00:00 2001 From: Mis012 Date: Thu, 24 Nov 2022 23:10:27 +0100 Subject: [PATCH] misc stubbing --- src/api-impl/android/app/Application.java | 4 +++ .../android/content/ContentResolver.java | 6 +++- src/api-impl/android/content/Context.java | 10 ++++++- src/api-impl/android/content/Intent.java | 13 ++++++++- .../android/content/res/Resources.java | 14 +++++----- .../android/database/ContentObserver.java | 11 ++++++++ src/api-impl/android/database/Cursor.java | 9 ++---- .../hardware/display/DisplayManager.java | 5 ++++ src/api-impl/android/media/AudioManager.java | 4 +++ src/api-impl/android/os/Handler.java | 2 +- src/api-impl/android/provider/Settings.java | 28 +++++++++++++++---- .../android/telephony/PhoneStateListener.java | 5 ++++ src/api-impl/android/view/Choreographer.java | 5 ++++ src/api-impl/android/view/View.java | 11 ++++++++ src/api-impl/android/view/ViewGroup.java | 13 ++++----- src/api-impl/meson.build | 4 +++ 16 files changed, 114 insertions(+), 30 deletions(-) create mode 100644 src/api-impl/android/database/ContentObserver.java create mode 100644 src/api-impl/android/hardware/display/DisplayManager.java create mode 100644 src/api-impl/android/telephony/PhoneStateListener.java create mode 100644 src/api-impl/android/view/Choreographer.java diff --git a/src/api-impl/android/app/Application.java b/src/api-impl/android/app/Application.java index 60975aa6..7a2231b5 100644 --- a/src/api-impl/android/app/Application.java +++ b/src/api-impl/android/app/Application.java @@ -3,5 +3,9 @@ package android.app; import android.content.Context; public class Application extends Context { + public interface ActivityLifecycleCallbacks {} + public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) { + + } } diff --git a/src/api-impl/android/content/ContentResolver.java b/src/api-impl/android/content/ContentResolver.java index aee556bb..77962010 100644 --- a/src/api-impl/android/content/ContentResolver.java +++ b/src/api-impl/android/content/ContentResolver.java @@ -1,5 +1,9 @@ package android.content; -public class ContentResolver { +import android.net.Uri; +import android.database.ContentObserver; +public class ContentResolver { + public final void registerContentObserver(Uri uri, boolean notifyForDescendants, ContentObserver observer) { + } } diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java index 03154a11..183d2d68 100644 --- a/src/api-impl/android/content/Context.java +++ b/src/api-impl/android/content/Context.java @@ -42,6 +42,7 @@ public class Context extends Object { static DisplayMetrics dm; static Configuration config; static Resources r; + static ApplicationInfo application_info; static String apk_path = "/tmp/APK_PATH_SHOULD_HAVE_BEEN_FILLED_IN_BY_CODE_IN_main.c/"; @@ -59,14 +60,21 @@ public class Context extends Object { config = new Configuration(); r = new Resources(assets, dm, config); this_application = new Application(); // TODO: the application context is presumably not identical to the Activity context, what is the difference for us though? + application_info = new ApplicationInfo(); } public Context() { System.out.println("new Context! this one is: " + this); } + public Resources.Theme getTheme() { + return r.newTheme(); + } + public ApplicationInfo getApplicationInfo () { - return new ApplicationInfo(); + // TODO: do this somewhere saner? + application_info.nativeLibraryDir = (new File(getDataDirFile(), "lib")).getAbsolutePath(); + return application_info; } public Context getApplicationContext() { diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index ffbdfe73..8a8e4a4b 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -114,8 +114,19 @@ public class Intent { return this; //?? } - public Intent setClass (Context packageContext, Class cls) { + public Intent setClass(Context packageContext, Class cls) { return this; //?? } + public String getStringExtra(String name) { + return null; + } + + public Uri getData() { + return null; + } + + public boolean getBooleanExtra(String name, boolean defaultValue) { + return defaultValue; + } } diff --git a/src/api-impl/android/content/res/Resources.java b/src/api-impl/android/content/res/Resources.java index 3fb476b8..8e66e85e 100644 --- a/src/api-impl/android/content/res/Resources.java +++ b/src/api-impl/android/content/res/Resources.java @@ -1258,8 +1258,8 @@ public class Resources { int len = attrs.length; TypedArray array = getCachedStyledAttributes(len); array.mRsrcs = attrs; - AssetManager.applyStyle(mTheme, 0, 0, 0, attrs, - array.mData, array.mIndices); +/* AssetManager.applyStyle(mTheme, 0, 0, 0, attrs, + array.mData, array.mIndices);*/ return array; } @@ -1288,7 +1288,7 @@ public class Resources { int len = attrs.length; TypedArray array = getCachedStyledAttributes(len); array.mRsrcs = attrs; - +/* AssetManager.applyStyle(mTheme, 0, resid, 0, attrs, array.mData, array.mIndices); if (false) { @@ -1316,7 +1316,7 @@ public class Resources { + "=" + value; } System.out.println(s); - } + }*/ return array; } @@ -1372,7 +1372,7 @@ public class Resources { int[] attrs, int defStyleAttr, int defStyleRes) { int len = attrs.length; TypedArray array = getCachedStyledAttributes(len); - +/* // XXX note that for now we only work with compiled XML files. // To support generic XML files we will need to manually parse // out the attributes from the XML file (applying type information @@ -1414,7 +1414,7 @@ public class Resources { } System.out.println(s); } - +*/ return array; } @@ -1465,7 +1465,7 @@ public class Resources { /*package*/ Theme() { mAssets = Resources.this.mAssets; - mTheme = mAssets.createTheme(); + mTheme = 0/*mAssets.createTheme()*/; } private final AssetManager mAssets; diff --git a/src/api-impl/android/database/ContentObserver.java b/src/api-impl/android/database/ContentObserver.java new file mode 100644 index 00000000..b488bc60 --- /dev/null +++ b/src/api-impl/android/database/ContentObserver.java @@ -0,0 +1,11 @@ +package android.database; + +import android.os.Handler; + +public class ContentObserver { + public ContentObserver() { + } + + public ContentObserver(Handler handler) { + } +} diff --git a/src/api-impl/android/database/Cursor.java b/src/api-impl/android/database/Cursor.java index 3f9285c3..2858d3b7 100644 --- a/src/api-impl/android/database/Cursor.java +++ b/src/api-impl/android/database/Cursor.java @@ -16,17 +16,14 @@ package android.database; -//import android.content.ContentResolver; -//import android.net.Uri; +import android.database.ContentObserver; +import android.content.ContentResolver; +import android.net.Uri; import android.os.Bundle; import java.io.Closeable; -class Uri {} -class ContentResolver {} - class CharArrayBuffer {} -class ContentObserver {} class DataSetObserver {} /** diff --git a/src/api-impl/android/hardware/display/DisplayManager.java b/src/api-impl/android/hardware/display/DisplayManager.java new file mode 100644 index 00000000..b34124a4 --- /dev/null +++ b/src/api-impl/android/hardware/display/DisplayManager.java @@ -0,0 +1,5 @@ +package android.hardware.display; + +public final class DisplayManager { + public static interface DisplayListener {} +} diff --git a/src/api-impl/android/media/AudioManager.java b/src/api-impl/android/media/AudioManager.java index f068c5ff..d7bc99ef 100644 --- a/src/api-impl/android/media/AudioManager.java +++ b/src/api-impl/android/media/AudioManager.java @@ -7,4 +7,8 @@ public class AudioManager { public int getRingerMode() { return 0; } + + public int getStreamVolume (int streamType) { + return 0; // arbitrary, shouldn't matter too much? + } } diff --git a/src/api-impl/android/os/Handler.java b/src/api-impl/android/os/Handler.java index 1b07886a..a2395bd6 100644 --- a/src/api-impl/android/os/Handler.java +++ b/src/api-impl/android/os/Handler.java @@ -226,7 +226,7 @@ public class Handler { */ public Handler(Looper looper, Callback callback, boolean async) { mLooper = looper; - mQueue = looper.mQueue; + mQueue = null/*looper.mQueue*/; mCallback = callback; mAsynchronous = async; } diff --git a/src/api-impl/android/provider/Settings.java b/src/api-impl/android/provider/Settings.java index 0988ead6..ee8f30cf 100644 --- a/src/api-impl/android/provider/Settings.java +++ b/src/api-impl/android/provider/Settings.java @@ -1,6 +1,7 @@ package android.provider; import android.content.ContentResolver; +import android.net.Uri; import android.util.AndroidException; public class Settings { @@ -25,14 +26,29 @@ public class Settings { } } public static final class System { - public static int getInt (ContentResolver cr, String key, int def) { - java.lang.System.out.println("!!!! Settings$System.getInt(def: "+def+"): unknown key: >"+key+"<"); - return def; // FIXME + public static final Uri CONTENT_URI = null;//Uri.parse("content://settings/system"); + + public static int getInt(ContentResolver cr, String key, int def) { + int ret = getInt(cr, key); + if(ret != -1) { + return ret; + } else { + return def; // FIXME + } } - public static int getInt (ContentResolver cr, String key) { - java.lang.System.out.println("!!!! Settings$System.getInt: unknown key: >"+key+"<"); - return 0; + public static int getInt(ContentResolver cr, String key) { + switch(key) { + case "accelerometer_rotation": + return 0; // degrees? no clue + default: + java.lang.System.out.println("!!!! Settings$System.getInt: unknown key: >"+key+"<"); + return 0; // TODO: should be -1 probably? + } + } + + public static Uri getUriFor(String name) { + return null; } } diff --git a/src/api-impl/android/telephony/PhoneStateListener.java b/src/api-impl/android/telephony/PhoneStateListener.java new file mode 100644 index 00000000..57675f1d --- /dev/null +++ b/src/api-impl/android/telephony/PhoneStateListener.java @@ -0,0 +1,5 @@ +package android.telephony; + +public class PhoneStateListener { + +} diff --git a/src/api-impl/android/view/Choreographer.java b/src/api-impl/android/view/Choreographer.java new file mode 100644 index 00000000..3626c58e --- /dev/null +++ b/src/api-impl/android/view/Choreographer.java @@ -0,0 +1,5 @@ +package android.view; + +public final class Choreographer { + public static interface FrameCallback {} +} diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 7f402762..9abbeddb 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -3,6 +3,7 @@ package android.view; import android.util.AttributeSet; import android.util.LayoutDirection; import android.content.Context; +import android.content.res.Resources; import android.graphics.Rect; import android.graphics.Canvas; @@ -746,6 +747,10 @@ public class View extends Object { native_set_size_request(MeasureSpec.getSize(measuredWidth), MeasureSpec.getSize(measuredHeight)); } + public Resources getResources() { + return Context.this_application.getResources(); + } + public native void setGravity(int gravity); public native void setOnTouchListener(OnTouchListener l); public native void setOnClickListener(OnClickListener l); @@ -758,6 +763,12 @@ public class View extends Object { // --- stubs + public void setContentDescription(CharSequence contentDescription) { + System.out.println("setContentDescription called with: >"+contentDescription+"<"); + } + + public void setId(int id) {} + public void setOnKeyListener(OnKeyListener l) {} public void setFocusable(boolean focusable) {} diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java index 9c811a92..16f2ae2c 100644 --- a/src/api-impl/android/view/ViewGroup.java +++ b/src/api-impl/android/view/ViewGroup.java @@ -49,13 +49,8 @@ public class ViewGroup extends View implements ViewParent, ViewManager { public native void addView(View child, int index, LayoutParams params); - public native void removeView(View view);/* { - System.out.println("NOT_IMPLEMENTED: ViewGroup.removeView: Gtk4 doesn't have a generic function for removing a child of GtkView, so you must override this function in the actual widget's class"); - }*/ - public native void removeAllViews();/* { - System.out.println("NOT_IMPLEMENTED: ViewGroup.removeAllViews: Gtk4 doesn't have a generic function for removing a child of GtkView, so you must override this function in the actual widget's class"); - new Exception().printStackTrace(); - }*/ + public native void removeView(View view); + public native void removeAllViews(); public View getChildAt(int index) { return children.get(index); @@ -67,6 +62,10 @@ public class ViewGroup extends View implements ViewParent, ViewManager { return new LayoutParams(/*getContext(), attrs*/); } + public void bringChildToFront(View child) { + // TODO: actually implement this (might make sense to implement it in the subclasses instead), when applicable + } + public static class LayoutParams { public static final int FILL_PARENT = -1; public static final int MATCH_PARENT = -1; diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index 863c6177..76a21157 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -62,6 +62,7 @@ hax_jar = jar('hax', [ 'android/content/ServiceConnection.java', 'android/content/SharedPreferences.java', 'android/database/Cursor.java', + 'android/database/ContentObserver.java', 'android/database/sqlite/DatabaseErrorHandler.java', 'android/database/sqlite/SQLiteCursorDriver.java', 'android/database/sqlite/SQLiteCursor.java', @@ -81,6 +82,7 @@ hax_jar = jar('hax', [ 'android/graphics/Rect.java', 'android/graphics/Region.java', 'android/graphics/Typeface.java', + 'android/hardware/display/DisplayManager.java', 'android/hardware/SensorEventListener.java', 'android/hardware/Sensor.java', 'android/hardware/SensorManager.java', @@ -127,6 +129,7 @@ hax_jar = jar('hax', [ 'android/provider/Settings.java', 'android/R.java', 'android/support/v4/app/FragmentActivity.java', + 'android/telephony/PhoneStateListener.java', 'android/telephony/TelephonyManager.java', 'android/text/ClipboardManager.java', 'android/text/GetChars.java', @@ -167,6 +170,7 @@ hax_jar = jar('hax', [ 'android/util/TypedValue.java', 'android/util/Xml.java', 'android/util/XmlPullAttributes.java', + 'android/view/Choreographer.java', 'android/view/Display.java', 'android/view/Gravity.java', 'android/view/InputDevice.java',