You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
api-impl: implement WebView using webkitgtk
This commit is contained in:
@@ -6,6 +6,7 @@ The following environment variables are recognized by the main executable:
|
||||
`ATL_DISABLE_WINDOW_DECORATIONS=` - if set, window decorations will be disabled;
|
||||
this is useful for saving screen space on phone screens, as well as working around the fact that we currently don't account for the titlebar when passing screen size to apps
|
||||
`ATL_UGLY_ENABLE_LOCATION=` - if set, apps will be able to get location data using the relevant android APIs. (TODO: use bubblewrap)
|
||||
`ATL_UGLY_ENABLE_WEBVIEW=` - if not set, WebView will be stubbed as a generic View; this will avoid wasting resources on WebViews which are only used for fingerprinting and ads
|
||||
`UGLY_HACK_FOR_VR` - if set, EGL will use XWayland display on Wayland. This means the app won't be able to draw to it's window, but it will be able to use pbuffers which are not available on wayland. (TODO: just recommend GDK_BACKEND=x11 if pbuffers are needed?)
|
||||
`ATL_FORCE_FULLSCREEN` - if set, will fullscreen the app window on start; this is useful for saving screen space on phone screens, as well as making apps that can't handle arbitrary screen dimensions for some reason happier
|
||||
`ATL_SKIP_NATIVES_EXTRACTION` - if set, natives will not be extracted automatically; it's already possible to replace a native lib, but removing it entirely will normally result in it getting re-extracted, which may not be what you want
|
||||
|
||||
@@ -118,6 +118,7 @@ libtranslationlayer_so = shared_library('translation_layer_main', [
|
||||
'src/api-impl-jni/views/android_view_ViewGroup.c',
|
||||
'src/api-impl-jni/widgets/WrapperWidget.c',
|
||||
'src/api-impl-jni/widgets/android_view_SurfaceView.c',
|
||||
'src/api-impl-jni/widgets/android_webkit_WebView.c',
|
||||
'src/api-impl-jni/widgets/android_widget_AbsListView.c',
|
||||
'src/api-impl-jni/widgets/android_widget_AbsSpinner.c',
|
||||
'src/api-impl-jni/widgets/android_widget_Button.c',
|
||||
@@ -144,7 +145,7 @@ libtranslationlayer_so = shared_library('translation_layer_main', [
|
||||
dependencies: [
|
||||
dependency('gtk4', version: '>=4.8'), dependency('gl'), dependency('egl'), dependency('wayland-client'), dependency('jni'),
|
||||
dependency('libportal'), dependency('sqlite3'), libskia_dep, dependency('libavcodec', version: '>=59'), dependency('libdrm'),
|
||||
dependency('gudev-1.0'), dependency('libswscale'),
|
||||
dependency('gudev-1.0'), dependency('libswscale'), dependency('webkitgtk-6.0'),
|
||||
libandroidfw_dep
|
||||
],
|
||||
link_with: [ libandroid_so ],
|
||||
|
||||
229
src/api-impl-jni/generated_headers/android_webkit_WebView.h
Normal file
229
src/api-impl-jni/generated_headers/android_webkit_WebView.h
Normal file
@@ -0,0 +1,229 @@
|
||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class android_webkit_WebView */
|
||||
|
||||
#ifndef _Included_android_webkit_WebView
|
||||
#define _Included_android_webkit_WebView
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#undef android_webkit_WebView_NO_ID
|
||||
#define android_webkit_WebView_NO_ID -1L
|
||||
#undef android_webkit_WebView_NOT_FOCUSABLE
|
||||
#define android_webkit_WebView_NOT_FOCUSABLE 0L
|
||||
#undef android_webkit_WebView_FOCUSABLE
|
||||
#define android_webkit_WebView_FOCUSABLE 1L
|
||||
#undef android_webkit_WebView_FOCUSABLE_MASK
|
||||
#define android_webkit_WebView_FOCUSABLE_MASK 1L
|
||||
#undef android_webkit_WebView_FITS_SYSTEM_WINDOWS
|
||||
#define android_webkit_WebView_FITS_SYSTEM_WINDOWS 2L
|
||||
#undef android_webkit_WebView_VISIBLE
|
||||
#define android_webkit_WebView_VISIBLE 0L
|
||||
#undef android_webkit_WebView_INVISIBLE
|
||||
#define android_webkit_WebView_INVISIBLE 4L
|
||||
#undef android_webkit_WebView_GONE
|
||||
#define android_webkit_WebView_GONE 8L
|
||||
#undef android_webkit_WebView_VISIBILITY_MASK
|
||||
#define android_webkit_WebView_VISIBILITY_MASK 12L
|
||||
#undef android_webkit_WebView_ENABLED
|
||||
#define android_webkit_WebView_ENABLED 0L
|
||||
#undef android_webkit_WebView_DISABLED
|
||||
#define android_webkit_WebView_DISABLED 32L
|
||||
#undef android_webkit_WebView_ENABLED_MASK
|
||||
#define android_webkit_WebView_ENABLED_MASK 32L
|
||||
#undef android_webkit_WebView_WILL_NOT_DRAW
|
||||
#define android_webkit_WebView_WILL_NOT_DRAW 128L
|
||||
#undef android_webkit_WebView_DRAW_MASK
|
||||
#define android_webkit_WebView_DRAW_MASK 128L
|
||||
#undef android_webkit_WebView_SCROLLBARS_NONE
|
||||
#define android_webkit_WebView_SCROLLBARS_NONE 0L
|
||||
#undef android_webkit_WebView_SCROLLBARS_HORIZONTAL
|
||||
#define android_webkit_WebView_SCROLLBARS_HORIZONTAL 256L
|
||||
#undef android_webkit_WebView_SCROLLBARS_VERTICAL
|
||||
#define android_webkit_WebView_SCROLLBARS_VERTICAL 512L
|
||||
#undef android_webkit_WebView_SCROLLBARS_MASK
|
||||
#define android_webkit_WebView_SCROLLBARS_MASK 768L
|
||||
#undef android_webkit_WebView_FILTER_TOUCHES_WHEN_OBSCURED
|
||||
#define android_webkit_WebView_FILTER_TOUCHES_WHEN_OBSCURED 1024L
|
||||
#undef android_webkit_WebView_OPTIONAL_FITS_SYSTEM_WINDOWS
|
||||
#define android_webkit_WebView_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L
|
||||
#undef android_webkit_WebView_FADING_EDGE_NONE
|
||||
#define android_webkit_WebView_FADING_EDGE_NONE 0L
|
||||
#undef android_webkit_WebView_FADING_EDGE_HORIZONTAL
|
||||
#define android_webkit_WebView_FADING_EDGE_HORIZONTAL 4096L
|
||||
#undef android_webkit_WebView_FADING_EDGE_VERTICAL
|
||||
#define android_webkit_WebView_FADING_EDGE_VERTICAL 8192L
|
||||
#undef android_webkit_WebView_FADING_EDGE_MASK
|
||||
#define android_webkit_WebView_FADING_EDGE_MASK 12288L
|
||||
#undef android_webkit_WebView_CLICKABLE
|
||||
#define android_webkit_WebView_CLICKABLE 16384L
|
||||
#undef android_webkit_WebView_DRAWING_CACHE_ENABLED
|
||||
#define android_webkit_WebView_DRAWING_CACHE_ENABLED 32768L
|
||||
#undef android_webkit_WebView_SAVE_DISABLED
|
||||
#define android_webkit_WebView_SAVE_DISABLED 65536L
|
||||
#undef android_webkit_WebView_SAVE_DISABLED_MASK
|
||||
#define android_webkit_WebView_SAVE_DISABLED_MASK 65536L
|
||||
#undef android_webkit_WebView_WILL_NOT_CACHE_DRAWING
|
||||
#define android_webkit_WebView_WILL_NOT_CACHE_DRAWING 131072L
|
||||
#undef android_webkit_WebView_FOCUSABLE_IN_TOUCH_MODE
|
||||
#define android_webkit_WebView_FOCUSABLE_IN_TOUCH_MODE 262144L
|
||||
#undef android_webkit_WebView_DRAWING_CACHE_QUALITY_LOW
|
||||
#define android_webkit_WebView_DRAWING_CACHE_QUALITY_LOW 524288L
|
||||
#undef android_webkit_WebView_DRAWING_CACHE_QUALITY_HIGH
|
||||
#define android_webkit_WebView_DRAWING_CACHE_QUALITY_HIGH 1048576L
|
||||
#undef android_webkit_WebView_DRAWING_CACHE_QUALITY_AUTO
|
||||
#define android_webkit_WebView_DRAWING_CACHE_QUALITY_AUTO 0L
|
||||
#undef android_webkit_WebView_DRAWING_CACHE_QUALITY_MASK
|
||||
#define android_webkit_WebView_DRAWING_CACHE_QUALITY_MASK 1572864L
|
||||
#undef android_webkit_WebView_LONG_CLICKABLE
|
||||
#define android_webkit_WebView_LONG_CLICKABLE 2097152L
|
||||
#undef android_webkit_WebView_DUPLICATE_PARENT_STATE
|
||||
#define android_webkit_WebView_DUPLICATE_PARENT_STATE 4194304L
|
||||
#undef android_webkit_WebView_SCROLLBARS_INSIDE_OVERLAY
|
||||
#define android_webkit_WebView_SCROLLBARS_INSIDE_OVERLAY 0L
|
||||
#undef android_webkit_WebView_SCROLLBARS_INSIDE_INSET
|
||||
#define android_webkit_WebView_SCROLLBARS_INSIDE_INSET 16777216L
|
||||
#undef android_webkit_WebView_SCROLLBARS_OUTSIDE_OVERLAY
|
||||
#define android_webkit_WebView_SCROLLBARS_OUTSIDE_OVERLAY 33554432L
|
||||
#undef android_webkit_WebView_SCROLLBARS_OUTSIDE_INSET
|
||||
#define android_webkit_WebView_SCROLLBARS_OUTSIDE_INSET 50331648L
|
||||
#undef android_webkit_WebView_SCROLLBARS_INSET_MASK
|
||||
#define android_webkit_WebView_SCROLLBARS_INSET_MASK 16777216L
|
||||
#undef android_webkit_WebView_SCROLLBARS_OUTSIDE_MASK
|
||||
#define android_webkit_WebView_SCROLLBARS_OUTSIDE_MASK 33554432L
|
||||
#undef android_webkit_WebView_SCROLLBARS_STYLE_MASK
|
||||
#define android_webkit_WebView_SCROLLBARS_STYLE_MASK 50331648L
|
||||
#undef android_webkit_WebView_KEEP_SCREEN_ON
|
||||
#define android_webkit_WebView_KEEP_SCREEN_ON 67108864L
|
||||
#undef android_webkit_WebView_SOUND_EFFECTS_ENABLED
|
||||
#define android_webkit_WebView_SOUND_EFFECTS_ENABLED 134217728L
|
||||
#undef android_webkit_WebView_HAPTIC_FEEDBACK_ENABLED
|
||||
#define android_webkit_WebView_HAPTIC_FEEDBACK_ENABLED 268435456L
|
||||
#undef android_webkit_WebView_PARENT_SAVE_DISABLED
|
||||
#define android_webkit_WebView_PARENT_SAVE_DISABLED 536870912L
|
||||
#undef android_webkit_WebView_PARENT_SAVE_DISABLED_MASK
|
||||
#define android_webkit_WebView_PARENT_SAVE_DISABLED_MASK 536870912L
|
||||
#undef android_webkit_WebView_FOCUSABLES_ALL
|
||||
#define android_webkit_WebView_FOCUSABLES_ALL 0L
|
||||
#undef android_webkit_WebView_FOCUSABLES_TOUCH_MODE
|
||||
#define android_webkit_WebView_FOCUSABLES_TOUCH_MODE 1L
|
||||
#undef android_webkit_WebView_FOCUS_BACKWARD
|
||||
#define android_webkit_WebView_FOCUS_BACKWARD 1L
|
||||
#undef android_webkit_WebView_FOCUS_FORWARD
|
||||
#define android_webkit_WebView_FOCUS_FORWARD 2L
|
||||
#undef android_webkit_WebView_FOCUS_LEFT
|
||||
#define android_webkit_WebView_FOCUS_LEFT 17L
|
||||
#undef android_webkit_WebView_FOCUS_UP
|
||||
#define android_webkit_WebView_FOCUS_UP 33L
|
||||
#undef android_webkit_WebView_FOCUS_RIGHT
|
||||
#define android_webkit_WebView_FOCUS_RIGHT 66L
|
||||
#undef android_webkit_WebView_FOCUS_DOWN
|
||||
#define android_webkit_WebView_FOCUS_DOWN 130L
|
||||
#undef android_webkit_WebView_MEASURED_SIZE_MASK
|
||||
#define android_webkit_WebView_MEASURED_SIZE_MASK 16777215L
|
||||
#undef android_webkit_WebView_MEASURED_STATE_MASK
|
||||
#define android_webkit_WebView_MEASURED_STATE_MASK -16777216L
|
||||
#undef android_webkit_WebView_MEASURED_HEIGHT_STATE_SHIFT
|
||||
#define android_webkit_WebView_MEASURED_HEIGHT_STATE_SHIFT 16L
|
||||
#undef android_webkit_WebView_MEASURED_STATE_TOO_SMALL
|
||||
#define android_webkit_WebView_MEASURED_STATE_TOO_SMALL 16777216L
|
||||
#undef android_webkit_WebView_PFLAG2_DRAG_CAN_ACCEPT
|
||||
#define android_webkit_WebView_PFLAG2_DRAG_CAN_ACCEPT 1L
|
||||
#undef android_webkit_WebView_PFLAG2_DRAG_HOVERED
|
||||
#define android_webkit_WebView_PFLAG2_DRAG_HOVERED 2L
|
||||
#undef android_webkit_WebView_LAYOUT_DIRECTION_LTR
|
||||
#define android_webkit_WebView_LAYOUT_DIRECTION_LTR 0L
|
||||
#undef android_webkit_WebView_LAYOUT_DIRECTION_RTL
|
||||
#define android_webkit_WebView_LAYOUT_DIRECTION_RTL 1L
|
||||
#undef android_webkit_WebView_LAYOUT_DIRECTION_INHERIT
|
||||
#define android_webkit_WebView_LAYOUT_DIRECTION_INHERIT 2L
|
||||
#undef android_webkit_WebView_LAYOUT_DIRECTION_LOCALE
|
||||
#define android_webkit_WebView_LAYOUT_DIRECTION_LOCALE 3L
|
||||
#undef android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT
|
||||
#define android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L
|
||||
#undef android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_MASK
|
||||
#define android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_MASK 12L
|
||||
#undef android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL
|
||||
#define android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L
|
||||
#undef android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_RESOLVED
|
||||
#define android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L
|
||||
#undef android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK
|
||||
#define android_webkit_WebView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L
|
||||
#undef android_webkit_WebView_STATUS_BAR_HIDDEN
|
||||
#define android_webkit_WebView_STATUS_BAR_HIDDEN 1L
|
||||
#undef android_webkit_WebView_STATUS_BAR_VISIBLE
|
||||
#define android_webkit_WebView_STATUS_BAR_VISIBLE 0L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_FULLSCREEN
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_FULLSCREEN 4L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_IMMERSIVE
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_IMMERSIVE 2048L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_LOW_PROFILE
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_LOW_PROFILE 1L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_FLAG_VISIBLE
|
||||
#define android_webkit_WebView_SYSTEM_UI_FLAG_VISIBLE 0L
|
||||
#undef android_webkit_WebView_SYSTEM_UI_LAYOUT_FLAGS
|
||||
#define android_webkit_WebView_SYSTEM_UI_LAYOUT_FLAGS 1536L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_CENTER
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_CENTER 4L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_GRAVITY
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_GRAVITY 1L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_INHERIT
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_INHERIT 0L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_TEXT_END
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_TEXT_END 3L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_TEXT_START
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_TEXT_START 2L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_VIEW_END
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_VIEW_END 6L
|
||||
#undef android_webkit_WebView_TEXT_ALIGNMENT_VIEW_START
|
||||
#define android_webkit_WebView_TEXT_ALIGNMENT_VIEW_START 5L
|
||||
#undef android_webkit_WebView_TEXT_DIRECTION_ANY_RTL
|
||||
#define android_webkit_WebView_TEXT_DIRECTION_ANY_RTL 2L
|
||||
#undef android_webkit_WebView_TEXT_DIRECTION_FIRST_STRONG
|
||||
#define android_webkit_WebView_TEXT_DIRECTION_FIRST_STRONG 1L
|
||||
#undef android_webkit_WebView_TEXT_DIRECTION_INHERIT
|
||||
#define android_webkit_WebView_TEXT_DIRECTION_INHERIT 0L
|
||||
#undef android_webkit_WebView_TEXT_DIRECTION_LOCALE
|
||||
#define android_webkit_WebView_TEXT_DIRECTION_LOCALE 5L
|
||||
#undef android_webkit_WebView_TEXT_DIRECTION_LTR
|
||||
#define android_webkit_WebView_TEXT_DIRECTION_LTR 3L
|
||||
#undef android_webkit_WebView_TEXT_DIRECTION_RTL
|
||||
#define android_webkit_WebView_TEXT_DIRECTION_RTL 4L
|
||||
/*
|
||||
* Class: android_webkit_WebView
|
||||
* Method: native_constructor
|
||||
* Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_android_webkit_WebView_native_1constructor
|
||||
(JNIEnv *, jobject, jobject, jobject);
|
||||
|
||||
/*
|
||||
* Class: android_webkit_WebView
|
||||
* Method: native_loadDataWithBaseURL
|
||||
* Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_android_webkit_WebView_native_1loadDataWithBaseURL
|
||||
(JNIEnv *, jobject, jlong, jstring, jstring, jstring, jstring);
|
||||
|
||||
/*
|
||||
* Class: android_webkit_WebView
|
||||
* Method: native_loadUrl
|
||||
* Signature: (JLjava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_android_webkit_WebView_native_1loadUrl
|
||||
(JNIEnv *, jobject, jlong, jstring);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
49
src/api-impl-jni/widgets/android_webkit_WebView.c
Normal file
49
src/api-impl-jni/widgets/android_webkit_WebView.c
Normal file
@@ -0,0 +1,49 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <webkit/webkit.h>
|
||||
|
||||
#include "../defines.h"
|
||||
#include "../util.h"
|
||||
|
||||
#include "WrapperWidget.h"
|
||||
|
||||
#include "../generated_headers/android_view_View.h"
|
||||
#include "../generated_headers/android_webkit_WebView.h"
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_android_webkit_WebView_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs)
|
||||
{
|
||||
/*
|
||||
* many apps use webview just for fingerprinting or displaying ads, which seems like
|
||||
* a waste of resources even if we deal with fingerprinting and ads in some other way
|
||||
* in the future.
|
||||
*/
|
||||
if(!getenv("ATL_UGLY_ENABLE_WEBVIEW"))
|
||||
return Java_android_view_View_native_1constructor(env, this, context, attrs);
|
||||
|
||||
GtkWidget *wrapper = g_object_ref(wrapper_widget_new());
|
||||
GtkWidget *webview = webkit_web_view_new();
|
||||
wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), webview);
|
||||
wrapper_widget_set_jobject(WRAPPER_WIDGET(wrapper), env, this);
|
||||
return _INTPTR(webview);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_android_webkit_WebView_native_1loadUrl(JNIEnv *env, jobject this, jlong widget_ptr, jstring url)
|
||||
{
|
||||
if(!getenv("ATL_UGLY_ENABLE_WEBVIEW"))
|
||||
return;
|
||||
|
||||
WebKitWebView *webview = _PTR(widget_ptr);
|
||||
webkit_web_view_load_uri(webview, _CSTRING(url));
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_android_webkit_WebView_native_1loadDataWithBaseURL(JNIEnv *env, jobject this, jlong widget_ptr, jstring base_url, jstring data_jstr, jstring mime_type, jstring encoding)
|
||||
{
|
||||
if(!getenv("ATL_UGLY_ENABLE_WEBVIEW"))
|
||||
return;
|
||||
|
||||
WebKitWebView *webview = _PTR(widget_ptr);
|
||||
jsize data_len = (*env)->GetStringUTFLength(env, data_jstr);
|
||||
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), _CSTRING(mime_type), _CSTRING(encoding), _CSTRING(base_url));
|
||||
}
|
||||
@@ -37,4 +37,8 @@ public class WebSettings {
|
||||
public void setUseWideViewPort(boolean useWideViewPort) {}
|
||||
|
||||
public void setTextZoom(int textZoom) {}
|
||||
|
||||
public void setAppCacheEnabled(boolean enabled) {}
|
||||
|
||||
public void setAppCachePath(String path) {}
|
||||
}
|
||||
|
||||
@@ -4,14 +4,17 @@ import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
// the only reason we need to implement this is that some app developers are such scumbags that they try to use this for tracking purposes
|
||||
public class WebView extends View {
|
||||
public WebView(Context context) {
|
||||
super(context);
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public WebView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public WebView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
public WebSettings getSettings() {
|
||||
@@ -34,11 +37,18 @@ public class WebView extends View {
|
||||
|
||||
public void destroy() {}
|
||||
|
||||
public void loadUrl(String url) {}
|
||||
public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
|
||||
native_loadDataWithBaseURL(widget, baseUrl, data, mimeType, encoding);
|
||||
}
|
||||
|
||||
public void loadUrl(String url) {
|
||||
native_loadUrl(widget, url);
|
||||
}
|
||||
|
||||
public void stopLoading() {}
|
||||
|
||||
public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
|
||||
System.out.println("loadDataWithBaseURL(" + baseUrl + ", " + data + ", " + mimeType + ", " + encoding + ", " + historyUrl + ") called");
|
||||
}
|
||||
@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);
|
||||
private native void native_loadUrl(long widget, String url);
|
||||
}
|
||||
|
||||
@@ -498,7 +498,7 @@ static void open(GtkApplication *app, GFile** files, gint nfiles, const gchar* h
|
||||
printf("WARNING: RUN_FROM_BUILDDIR set and --install given: using current directory in desktop entry\n");
|
||||
g_string_append_printf(desktop_entry, "-C %s ", g_get_current_dir());
|
||||
}
|
||||
char *envs[] = {"RUN_FROM_BUILDDIR", "LD_LIBRARY_PATH", "ANDROID_APP_DATA_DIR", "ATL_DISABLE_WINDOW_DECORATIONS", "UGLY_HACK_FOR_VR", "ATL_FORCE_FULLSCREEN"};
|
||||
char *envs[] = {"RUN_FROM_BUILDDIR", "LD_LIBRARY_PATH", "ANDROID_APP_DATA_DIR", "ATL_UGLY_ENABLE_LOCATION", "ATL_UGLY_ENABLE_WEBVIEW", "ATL_DISABLE_WINDOW_DECORATIONS", "UGLY_HACK_FOR_VR", "ATL_FORCE_FULLSCREEN"};
|
||||
for (int i = 0; i < sizeof(envs)/sizeof(envs[0]); i++) {
|
||||
if (getenv(envs[i])) {
|
||||
g_string_append_printf(desktop_entry, "%s=%s ", envs[i], getenv(envs[i]));
|
||||
|
||||
Reference in New Issue
Block a user