bare-ndk 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CMakeLists.txt CHANGED
@@ -1,27 +1,72 @@
1
1
  cmake_minimum_required(VERSION 4.0)
2
2
 
3
- set(ANDROID_STL c++_shared)
4
-
5
3
  find_package(cmake-bare REQUIRED PATHS node_modules/cmake-bare)
6
4
  find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)
7
5
 
8
- project(bare_android C)
6
+ project(bare_android C CXX)
9
7
 
10
8
  fetch_package("github:holepunchto/bare@1.24.5")
11
9
  fetch_package("github:holepunchto/libpath")
10
+ fetch_package("github:holepunchto/libjstl")
11
+ fetch_package("github:holepunchto/libjnitl")
12
+
13
+ find_package(Java)
14
+
15
+ include(UseJava)
16
+
17
+ add_bare_module(bare_ndk)
18
+
19
+ target_sources(
20
+ ${bare_ndk}
21
+ PRIVATE
22
+ binding.cc
23
+ )
24
+
25
+ target_link_libraries(
26
+ ${bare_ndk}
27
+ PUBLIC
28
+ jstl
29
+ jnitl
30
+ android
31
+ )
32
+
33
+ set(ANDROID_JAR ${ANDROID_HOME}/platforms/${ANDROID_PLATFORM}/android.jar)
34
+
35
+ add_jar(
36
+ bare_runtime_classes
37
+ SOURCES
38
+ lib/runtime/Activity.java
39
+ INCLUDE_JARS
40
+ ${ANDROID_JAR}
41
+ OUTPUT_NAME classes
42
+ )
43
+
44
+ find_program(d8 d8 PATHS ${ANDROID_HOME}/build-tools/* NO_DEFAULT_PATH)
45
+
46
+ add_custom_command(
47
+ TARGET bare_runtime_classes
48
+ POST_BUILD
49
+ COMMAND
50
+ ${d8}
51
+ $<IF:$<CONFIG:Debug>,--debug,--release>
52
+ --lib ${ANDROID_JAR}
53
+ --output ${CMAKE_BINARY_DIR}
54
+ ${CMAKE_BINARY_DIR}/classes.jar
55
+ )
12
56
 
13
57
  add_library(bare_runtime SHARED)
14
58
 
15
59
  target_sources(
16
60
  bare_runtime
17
61
  PRIVATE
18
- lib/runtime.c
62
+ lib/runtime.cc
19
63
  )
20
64
 
21
65
  set_target_properties(
22
66
  bare_runtime
23
67
  PROPERTIES
24
- C_STANDARD 99
68
+ C_STANDARD 11
69
+ CXX_STANDARD 20
25
70
  POSITION_INDEPENDENT_CODE ON
26
71
  OUTPUT_NAME bare
27
72
  )
@@ -34,15 +79,11 @@ target_link_libraries(
34
79
  log_static
35
80
  rlimit_static
36
81
  path_static
37
- )
38
-
39
- target_link_libraries(
40
- bare_runtime
41
82
  PRIVATE
83
+ jnitl
42
84
  android
43
85
  )
44
86
 
45
-
46
87
  target_link_options(
47
88
  bare_runtime
48
89
  PRIVATE
@@ -62,4 +103,9 @@ find_library(
62
103
 
63
104
  install(TARGETS bare_runtime LIBRARY DESTINATION ${target})
64
105
 
65
- install(FILES ${android_stl} DESTINATION ${target}/bare)
106
+ install(
107
+ FILES
108
+ ${android_stl}
109
+ ${CMAKE_BINARY_DIR}/classes.dex
110
+ DESTINATION ${target}/bare
111
+ )
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # bare-ndk
2
2
 
3
- Android NDK runtime for Bare.
3
+ Android NDK bindings and runtime for Bare.
4
4
 
5
5
  ## License
6
6
 
package/binding.cc ADDED
@@ -0,0 +1,44 @@
1
+ #include <assert.h>
2
+ #include <bare.h>
3
+ #include <js.h>
4
+ #include <utf.h>
5
+
6
+ #include "lib/activity.h"
7
+ #include "lib/web-view.h"
8
+
9
+ static js_value_t *
10
+ bare_ndk_exports(js_env_t *env, js_value_t *exports) {
11
+ int err;
12
+
13
+ #define V(name, fn) \
14
+ { \
15
+ js_value_t *val; \
16
+ err = js_create_function(env, name, -1, fn, nullptr, &val); \
17
+ assert(err == 0); \
18
+ err = js_set_named_property(env, exports, name, val); \
19
+ assert(err == 0); \
20
+ }
21
+
22
+ V("activityInit", bare_ndk_activity_init)
23
+ V("activityContentView", bare_ndk_activity_content_view)
24
+
25
+ V("webViewInit", bare_ndk_web_view_init)
26
+ V("webViewDebuggingEnabled", bare_ndk_web_view_debugging_enabled)
27
+ V("webViewLoadURL", bare_ndk_web_view_load_url)
28
+ V("webViewLoadData", bare_ndk_web_view_load_data)
29
+ #undef V
30
+
31
+ #define V(name, n) \
32
+ { \
33
+ js_value_t *val; \
34
+ err = js_create_int32(env, n, &val); \
35
+ assert(err == 0); \
36
+ err = js_set_named_property(env, exports, name, val); \
37
+ assert(err == 0); \
38
+ }
39
+ #undef V
40
+
41
+ return exports;
42
+ }
43
+
44
+ BARE_MODULE(bare_ndk, bare_ndk_exports)
package/binding.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require.addon()
package/index.js CHANGED
@@ -0,0 +1,2 @@
1
+ exports.Activity = require('./lib/activity')
2
+ exports.WebView = require('./lib/web-view')
package/lib/activity.h ADDED
@@ -0,0 +1,67 @@
1
+ #pragma once
2
+
3
+ #include <assert.h>
4
+ #include <bare.h>
5
+ #include <jnitl.h>
6
+ #include <js.h>
7
+ #include <jstl.h>
8
+
9
+ #include <android/native_activity.h>
10
+
11
+ #include "view.h"
12
+
13
+ extern ANativeActivity *bare_native_activity;
14
+
15
+ struct bare_ndk_activity_t {
16
+ java_global_ref_t<java_object_t<"android/app/Activity">> handle;
17
+
18
+ java_global_ref_t<java_class_t<"android/app/Activity">> init;
19
+
20
+ java_env_t java;
21
+ };
22
+
23
+ static js_value_t *
24
+ bare_ndk_activity_init(js_env_t *env, js_callback_info_t *info) {
25
+ int err;
26
+
27
+ auto activity = new bare_ndk_activity_t();
28
+
29
+ activity->java = bare_native_activity->env;
30
+
31
+ activity->init = java_class_t<"android/app/Activity">(activity->java);
32
+
33
+ activity->handle = java_object_t<"android/app/Activity">(activity->java, bare_native_activity->clazz);
34
+
35
+ js_external_t<bare_ndk_activity_t> handle;
36
+ err = js_create_external(env, activity, handle);
37
+ assert(err == 0);
38
+
39
+ return static_cast<js_value_t *>(handle);
40
+ }
41
+
42
+ static js_value_t *
43
+ bare_ndk_activity_content_view(js_env_t *env, js_callback_info_t *info) {
44
+ int err;
45
+
46
+ size_t argc = 2;
47
+ js_value_t *argv[2];
48
+
49
+ err = js_get_callback_info(env, info, &argc, argv, nullptr, nullptr);
50
+ assert(err == 0);
51
+
52
+ assert(argc == 2);
53
+
54
+ bare_ndk_activity_t *activity;
55
+ err = js_get_value(env, js_external_t<bare_ndk_activity_t>(argv[0]), activity);
56
+ assert(err == 0);
57
+
58
+ bare_ndk_view_t *view;
59
+ err = js_get_value(env, js_external_t<bare_ndk_view_t>(argv[1]), view);
60
+ assert(err == 0);
61
+
62
+ auto set_content_view = activity->init.get_method<void(java_object_t<"android/view/View">)>("setContentView");
63
+
64
+ set_content_view(activity->handle, view->handle);
65
+
66
+ return nullptr;
67
+ }
@@ -0,0 +1,13 @@
1
+ const binding = require('../binding')
2
+
3
+ class NDKActivity {
4
+ constructor() {
5
+ this._handle = binding.activityInit()
6
+ }
7
+
8
+ contentView(view) {
9
+ binding.activityContentView(this._handle, view._handle)
10
+ }
11
+ }
12
+
13
+ module.exports = new NDKActivity()
@@ -0,0 +1,47 @@
1
+ package to.holepunch.bare;
2
+
3
+ import android.content.res.AssetManager;
4
+ import android.os.Bundle;
5
+
6
+ public final class Activity extends android.app.Activity {
7
+ static {
8
+ System.loadLibrary("bare");
9
+ }
10
+
11
+ private native void
12
+ setup(Bundle state, AssetManager assets);
13
+
14
+ private native void
15
+ teardown();
16
+
17
+ private native void
18
+ suspend();
19
+
20
+ private native void
21
+ resume();
22
+
23
+ @Override
24
+ protected void
25
+ onCreate(Bundle state) {
26
+ setup(state, getAssets());
27
+ super.onCreate(state);
28
+ }
29
+
30
+ protected void
31
+ onDestroy() {
32
+ teardown();
33
+ super.onDestroy();
34
+ }
35
+
36
+ protected void
37
+ onPause() {
38
+ suspend();
39
+ super.onPause();
40
+ }
41
+
42
+ protected void
43
+ onResume() {
44
+ resume();
45
+ super.onResume();
46
+ }
47
+ }
@@ -1,5 +1,6 @@
1
1
  #include <assert.h>
2
2
  #include <bare.h>
3
+ #include <jnitl.h>
3
4
  #include <js.h>
4
5
  #include <log.h>
5
6
  #include <sys/timerfd.h>
@@ -7,6 +8,7 @@
7
8
  #include <uv.h>
8
9
 
9
10
  #include <android/asset_manager.h>
11
+ #include <android/asset_manager_jni.h>
10
12
  #include <android/looper.h>
11
13
  #include <android/native_activity.h>
12
14
 
@@ -21,9 +23,13 @@ static bare_t *bare;
21
23
 
22
24
  static int bare__timer;
23
25
 
26
+ static ANativeActivity bare__native_activity;
27
+
28
+ ANativeActivity *bare_native_activity = &bare__native_activity;
29
+
24
30
  static void
25
31
  bare__on_shutdown(uv_async_t *handle) {
26
- uv_close((uv_handle_t *) handle, NULL);
32
+ uv_close(reinterpret_cast<uv_handle_t *>(handle), nullptr);
27
33
  }
28
34
 
29
35
  static void
@@ -37,7 +43,7 @@ bare__on_platform_thread(void *data) {
37
43
  err = uv_async_init(&loop, &bare__platform_shutdown, bare__on_shutdown);
38
44
  assert(err == 0);
39
45
 
40
- err = js_create_platform(&loop, NULL, &bare__platform);
46
+ err = js_create_platform(&loop, nullptr, &bare__platform);
41
47
  assert(err == 0);
42
48
 
43
49
  uv_barrier_wait(&bare__platform_ready);
@@ -73,7 +79,7 @@ bare__run(void) {
73
79
  spec.it_value.tv_nsec = (timeout % 1000) * 1000000;
74
80
  }
75
81
 
76
- timerfd_settime(bare__timer, 0, &spec, NULL);
82
+ timerfd_settime(bare__timer, 0, &spec, nullptr);
77
83
  }
78
84
 
79
85
  static int
@@ -90,59 +96,25 @@ bare__on_timeout(int fd, int events, void *data) {
90
96
  return 1;
91
97
  }
92
98
 
93
- static void
94
- bare__on_destroy(ANativeActivity *activity) {
95
- int err;
96
-
97
- ALooper *looper = ALooper_forThread();
98
-
99
- err = ALooper_removeFd(looper, bare__loop->backend_fd);
100
- assert(err == 1);
101
-
102
- err = ALooper_removeFd(looper, bare__timer);
103
- assert(err == 1);
104
-
105
- close(bare__timer);
106
-
107
- err = uv_async_send(&bare__shutdown);
108
- assert(err == 0);
109
-
110
- err = bare_terminate(bare);
111
- assert(err == 0);
112
-
113
- err = bare_run(bare, UV_RUN_NOWAIT);
114
- assert(err >= 0);
115
- }
116
-
117
- static void
118
- bare__on_pause(ANativeActivity *activity) {
99
+ extern "C" void
100
+ Java_to_holepunch_bare_Activity_setup(JNIEnv *env, jobject self, jobject state, jobject assets) {
119
101
  int err;
120
102
 
121
- err = bare_suspend(bare, 0);
122
- assert(err == 0);
123
- }
124
-
125
- static void
126
- bare__on_resume(ANativeActivity *activity) {
127
- int err;
103
+ bare__native_activity.env = env;
128
104
 
129
- err = bare_resume(bare);
130
- assert(err == 0);
131
- }
105
+ bare__native_activity.clazz = env->NewGlobalRef(self);
132
106
 
133
- void
134
- ANativeActivity_onCreate(ANativeActivity *activity, void *state, size_t len) {
135
- int err;
107
+ bare__native_activity.assetManager = AAssetManager_fromJava(env, assets);
136
108
 
137
109
  err = log_open("bare", 0);
138
110
  assert(err == 0);
139
111
 
140
- uv_setup_args(0, NULL);
112
+ uv_setup_args(0, nullptr);
141
113
 
142
114
  err = uv_barrier_init(&bare__platform_ready, 2);
143
115
  assert(err == 0);
144
116
 
145
- err = uv_thread_create(&bare__platform_thread, bare__on_platform_thread, NULL);
117
+ err = uv_thread_create(&bare__platform_thread, bare__on_platform_thread, nullptr);
146
118
  assert(err == 0);
147
119
 
148
120
  uv_barrier_wait(&bare__platform_ready);
@@ -154,31 +126,67 @@ ANativeActivity_onCreate(ANativeActivity *activity, void *state, size_t len) {
154
126
  err = uv_async_init(bare__loop, &bare__shutdown, bare__on_shutdown);
155
127
  assert(err == 0);
156
128
 
157
- err = bare_setup(bare__loop, bare__platform, NULL, 0, NULL, NULL, &bare);
129
+ err = bare_setup(bare__loop, bare__platform, nullptr, 0, nullptr, nullptr, &bare);
158
130
  assert(err == 0);
159
131
 
160
- AAsset *asset = AAssetManager_open(activity->assetManager, "app.bundle", AASSET_MODE_BUFFER);
132
+ AAsset *asset = AAssetManager_open(bare__native_activity.assetManager, "app.bundle", AASSET_MODE_BUFFER);
161
133
 
162
134
  uv_buf_t entry = uv_buf_init((char *) AAsset_getBuffer(asset), AAsset_getLength(asset));
163
135
 
164
- err = bare_load(bare, "bare:/app.bundle", &entry, NULL);
136
+ err = bare_load(bare, "bare:/app.bundle", &entry, nullptr);
165
137
  (void) err;
166
138
 
167
139
  AAsset_close(asset);
168
140
 
169
141
  ALooper *looper = ALooper_forThread();
170
142
 
171
- err = ALooper_addFd(looper, bare__loop->backend_fd, ALOOPER_POLL_CALLBACK, ALOOPER_EVENT_INPUT, bare__on_poll, NULL);
143
+ err = ALooper_addFd(looper, bare__loop->backend_fd, ALOOPER_POLL_CALLBACK, ALOOPER_EVENT_INPUT, bare__on_poll, nullptr);
172
144
  assert(err == 1);
173
145
 
174
146
  bare__timer = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
175
147
 
176
- err = ALooper_addFd(looper, bare__timer, ALOOPER_POLL_CALLBACK, ALOOPER_EVENT_INPUT, bare__on_timeout, NULL);
148
+ err = ALooper_addFd(looper, bare__timer, ALOOPER_POLL_CALLBACK, ALOOPER_EVENT_INPUT, bare__on_timeout, nullptr);
177
149
  assert(err == 1);
178
150
 
179
- activity->callbacks->onDestroy = bare__on_destroy;
180
- activity->callbacks->onPause = bare__on_pause;
181
- activity->callbacks->onResume = bare__on_resume;
182
-
183
151
  bare__run();
184
152
  }
153
+
154
+ extern "C" void
155
+ Java_to_holepunch_bare_Activity_teardown(JNIEnv *env, jobject self) {
156
+ int err;
157
+
158
+ ALooper *looper = ALooper_forThread();
159
+
160
+ err = ALooper_removeFd(looper, bare__loop->backend_fd);
161
+ assert(err == 1);
162
+
163
+ err = ALooper_removeFd(looper, bare__timer);
164
+ assert(err == 1);
165
+
166
+ close(bare__timer);
167
+
168
+ err = uv_async_send(&bare__shutdown);
169
+ assert(err == 0);
170
+
171
+ err = bare_terminate(bare);
172
+ assert(err == 0);
173
+
174
+ err = bare_run(bare, UV_RUN_NOWAIT);
175
+ assert(err >= 0);
176
+ }
177
+
178
+ extern "C" void
179
+ Java_to_holepunch_bare_Activity_suspend(JNIEnv *env, jobject self) {
180
+ int err;
181
+
182
+ err = bare_suspend(bare, 0);
183
+ assert(err == 0);
184
+ }
185
+
186
+ extern "C" void
187
+ Java_to_holepunch_bare_Activity_resume(JNIEnv *env, jobject self) {
188
+ int err;
189
+
190
+ err = bare_resume(bare);
191
+ assert(err == 0);
192
+ }
package/lib/view.h ADDED
@@ -0,0 +1,10 @@
1
+ #pragma once
2
+
3
+ #include <assert.h>
4
+ #include <bare.h>
5
+ #include <jnitl.h>
6
+ #include <js.h>
7
+
8
+ struct bare_ndk_view_t {
9
+ java_global_ref_t<java_object_t<"android/view/View">> handle;
10
+ };
package/lib/view.js ADDED
@@ -0,0 +1,5 @@
1
+ module.exports = class NDKView {
2
+ constructor(handle = null) {
3
+ this._handle = handle
4
+ }
5
+ }
package/lib/web-view.h ADDED
@@ -0,0 +1,161 @@
1
+ #pragma once
2
+
3
+ #include <assert.h>
4
+ #include <bare.h>
5
+ #include <jnitl.h>
6
+ #include <js.h>
7
+ #include <jstl.h>
8
+
9
+ #include "activity.h"
10
+
11
+ struct bare_ndk_web_view_t {
12
+ java_global_ref_t<java_object_t<"android/webkit/WebView">> handle;
13
+
14
+ java_global_ref_t<java_class_t<"android/webkit/WebView">> init;
15
+
16
+ js_env_t *env;
17
+ js_ref_t *ctx;
18
+ };
19
+
20
+ static void
21
+ bare_ndk_web_view__on_release(js_env_t *env, bare_ndk_web_view_t *web_view) {
22
+ int err;
23
+
24
+ err = js_delete_reference(env, web_view->ctx);
25
+ assert(err == 0);
26
+
27
+ delete web_view;
28
+ }
29
+
30
+ static js_value_t *
31
+ bare_ndk_web_view_init(js_env_t *env, js_callback_info_t *info) {
32
+ int err;
33
+
34
+ size_t argc = 2;
35
+ js_value_t *argv[2];
36
+
37
+ err = js_get_callback_info(env, info, &argc, argv, nullptr, nullptr);
38
+ assert(err == 0);
39
+
40
+ assert(argc == 2);
41
+
42
+ bare_ndk_activity_t *activity;
43
+ err = js_get_value(env, js_external_t<bare_ndk_activity_t>(argv[0]), activity);
44
+ assert(err == 0);
45
+
46
+ auto web_view = new bare_ndk_web_view_t();
47
+
48
+ web_view->env = env;
49
+
50
+ web_view->init = java_class_t<"android/webkit/WebView">(activity->java);
51
+
52
+ web_view->handle = web_view->init(java_object_t<"android/content/Context">(activity->java, activity->handle));
53
+
54
+ err = js_create_reference(env, argv[1], 1, &web_view->ctx);
55
+ assert(err == 0);
56
+
57
+ js_external_t<bare_ndk_web_view_t> handle;
58
+ err = js_create_external<bare_ndk_web_view__on_release>(env, web_view, handle);
59
+ assert(err == 0);
60
+
61
+ return static_cast<js_value_t *>(handle);
62
+ }
63
+
64
+ static js_value_t *
65
+ bare_ndk_web_view_debugging_enabled(js_env_t *env, js_callback_info_t *info) {
66
+ int err;
67
+
68
+ size_t argc = 2;
69
+ js_value_t *argv[2];
70
+
71
+ err = js_get_callback_info(env, info, &argc, argv, nullptr, nullptr);
72
+ assert(err == 0);
73
+
74
+ assert(argc == 2);
75
+
76
+ bare_ndk_activity_t *activity;
77
+ err = js_get_value(env, js_external_t<bare_ndk_activity_t>(argv[0]), activity);
78
+ assert(err == 0);
79
+
80
+ bool enabled;
81
+ err = js_get_value(env, js_boolean_t(argv[1]), enabled);
82
+ assert(err == 0);
83
+
84
+ auto init = java_class_t<"android/webkit/WebView">(activity->java);
85
+
86
+ auto set_debugging_enabled = init.get_static_method<void(bool)>("setWebContentsDebuggingEnabled");
87
+
88
+ set_debugging_enabled(enabled);
89
+
90
+ return nullptr;
91
+ }
92
+
93
+ static js_value_t *
94
+ bare_ndk_web_view_load_url(js_env_t *env, js_callback_info_t *info) {
95
+ int err;
96
+
97
+ size_t argc = 2;
98
+ js_value_t *argv[2];
99
+
100
+ err = js_get_callback_info(env, info, &argc, argv, nullptr, nullptr);
101
+ assert(err == 0);
102
+
103
+ assert(argc == 2);
104
+
105
+ bare_ndk_web_view_t *web_view;
106
+ err = js_get_value(env, js_external_t<bare_ndk_web_view_t>(argv[0]), web_view);
107
+ assert(err == 0);
108
+
109
+ std::string url;
110
+ err = js_get_value(env, js_string_t(argv[1]), url);
111
+ assert(err == 0);
112
+
113
+ auto load_url = web_view->init.get_method<void(std::string)>("loadUrl");
114
+
115
+ load_url(web_view->handle, url);
116
+
117
+ return nullptr;
118
+ }
119
+
120
+ static js_value_t *
121
+ bare_ndk_web_view_load_data(js_env_t *env, js_callback_info_t *info) {
122
+ int err;
123
+
124
+ size_t argc = 6;
125
+ js_value_t *argv[6];
126
+
127
+ err = js_get_callback_info(env, info, &argc, argv, nullptr, nullptr);
128
+ assert(err == 0);
129
+
130
+ assert(argc == 6);
131
+
132
+ bare_ndk_web_view_t *web_view;
133
+ err = js_get_value(env, js_external_t<bare_ndk_web_view_t>(argv[0]), web_view);
134
+ assert(err == 0);
135
+
136
+ std::string data;
137
+ err = js_get_value(env, js_string_t(argv[1]), data);
138
+ assert(err == 0);
139
+
140
+ std::string mime_type;
141
+ err = js_get_value(env, js_string_t(argv[2]), mime_type);
142
+ assert(err == 0);
143
+
144
+ std::string encoding;
145
+ err = js_get_value(env, js_string_t(argv[3]), encoding);
146
+ assert(err == 0);
147
+
148
+ std::string base_url;
149
+ err = js_get_value(env, js_string_t(argv[4]), base_url);
150
+ assert(err == 0);
151
+
152
+ std::string history_url;
153
+ err = js_get_value(env, js_string_t(argv[5]), history_url);
154
+ assert(err == 0);
155
+
156
+ auto load_data = web_view->init.get_method<void(std::string, std::string, std::string, std::string, std::string)>("loadDataWithBaseURL");
157
+
158
+ load_data(web_view->handle, base_url, data, mime_type, encoding, history_url);
159
+
160
+ return nullptr;
161
+ }
@@ -0,0 +1,33 @@
1
+ const binding = require('../binding')
2
+ const NDKActivity = require('./activity')
3
+ const NDKView = require('./view')
4
+
5
+ module.exports = class NDKWebView extends NDKView {
6
+ constructor() {
7
+ super()
8
+
9
+ this._handle = binding.webViewInit(NDKActivity._handle, this)
10
+ }
11
+
12
+ static debuggingEnabled(enabled = true) {
13
+ binding.webViewDebuggingEnabled(NDKActivity._handle, enabled)
14
+ return this
15
+ }
16
+
17
+ loadURL(url) {
18
+ binding.webViewLoadURL(this._handle, url)
19
+ return this
20
+ }
21
+
22
+ loadData(data, mimeType, encoding, baseURL = 'about:blank', historyURL = baseURL) {
23
+ binding.webViewLoadData(
24
+ this._handle,
25
+ data,
26
+ mimeType || 'text/html; charset=utf-8',
27
+ encoding || 'UTF-8',
28
+ baseURL,
29
+ historyURL
30
+ )
31
+ return this
32
+ }
33
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bare-ndk",
3
- "version": "0.1.0",
4
- "description": "Android NDK runtime for Bare",
3
+ "version": "0.1.1",
4
+ "description": "Android NDK bindings and runtime for Bare",
5
5
  "exports": {
6
6
  "./package": "./package.json",
7
7
  ".": "./index.js",
@@ -10,7 +10,7 @@
10
10
  "files": [
11
11
  "index.js",
12
12
  "runtime.js",
13
- "binding.c",
13
+ "binding.cc",
14
14
  "binding.js",
15
15
  "CMakeLists.txt",
16
16
  "lib",
Binary file
Binary file