Support package-prefs.json for libsimpleservo

This commit is contained in:
Paul Rouget 2020-07-17 08:30:11 +02:00
parent b17a302356
commit b8d6b1d52d
6 changed files with 47 additions and 12 deletions

1
Cargo.lock generated
View file

@ -5408,6 +5408,7 @@ dependencies = [
"libloading 0.5.2", "libloading 0.5.2",
"libservo", "libservo",
"log", "log",
"serde_json",
"servo-media", "servo-media",
"surfman", "surfman",
"webxr", "webxr",

View file

@ -30,6 +30,7 @@ libloading = "0.5"
[build-dependencies] [build-dependencies]
gl_generator = "0.14" gl_generator = "0.14"
serde_json = "1.0"
[features] [features]
debugmozjs = ["libservo/debugmozjs"] debugmozjs = ["libservo/debugmozjs"]

View file

@ -3,6 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use gl_generator::{Api, Fallbacks, Profile, Registry}; use gl_generator::{Api, Fallbacks, Profile, Registry};
use serde_json::{self, Value};
use std::env; use std::env;
use std::fs::File; use std::fs::File;
use std::path::PathBuf; use std::path::PathBuf;
@ -40,4 +41,30 @@ fn main() {
.write_bindings(gl_generator::StructGenerator, &mut file) .write_bindings(gl_generator::StructGenerator, &mut file)
.unwrap(); .unwrap();
} }
// Merge prefs.json and package-prefs.json
let mut default_prefs = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
default_prefs.push("../../../resources/prefs.json");
let mut prefs: Value = serde_json::from_reader(File::open(&default_prefs).unwrap()).unwrap();
let mut pkg_prefs = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
pkg_prefs.push("../../../resources/package-prefs.json");
let pkg_prefs: Value = serde_json::from_reader(File::open(&pkg_prefs).unwrap()).unwrap();
if target.contains("uwp") {
// Assuming Hololens build
let to_merge = pkg_prefs
.as_object()
.unwrap()
.get("hololens")
.unwrap()
.as_object()
.unwrap();
for (key, value) in to_merge.iter() {
prefs
.as_object_mut()
.unwrap()
.insert(key.clone(), value.clone());
}
}
let file = File::create(&dest.join("prefs.json")).unwrap();
serde_json::to_writer(file, &prefs).unwrap();
} }

View file

@ -227,22 +227,20 @@ pub fn init(
) -> Result<(), &'static str> { ) -> Result<(), &'static str> {
resources::set(Box::new(ResourceReaderInstance::new())); resources::set(Box::new(ResourceReaderInstance::new()));
let mut args = mem::replace(&mut init_opts.args, vec![]); set_pref!(
if !args.is_empty() { gfx.subpixel_text_antialiasing.enabled,
// opts::from_cmdline_args expects the first argument to be the binary name. init_opts.enable_subpixel_text_antialiasing
args.insert(0, "servo".to_string()); );
set_pref!(
gfx.subpixel_text_antialiasing.enabled,
init_opts.enable_subpixel_text_antialiasing
);
opts::from_cmdline_args(Options::new(), &args);
}
if let Some(prefs) = init_opts.prefs { if let Some(prefs) = init_opts.prefs {
add_user_prefs(prefs); add_user_prefs(prefs);
} }
let mut args = mem::replace(&mut init_opts.args, vec![]);
// opts::from_cmdline_args expects the first argument to be the binary name.
args.insert(0, "servo".to_string());
opts::from_cmdline_args(Options::new(), &args);
let pref_url = ServoUrl::parse(&pref!(shell.homepage)).ok(); let pref_url = ServoUrl::parse(&pref!(shell.homepage)).ok();
let blank_url = ServoUrl::parse("about:blank").ok(); let blank_url = ServoUrl::parse("about:blank").ok();
@ -943,7 +941,7 @@ impl ResourceReaderInstance {
impl ResourceReaderMethods for ResourceReaderInstance { impl ResourceReaderMethods for ResourceReaderInstance {
fn read(&self, res: Resource) -> Vec<u8> { fn read(&self, res: Resource) -> Vec<u8> {
Vec::from(match res { Vec::from(match res {
Resource::Preferences => &include_bytes!("../../../../resources/prefs.json")[..], Resource::Preferences => &include_bytes!(concat!(env!("OUT_DIR"), "/prefs.json"))[..],
Resource::HstsPreloadList => { Resource::HstsPreloadList => {
&include_bytes!("../../../../resources/hsts_preload.json")[..] &include_bytes!("../../../../resources/hsts_preload.json")[..]
}, },

View file

@ -5,6 +5,12 @@
"linux": {}, "linux": {},
"android": {}, "android": {},
"windows": {}, "windows": {},
"hololens": {
"_comment": "settings specific to Hololens/UWP builds",
"devtools.server.enabled": true,
"dom.webxr.enabled": true,
"shell.homepage": "https://servo.org/hl-home/"
},
"vr": { "vr": {
"_comment": "settings specific to VR builds", "_comment": "settings specific to VR builds",
"dom.webvr.enabled": true, "dom.webvr.enabled": true,

View file

@ -1,4 +1,6 @@
{ {
"devtools.server.enabled": false,
"devtools.server.port": 0,
"dom.bluetooth.enabled": false, "dom.bluetooth.enabled": false,
"dom.bluetooth.testing.enabled": false, "dom.bluetooth.testing.enabled": false,
"dom.canvas_capture.enabled": false, "dom.canvas_capture.enabled": false,