aboutsummaryrefslogtreecommitdiffstats
path: root/support/android/apk/servoview
diff options
context:
space:
mode:
authorPaul Rouget <me@paulrouget.com>2018-10-05 12:44:27 +0200
committerPaul Rouget <me@paulrouget.com>2018-10-05 13:17:27 +0200
commite0ce73abb2df4163fb72f35a803701bf662fb0f7 (patch)
tree02738dc34ea9ba7ef3b09c295835ffb7eaa160db /support/android/apk/servoview
parent021a24d5bb8dc54bc4496b528d821f11aa3ca745 (diff)
downloadservo-e0ce73abb2df4163fb72f35a803701bf662fb0f7.tar.gz
servo-e0ce73abb2df4163fb72f35a803701bf662fb0f7.zip
Make JNI code more robust
Diffstat (limited to 'support/android/apk/servoview')
-rw-r--r--support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java18
-rw-r--r--support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java11
-rw-r--r--support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoSurface.java24
-rw-r--r--support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoView.java24
4 files changed, 45 insertions, 32 deletions
diff --git a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java
index a48085ea628..2184f6e805e 100644
--- a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java
+++ b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java
@@ -20,13 +20,7 @@ public class JNIServo {
public native String version();
- public native void init(Activity activity,
- String args,
- String url,
- String logstr,
- Callbacks callbacks,
- int width, int height, float density,
- boolean log);
+ public native void init(Activity activity, ServoOptions options, Callbacks callbacks);
public native void setBatchMode(boolean mode);
@@ -60,6 +54,16 @@ public class JNIServo {
public native void click(int x, int y);
+ public static class ServoOptions {
+ public String args;
+ public String url;
+ public int width = 0;
+ public int height = 0;
+ public float density = 1;
+ public String logStr;
+ public boolean enableLogs = false;
+ }
+
public interface Callbacks {
void wakeup();
diff --git a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java
index f93c5105f14..2954f14b7f4 100644
--- a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java
+++ b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java
@@ -14,6 +14,7 @@ import java.io.IOException;
import java.io.InputStream;
import org.freedesktop.gstreamer.GStreamer;
+import org.mozilla.servoview.JNIServo.ServoOptions;
public class Servo {
private static final String LOGTAG = "Servo";
@@ -23,15 +24,11 @@ public class Servo {
private boolean mSuspended;
public Servo(
+ ServoOptions options,
RunCallback runCallback,
GfxCallbacks gfxcb,
Client client,
- Activity activity,
- String args,
- String url,
- String logstr,
- int width, int height,
- float density, boolean log) {
+ Activity activity) {
mRunCallback = runCallback;
@@ -40,7 +37,7 @@ public class Servo {
Callbacks cbs = new Callbacks(client, gfxcb);
mRunCallback.inGLThread(() -> {
- mJNI.init(activity, args, url, logstr, cbs, width, height, density, log);
+ mJNI.init(activity, options, cbs);
});
try {
diff --git a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoSurface.java b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoSurface.java
index 95e55e58131..a0ca1969542 100644
--- a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoSurface.java
+++ b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoSurface.java
@@ -20,6 +20,7 @@ import android.os.Message;
import android.util.Log;
import android.view.Surface;
+import org.mozilla.servoview.JNIServo.ServoOptions;
import org.mozilla.servoview.Servo.Client;
import org.mozilla.servoview.Servo.GfxCallbacks;
import org.mozilla.servoview.Servo.RunCallback;
@@ -37,9 +38,9 @@ public class ServoSurface {
private int mHeight;
private Servo mServo;
private Client mClient = null;
- private String mServoArgs = "";
- private String mServoLog = "";
- private String mInitialUri = null;
+ private String mServoArgs;
+ private String mServoLog;
+ private String mInitialUri;
private Activity mActivity;
public ServoSurface(Surface surface, int width, int height) {
@@ -55,8 +56,8 @@ public class ServoSurface {
}
public void setServoArgs(String args, String log) {
- mServoArgs = args != null ? args : "";
- mServoLog = log != null ? log : "";
+ mServoArgs = args;
+ mServoLog = log;
}
public void setActivity(Activity activity) {
@@ -204,9 +205,16 @@ public class ServoSurface {
};
inUIThread(() -> {
- final boolean showLogs = true;
- String uri = mInitialUri == null ? null : mInitialUri;
- mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mServoLog, mWidth, mHeight, 1, showLogs);
+ ServoOptions options = new ServoOptions();
+ options.args = mServoArgs;
+ options.width = mWidth;
+ options.height = mHeight;
+ options.density = 1;
+ options.url = mInitialUri == null ? null : mInitialUri;
+ options.logStr = mServoLog;
+ options.enableLogs = true;
+
+ mServo = new Servo(options, this, surface, mClient, mActivity);
});
Looper.loop();
diff --git a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoView.java b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoView.java
index ac5f41f0d3f..c93db5c170f 100644
--- a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoView.java
+++ b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/ServoView.java
@@ -19,6 +19,7 @@ import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.OverScroller;
+import org.mozilla.servoview.JNIServo.ServoOptions;
import org.mozilla.servoview.Servo.Client;
import org.mozilla.servoview.Servo.GfxCallbacks;
import org.mozilla.servoview.Servo.RunCallback;
@@ -41,8 +42,8 @@ public class ServoView extends GLSurfaceView
private Client mClient = null;
private Uri mInitialUri = null;
private boolean mAnimating;
- private String mServoArgs = "";
- private String mServoLog = "";
+ private String mServoArgs;
+ private String mServoLog;
private GestureDetector mGestureDetector;
private ScaleGestureDetector mScaleGestureDetector;
@@ -75,8 +76,8 @@ public class ServoView extends GLSurfaceView
}
public void setServoArgs(String args, String log) {
- mServoArgs = args != null ? args : "";
- mServoLog = log != null ? log : "";
+ mServoArgs = args;
+ mServoLog = log;
}
public void reload() {
@@ -135,16 +136,19 @@ public class ServoView extends GLSurfaceView
}
public void onGLReady() {
- final boolean showLogs = true;
- int width = getWidth();
- int height = getHeight();
+ ServoOptions options = new ServoOptions();
+ options.args = mServoArgs;
+ options.width = getWidth();
+ options.height = getHeight();
+ options.enableLogs = true;
DisplayMetrics metrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
- float density = metrics.density;
-
+ options.density = metrics.density;
inGLThread(() -> {
String uri = mInitialUri == null ? null : mInitialUri.toString();
- mServo = new Servo(this, this, mClient, mActivity, mServoArgs, uri, mServoLog, width, height, density, showLogs);
+ options.url = uri;
+ options.logStr = mServoLog;
+ mServo = new Servo(options, this, this, mClient, mActivity);
});
}