diff --git a/ports/libsimpleservo/src/jniapi.rs b/ports/libsimpleservo/src/jniapi.rs index 26817bd4561..95c0d2c4d61 100644 --- a/ports/libsimpleservo/src/jniapi.rs +++ b/ports/libsimpleservo/src/jniapi.rs @@ -12,6 +12,7 @@ use jni::objects::{GlobalRef, JClass, JObject, JString, JValue}; use jni::sys::{jboolean, jfloat, jint, jstring, JNI_TRUE}; use log::Level; use std; +use std::borrow::Cow; use std::os::raw::c_void; use std::sync::{Arc, Mutex}; @@ -49,6 +50,7 @@ pub fn Java_com_mozilla_servoview_JNIServo_init( activity: JObject, args: JString, url: JString, + log_str: JString, callbacks_obj: JObject, width: jint, height: jint, @@ -58,14 +60,17 @@ pub fn Java_com_mozilla_servoview_JNIServo_init( // Note: Android debug logs are stripped from a release build. // debug!() will only show in a debug build. Use info!() if logs // should show up in adb logcat with a release build. - android_logger::init_once( - Filter::default() - .with_min_level(Level::Debug) - .with_allowed_module_path("simpleservo::api") - .with_allowed_module_path("simpleservo::jniapi") - .with_allowed_module_path("simpleservo::gl_glue::egl"), - Some("simpleservo") - ); + let mut filter = Filter::default() + .with_min_level(Level::Debug) + .with_allowed_module_path("simpleservo::api") + .with_allowed_module_path("simpleservo::jniapi") + .with_allowed_module_path("simpleservo::gl_glue::egl"); + let log_str = env.get_string(log_str).ok(); + let log_str = log_str.as_ref().map_or(Cow::Borrowed(""), |s| s.to_string_lossy()); + for module in log_str.split(',') { + filter = filter.with_allowed_module_path(module); + } + android_logger::init_once(filter, Some("simpleservo")); } info!("init"); diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py index 5b29015e8ff..656e230c732 100644 --- a/python/servo/post_build_commands.py +++ b/python/servo/post_build_commands.py @@ -99,6 +99,9 @@ class PostBuildCommands(CommandBase): ] json_params = shell_quote(json.dumps(params)) extra = "-e servoargs " + json_params + rust_log = env.get("RUST_LOG", None) + if rust_log: + extra += " -e servolog " + rust_log script += [ "am start " + extra + " com.mozilla.servo/com.mozilla.servo.MainActivity", "sleep 0.5", diff --git a/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java b/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java index d17a0434679..af0f27a92b2 100644 --- a/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java +++ b/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java @@ -71,7 +71,8 @@ public class MainActivity extends Activity implements Servo.Client { } String args = getIntent().getStringExtra("servoargs"); - mServoView.setServoArgs(args); + String log = getIntent().getStringExtra("servolog"); + mServoView.setServoArgs(args, log); setupUrlField(); } diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/JNIServo.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/JNIServo.java index a740f474af1..462b6c4d0cd 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/JNIServo.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/JNIServo.java @@ -22,6 +22,7 @@ public class JNIServo { public native void init(Activity activity, String args, String url, + String logstr, Callbacks callbacks, int width, int height, boolean log); diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java index dac6f77d63c..61affbaa9c4 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java @@ -24,7 +24,9 @@ public class Servo { GfxCallbacks gfxcb, Client client, Activity activity, - String args, String url, + String args, + String url, + String logstr, int width, int height, boolean log) { mRunCallback = runCallback; @@ -34,7 +36,7 @@ public class Servo { Callbacks cbs = new Callbacks(client, gfxcb); mRunCallback.inGLThread(() -> { - mJNI.init(activity, args, url, cbs, width, height, log); + mJNI.init(activity, args, url, logstr, cbs, width, height, log); }); } diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java index 305dbb7a885..d7180e40095 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java @@ -38,6 +38,7 @@ public class ServoSurface { private Servo mServo; private Client mClient = null; private String mServoArgs = ""; + private String mServoLog = ""; private String mInitialUri = null; private Activity mActivity; @@ -53,8 +54,9 @@ public class ServoSurface { mClient = client; } - public void setServoArgs(String args) { + public void setServoArgs(String args, String log) { mServoArgs = args != null ? args : ""; + mServoLog = log != null ? log : ""; } public void setActivity(Activity activity) { @@ -204,7 +206,7 @@ public class ServoSurface { inUIThread(() -> { final boolean showLogs = true; String uri = mInitialUri == null ? null : mInitialUri; - mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mWidth, mHeight, showLogs); + mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mServoLog, mWidth, mHeight, showLogs); }); Looper.loop(); diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java index c886b44ea4a..895fd59e3c4 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java @@ -41,6 +41,7 @@ public class ServoView extends GLSurfaceView private Uri mInitialUri = null; private boolean mAnimating; private String mServoArgs = ""; + private String mServoLog = ""; private GestureDetector mGestureDetector; private ScaleGestureDetector mScaleGestureDetector; @@ -72,8 +73,9 @@ public class ServoView extends GLSurfaceView initGestures(context); } - public void setServoArgs(String args) { + public void setServoArgs(String args, String log) { mServoArgs = args != null ? args : ""; + mServoLog = log != null ? log : ""; } public void reload() { @@ -139,7 +141,7 @@ public class ServoView extends GLSurfaceView int height = getHeight(); inGLThread(() -> { String uri = mInitialUri == null ? null : mInitialUri.toString(); - mServo = new Servo(this, this, mClient, mActivity, mServoArgs, uri, width, height, showLogs); + mServo = new Servo(this, this, mClient, mActivity, mServoArgs, uri, mServoLog, width, height, showLogs); }); }