diff --git a/src/api-impl-jni/app/android_app_Activity.c b/src/api-impl-jni/app/android_app_Activity.c index 3bb27a1a..181cef2c 100644 --- a/src/api-impl-jni/app/android_app_Activity.c +++ b/src/api-impl-jni/app/android_app_Activity.c @@ -313,3 +313,10 @@ JNIEXPORT jboolean JNICALL Java_android_app_Activity_isInMultiWindowMode(JNIEnv { return !gtk_window_is_maximized(window); } + +JNIEXPORT jboolean JNICALL Java_android_app_Activity_isTaskRoot(JNIEnv *env, jobject this) +{ + jobject root_activity = activity_backlog ? g_list_last(activity_backlog)->data : NULL; + // NULL means that we are currently creating the root activity, so no other activity can exist yet + return root_activity == NULL || (*env)->IsSameObject(env, this, root_activity); +} diff --git a/src/api-impl-jni/generated_headers/android_app_Activity.h b/src/api-impl-jni/generated_headers/android_app_Activity.h index b99f8c61..ea63c269 100644 --- a/src/api-impl-jni/generated_headers/android_app_Activity.h +++ b/src/api-impl-jni/generated_headers/android_app_Activity.h @@ -13,6 +13,14 @@ extern "C" { #define android_app_Activity_RESULT_CANCELED 0L #undef android_app_Activity_RESULT_OK #define android_app_Activity_RESULT_OK -1L +/* + * Class: android_app_Activity + * Method: isTaskRoot + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_app_Activity_isTaskRoot + (JNIEnv *, jobject); + /* * Class: android_app_Activity * Method: nativeFinish diff --git a/src/api-impl-jni/generated_headers/android_graphics_Region.h b/src/api-impl-jni/generated_headers/android_graphics_Region.h index 36639151..9c61f909 100644 --- a/src/api-impl-jni/generated_headers/android_graphics_Region.h +++ b/src/api-impl-jni/generated_headers/android_graphics_Region.h @@ -9,14 +9,6 @@ extern "C" { #endif #undef android_graphics_Region_MAX_POOL_SIZE #define android_graphics_Region_MAX_POOL_SIZE 10L -/* - * Class: android_graphics_Region - * Method: isEmpty - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_android_graphics_Region_isEmpty - (JNIEnv *, jobject); - /* * Class: android_graphics_Region * Method: isRect diff --git a/src/api-impl-jni/widgets/WrapperWidget.c b/src/api-impl-jni/widgets/WrapperWidget.c index 00adb9b8..e1f6d9aa 100644 --- a/src/api-impl-jni/widgets/WrapperWidget.c +++ b/src/api-impl-jni/widgets/WrapperWidget.c @@ -250,6 +250,7 @@ void wrapper_widget_set_child(WrapperWidget *parent, GtkWidget *child) // TODO: static guint queue_queue_redraw(GtkWidget *widget) { gtk_widget_queue_draw(widget); + g_object_unref(widget); return G_SOURCE_REMOVE; } @@ -258,7 +259,7 @@ void wrapper_widget_queue_draw(WrapperWidget *wrapper) if (wrapper->draw_method) { /* schedule the call to gtk_widget_queue_draw for a future event loop pass in case we're currently inside the snapshot */ /* GTK+ uses G_PRIORITY_HIGH_IDLE + 10 for resizing operations, and G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. */ - g_idle_add_full(G_PRIORITY_HIGH_IDLE + 20, G_SOURCE_FUNC(queue_queue_redraw), &wrapper->parent_instance, NULL); + g_idle_add_full(G_PRIORITY_HIGH_IDLE + 20, G_SOURCE_FUNC(queue_queue_redraw), g_object_ref(wrapper), NULL); } if(wrapper->child) diff --git a/src/api-impl-jni/widgets/android_webkit_WebView.c b/src/api-impl-jni/widgets/android_webkit_WebView.c index 33dcb5f7..68b82ec8 100644 --- a/src/api-impl-jni/widgets/android_webkit_WebView.c +++ b/src/api-impl-jni/widgets/android_webkit_WebView.c @@ -74,5 +74,5 @@ JNIEXPORT void JNICALL Java_android_webkit_WebView_native_1loadDataWithBaseURL(J jsize data_jlen = (*env)->GetStringLength(env, data_jstr); char *data = malloc(data_len + 1); // + 1 for NUL (*env)->GetStringUTFRegion(env, data_jstr, 0, data_jlen, data); - webkit_web_view_load_bytes(webview, g_bytes_new(data, data_len), mime_type ? _CSTRING(mime_type) : "text/html", _CSTRING(encoding), _CSTRING(base_url)); + webkit_web_view_load_bytes(webview, g_bytes_new(data, data_len), mime_type ? _CSTRING(mime_type) : "text/html", encoding ? _CSTRING(encoding) : NULL, base_url ? _CSTRING(base_url) : NULL); } diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java index a29cb755..592d129d 100644 --- a/src/api-impl/android/app/Activity.java +++ b/src/api-impl/android/app/Activity.java @@ -568,9 +568,7 @@ public class Activity extends ContextThemeWrapper implements Window.Callback, La public void overridePendingTransition(int enterAnim, int exitAnim) {} - public boolean isTaskRoot() { - return false; - } + public native boolean isTaskRoot(); public void postponeEnterTransition() {} diff --git a/src/api-impl/android/content/AbstractThreadedSyncAdapter.java b/src/api-impl/android/content/AbstractThreadedSyncAdapter.java new file mode 100644 index 00000000..11e78cdb --- /dev/null +++ b/src/api-impl/android/content/AbstractThreadedSyncAdapter.java @@ -0,0 +1,4 @@ +package android.content; + +public class AbstractThreadedSyncAdapter { +} diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index 23d4057b..e713acde 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -12,6 +12,7 @@ import org.xmlpull.v1.XmlPullParser; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; +import java.util.Objects; import java.util.Set; public class Intent implements Parcelable { @@ -416,4 +417,11 @@ public class Intent implements Parcelable { public Intent getSelector() { return selector; } + + public boolean filterEquals(Intent other) { + return Objects.equals(this.action, other.action) + && Objects.equals(this.component, other.component) + && Objects.equals(this.data, other.data) + && Objects.equals(this.type, other.type); + } } diff --git a/src/api-impl/android/content/Loader.java b/src/api-impl/android/content/Loader.java new file mode 100644 index 00000000..381281f2 --- /dev/null +++ b/src/api-impl/android/content/Loader.java @@ -0,0 +1,4 @@ +package android.content; + +public class Loader { +} diff --git a/src/api-impl/android/graphics/Canvas.java b/src/api-impl/android/graphics/Canvas.java index 6705123f..fcf58ada 100644 --- a/src/api-impl/android/graphics/Canvas.java +++ b/src/api-impl/android/graphics/Canvas.java @@ -521,17 +521,17 @@ public class Canvas { } public boolean clipRect(RectF rect) { - Log.w("Canvas", "STUB: clipRect"); + Log.v("Canvas", "STUB: clipRect"); return false; } public boolean clipRect(float left, float top, float right, float bottom, Region.Op op) { - Log.w("Canvas", "STUB: clipRect"); + Log.v("Canvas", "STUB: clipRect"); return false; } public boolean clipRect(RectF rect, Region.Op op) { - Log.w("Canvas", "STUB: clipRect"); + Log.v("Canvas", "STUB: clipRect"); return false; } @@ -550,4 +550,8 @@ public class Canvas { public void drawPicture(Picture picture) { Log.w("Canvas", "STUB: drawPicture"); } + + public void drawPoint(float x, float y, Paint paint) { + Log.w("Canvas", "STUB: drawPoint"); + } } diff --git a/src/api-impl/android/graphics/Region.java b/src/api-impl/android/graphics/Region.java index 9775fd2d..dd010e15 100644 --- a/src/api-impl/android/graphics/Region.java +++ b/src/api-impl/android/graphics/Region.java @@ -86,7 +86,8 @@ public class Region { * Set the region to the specified rectangle */ public boolean set(Rect r) { - return nativeSetRect(mNativeRegion, r.left, r.top, r.right, r.bottom); + // return nativeSetRect(mNativeRegion, r.left, r.top, r.right, r.bottom); + return false; } /** @@ -107,7 +108,9 @@ public class Region { /** * Return true if this region is empty */ - public native boolean isEmpty(); + public /*native*/ boolean isEmpty() { + return false; + } /** * Return true if the region contains a single rectangle @@ -124,7 +127,7 @@ public class Region { */ public Rect getBounds() { Rect r = new Rect(); - nativeGetBounds(mNativeRegion, r); + // nativeGetBounds(mNativeRegion, r); return r; } @@ -264,8 +267,9 @@ public class Region { * regions. Return true if the result is not empty. */ public boolean op(Region region1, Region region2, Op op) { - return nativeOp(mNativeRegion, region1.mNativeRegion, - region2.mNativeRegion, op.nativeInt); + // return nativeOp(mNativeRegion, region1.mNativeRegion, + // region2.mNativeRegion, op.nativeInt); + return false; } public String toString() { return nativeToString(mNativeRegion); diff --git a/src/api-impl/android/net/NetworkInfo.java b/src/api-impl/android/net/NetworkInfo.java index f31ffae6..871f13d1 100644 --- a/src/api-impl/android/net/NetworkInfo.java +++ b/src/api-impl/android/net/NetworkInfo.java @@ -23,7 +23,7 @@ public class NetworkInfo { } public int getType() { - return 0x8; // TYPE_DUMMY + return state == State.CONNECTED ? /*TYPE_WIFI*/0x1 : 0x0; } public boolean isConnected() { diff --git a/src/api-impl/android/speech/tts/TextToSpeech.java b/src/api-impl/android/speech/tts/TextToSpeech.java index 544d88b7..c393ba7b 100644 --- a/src/api-impl/android/speech/tts/TextToSpeech.java +++ b/src/api-impl/android/speech/tts/TextToSpeech.java @@ -20,9 +20,17 @@ public class TextToSpeech { return ERROR; } + public int setOnUtteranceProgressListener(UtteranceProgressListener listener) { + return ERROR; + } + public void shutdown() { } + public int stop() { + return ERROR; + } + public static interface OnInitListener { abstract void onInit(int status); } diff --git a/src/api-impl/android/speech/tts/UtteranceProgressListener.java b/src/api-impl/android/speech/tts/UtteranceProgressListener.java new file mode 100644 index 00000000..512b720a --- /dev/null +++ b/src/api-impl/android/speech/tts/UtteranceProgressListener.java @@ -0,0 +1,4 @@ +package android.speech.tts; + +public class UtteranceProgressListener { +} diff --git a/src/api-impl/android/webkit/CookieManager.java b/src/api-impl/android/webkit/CookieManager.java index 664f5f07..1e418efe 100644 --- a/src/api-impl/android/webkit/CookieManager.java +++ b/src/api-impl/android/webkit/CookieManager.java @@ -23,4 +23,10 @@ public class CookieManager { public void removeSessionCookies(ValueCallback callback) {} public void flush() {} + + public String getCookie(String url) { + return ""; + } + + public void setCookie(String url, String value) {} } diff --git a/src/api-impl/android/webkit/WebSettings.java b/src/api-impl/android/webkit/WebSettings.java index 776a34ed..0bdc6a52 100644 --- a/src/api-impl/android/webkit/WebSettings.java +++ b/src/api-impl/android/webkit/WebSettings.java @@ -54,4 +54,6 @@ public class WebSettings { public void setBlockNetworkLoads(boolean block) {} public void setMixedContentMode(int mode) {} + + public void setBlockNetworkImage(boolean block) {} } diff --git a/src/api-impl/android/webkit/WebView.java b/src/api-impl/android/webkit/WebView.java index 0d611ceb..84562b89 100644 --- a/src/api-impl/android/webkit/WebView.java +++ b/src/api-impl/android/webkit/WebView.java @@ -96,6 +96,8 @@ public class WebView extends ViewGroup { loadDataWithBaseURL("about:blank", data, mimeType, encoding, "about:blank"); } + public void evaluateJavascript(String script, ValueCallback resultCallback) {} + @Override protected native long native_constructor(Context context, AttributeSet attrs); private native void native_loadDataWithBaseURL(long widget, String baseUrl, String data, String mimeType, String encoding); diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index d9aabd6b..199cbe3f 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -75,6 +75,7 @@ srcs = [ 'android/bluetooth/BluetoothManager.java', 'android/bluetooth/BluetoothProfile.java', 'android/bluetooth/le/ScanCallback.java', + 'android/content/AbstractThreadedSyncAdapter.java', 'android/content/ActivityNotFoundException.java', 'android/content/AsyncQueryHandler.java', 'android/content/ATLMediaContentProvider.java', @@ -94,6 +95,7 @@ srcs = [ 'android/content/Intent.java', 'android/content/IntentFilter.java', 'android/content/IntentSender.java', + 'android/content/Loader.java', 'android/content/OperationApplicationException.java', 'android/content/RestrictionsManager.java', 'android/content/SearchRecentSuggestionsProvider.java', @@ -383,6 +385,7 @@ srcs = [ 'android/security/keystore/KeyGenParameterSpec.java', 'android/service/media/MediaBrowserService.java', 'android/speech/tts/TextToSpeech.java', + 'android/speech/tts/UtteranceProgressListener.java', 'android/telecom/ConnectionService.java', 'android/telecom/TelecomManager.java', 'android/telephony/CellLocation.java',