aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo')
-rw-r--r--python/servo/build_commands.py3
-rw-r--r--python/servo/command_base.py15
-rw-r--r--python/servo/package_commands.py2
-rw-r--r--python/servo/post_build_commands.py20
-rw-r--r--python/servo/testing_commands.py4
5 files changed, 28 insertions, 16 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py
index 13d31c7ac8a..fb2a61681ac 100644
--- a/python/servo/build_commands.py
+++ b/python/servo/build_commands.py
@@ -185,7 +185,6 @@ class MachCommands(CommandBase):
debug_mozjs=False, params=None, with_debug_assertions=False):
opts = params or []
- opts += ["--manifest-path", self.servo_manifest()]
if android is None:
android = self.config["build"]["android"]
@@ -420,4 +419,4 @@ class MachCommands(CommandBase):
opts += ["-v"]
opts += params
return check_call(["cargo", "clean"] + opts,
- env=self.build_env(), cwd=self.servo_crate(), verbose=verbose)
+ env=self.build_env(), cwd=self.ports_servo_crate(), verbose=verbose)
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index 0963242226b..ae04bd077b8 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -330,15 +330,24 @@ class CommandBase(object):
else:
return path.join(self.context.topdir, "target")
+ def get_apk_path(self, release):
+ base_path = self.get_target_dir()
+ base_path = path.join(base_path, self.config["android"]["target"])
+ apk_name = "servo.apk"
+ build_type = "release" if release else "debug"
+ return path.join(base_path, build_type, apk_name)
+
def get_binary_path(self, release, dev, android=False):
# TODO(autrilla): this function could still use work - it shouldn't
# handle quitting, or printing. It should return the path, or an error.
base_path = self.get_target_dir()
+ binary_name = "servo" + BIN_SUFFIX
+
if android:
base_path = path.join(base_path, self.config["android"]["target"])
+ binary_name = "libsimpleservo.so"
- binary_name = "servo" + BIN_SUFFIX
release_path = path.join(base_path, "release", binary_name)
dev_path = path.join(base_path, "debug", binary_name)
@@ -594,10 +603,10 @@ class CommandBase(object):
return env
- def servo_crate(self):
+ def ports_servo_crate(self):
return path.join(self.context.topdir, "ports", "servo")
- def servo_manifest(self):
+ def ports_servo_manifest(self):
return path.join(self.context.topdir, "ports", "servo", "Cargo.toml")
def servo_features(self):
diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py
index 03c2390e308..9b8cb8c6f4f 100644
--- a/python/servo/package_commands.py
+++ b/python/servo/package_commands.py
@@ -421,7 +421,7 @@ class PackageCommands(CommandBase):
return 1
if android:
- pkg_path = binary_path + ".apk"
+ pkg_path = self.get_apk_path(release)
exec_command = [self.android_adb_path(env)]
if emulator and usb:
print("Cannot install to both emulator and USB at the same time.")
diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py
index 0132d2ea4b0..5b29015e8ff 100644
--- a/python/servo/post_build_commands.py
+++ b/python/servo/post_build_commands.py
@@ -9,6 +9,7 @@
from __future__ import print_function, unicode_literals
+import json
import os
import os.path as path
import subprocess
@@ -34,6 +35,13 @@ def read_file(filename, if_exists=False):
return f.read()
+# Copied from Python 3.3+'s shlex.quote()
+def shell_quote(arg):
+ # use single quotes, and put single quotes into double quotes
+ # the string $'b is then quoted as '$'"'"'b'
+ return "'" + arg.replace("'", "'\"'\"'") + "'"
+
+
@CommandProvider
class PostBuildCommands(CommandBase):
@Command('run',
@@ -88,15 +96,11 @@ class PostBuildCommands(CommandBase):
return
script = [
"am force-stop com.mozilla.servo",
- "echo servo >/sdcard/Android/data/com.mozilla.servo/files/android_params"
]
- for param in params:
- script += [
- "echo '%s' >>/sdcard/Android/data/com.mozilla.servo/files/android_params"
- % param.replace("'", "\\'")
- ]
+ json_params = shell_quote(json.dumps(params))
+ extra = "-e servoargs " + json_params
script += [
- "am start com.mozilla.servo/com.mozilla.servo.MainActivity",
+ "am start " + extra + " com.mozilla.servo/com.mozilla.servo.MainActivity",
"sleep 0.5",
"echo Servo PID: $(pidof com.mozilla.servo)",
"exit"
@@ -257,7 +261,7 @@ class PostBuildCommands(CommandBase):
copy2(full_name, destination)
return self.call_rustup_run(
- ["cargo", "doc", "--manifest-path", self.servo_manifest()] + params,
+ ["cargo", "doc", "--manifest-path", self.ports_servo_manifest()] + params,
env=self.build_env()
)
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index db369a82b2d..78147ad6240 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -278,7 +278,7 @@ class MachCommands(CommandBase):
features = self.servo_features()
if len(packages) > 0 or len(in_crate_packages) > 0:
- args = ["cargo", "bench" if bench else "test", "--manifest-path", self.servo_manifest()]
+ args = ["cargo", "bench" if bench else "test", "--manifest-path", self.ports_servo_manifest()]
for crate in packages:
args += ["-p", "%s_tests" % crate]
for crate in in_crate_packages:
@@ -576,7 +576,7 @@ class MachCommands(CommandBase):
def test_android_startup(self, release, dev):
html = """
<script>
- console.log("JavaScript is running!")
+ window.alert("JavaScript is running!")
</script>
"""
url = "data:text/html;base64," + html.encode("base64").replace("\n", "")