diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-07-19 21:18:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-19 21:18:42 -0400 |
commit | 60f1ffc5a79f98c261dbf5f8d184da160dfadfc5 (patch) | |
tree | ae4ec5dbd7aaaf91036f04ce8c11a2f16bf97798 | |
parent | 1128f40f4e383987d5ef04528fea4bfd5bff9889 (diff) | |
parent | 3a374b3455df669ba0c61ec4ef94201f024c1bcd (diff) | |
download | servo-60f1ffc5a79f98c261dbf5f8d184da160dfadfc5.tar.gz servo-60f1ffc5a79f98c261dbf5f8d184da160dfadfc5.zip |
Auto merge of #23801 - paulrouget:alert, r=jdm
Expose javascript:window.alert() to libsimpleservo
<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23801)
<!-- Reviewable:end -->
7 files changed, 42 insertions, 0 deletions
diff --git a/ports/libmlservo/src/lib.rs b/ports/libmlservo/src/lib.rs index 87b5de33dcd..310182a813a 100644 --- a/ports/libmlservo/src/lib.rs +++ b/ports/libmlservo/src/lib.rs @@ -347,6 +347,7 @@ impl HostTrait for HostCallbacks { MakeCurrent(self.disp, self.surf, self.surf, self.ctxt); } + fn on_alert(&self, _message: String) {} fn on_load_started(&self) {} fn on_load_ended(&self) {} fn on_title_changed(&self, _title: String) {} diff --git a/ports/libsimpleservo/api/src/lib.rs b/ports/libsimpleservo/api/src/lib.rs index 213379c927d..9dac35f1aa4 100644 --- a/ports/libsimpleservo/api/src/lib.rs +++ b/ports/libsimpleservo/api/src/lib.rs @@ -89,6 +89,8 @@ pub trait HostTrait { /// Will be called before drawing. /// Time to make the targetted GL context current. fn make_current(&self); + /// javascript window.alert() + fn on_alert(&self, msg: String); /// Page starts loading. /// "Reload button" should be disabled. /// "Stop button" should be enabled. @@ -521,6 +523,7 @@ impl ServoGlue { }, EmbedderMsg::Alert(message, sender) => { info!("Alert: {}", message); + self.callbacks.host_callbacks.on_alert(message); let _ = sender.send(()); }, EmbedderMsg::AllowOpeningBrowser(response_chan) => { diff --git a/ports/libsimpleservo/capi/src/lib.rs b/ports/libsimpleservo/capi/src/lib.rs index e415550e5f6..791131cd078 100644 --- a/ports/libsimpleservo/capi/src/lib.rs +++ b/ports/libsimpleservo/capi/src/lib.rs @@ -38,6 +38,7 @@ where pub struct CHostCallbacks { pub flush: extern "C" fn(), pub make_current: extern "C" fn(), + pub on_alert: extern "C" fn(message: *const c_char), pub on_load_started: extern "C" fn(), pub on_load_ended: extern "C" fn(), pub on_title_changed: extern "C" fn(title: *const c_char), @@ -346,6 +347,14 @@ impl HostTrait for HostCallbacks { (self.0.make_current)(); } + fn on_alert(&self, message: String) { + debug!("on_alert"); + let message = CString::new(message).expect("Can't create string"); + let msg_ptr = message.as_ptr(); + mem::forget(message); + (self.0.on_alert)(msg_ptr); + } + fn on_load_started(&self) { debug!("on_load_ended"); (self.0.on_load_started)(); diff --git a/ports/libsimpleservo/jniapi/src/lib.rs b/ports/libsimpleservo/jniapi/src/lib.rs index b392be62f66..1a45ce35abb 100644 --- a/ports/libsimpleservo/jniapi/src/lib.rs +++ b/ports/libsimpleservo/jniapi/src/lib.rs @@ -375,6 +375,23 @@ impl HostTrait for HostCallbacks { .unwrap(); } + fn on_alert(&self, message: String) { + debug!("on_alert"); + let env = self.jvm.get_env().unwrap(); + let s = match new_string(&env, &message) { + Ok(s) => s, + Err(_) => return, + }; + let s = JValue::from(JObject::from(s)); + env.call_method( + self.callbacks.as_obj(), + "onAlert", + "(Ljava/lang/String;)V", + &[s], + ) + .unwrap(); + } + fn on_load_started(&self) { debug!("on_load_started"); let env = self.jvm.get_env().unwrap(); diff --git a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java index ffd445ff034..a731056e073 100644 --- a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java +++ b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java @@ -130,6 +130,10 @@ public class MainActivity extends Activity implements Servo.Client { } @Override + public void onAlert(String message) { + } + + @Override public void onLoadStarted() { mReloadButton.setEnabled(false); mStopButton.setEnabled(true); 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 f2c3bad3873..b5c18e3e5fa 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 @@ -93,6 +93,8 @@ public class JNIServo { void makeCurrent(); + void onAlert(String message); + void onAnimatingChanged(boolean animating); void onLoadStarted(); 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 a5ca75ee8e2..e503293cac9 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 @@ -169,6 +169,8 @@ public class Servo { } public interface Client { + void onAlert(String message); + boolean onAllowNavigation(String url); void onLoadStarted(); @@ -228,6 +230,10 @@ public class Servo { mGfxCb.makeCurrent(); } + public void onAlert(String message) { + mRunCallback.inUIThread(() -> mClient.onAlert(message)); + } + public void onShutdownComplete() { mShutdownComplete = true; } |