aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-07-19 21:18:42 -0400
committerGitHub <noreply@github.com>2019-07-19 21:18:42 -0400
commit60f1ffc5a79f98c261dbf5f8d184da160dfadfc5 (patch)
treeae4ec5dbd7aaaf91036f04ce8c11a2f16bf97798
parent1128f40f4e383987d5ef04528fea4bfd5bff9889 (diff)
parent3a374b3455df669ba0c61ec4ef94201f024c1bcd (diff)
downloadservo-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 -->
-rw-r--r--ports/libmlservo/src/lib.rs1
-rw-r--r--ports/libsimpleservo/api/src/lib.rs3
-rw-r--r--ports/libsimpleservo/capi/src/lib.rs9
-rw-r--r--ports/libsimpleservo/jniapi/src/lib.rs17
-rw-r--r--support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java4
-rw-r--r--support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java2
-rw-r--r--support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java6
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;
}