Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions components/script/dom/testbinding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ use js::jsval::{JSVal, NullValue};
use std::borrow::ToOwned;
use std::ptr;
use std::rc::Rc;
use util::prefs::{get_pref};
use util::str::DOMString;

#[dom_struct]
Expand Down Expand Up @@ -486,6 +487,9 @@ impl TestBindingMethods for TestBinding {
fn PassVariadicUnion6(&self, _: Vec<UnsignedLongOrBoolean>) {}
fn PassVariadicAny(&self, _: *mut JSContext, _: Vec<HandleValue>) {}
fn PassVariadicObject(&self, _: *mut JSContext, _: Vec<*mut JSObject>) {}
fn BooleanMozPreference(&self, pref_name: DOMString) -> bool {
get_pref(pref_name.as_ref()).as_boolean().unwrap_or(false)
}
}

impl TestBinding {
Expand Down
1 change: 1 addition & 0 deletions components/script/dom/webidls/TestBinding.webidl
Original file line number Diff line number Diff line change
Expand Up @@ -398,4 +398,5 @@ interface TestBinding {

static attribute boolean booleanAttributeStatic;
static void receiveVoidStatic();
boolean BooleanMozPreference(DOMString pref_name);
};
10 changes: 9 additions & 1 deletion components/util/opts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,7 @@ pub fn default_opts() -> Opts {
}
}

#[allow(str_to_string)]
pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
let (app_name, args) = args.split_first().unwrap();

Expand Down Expand Up @@ -767,7 +768,14 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
// This must happen after setting the default options, since the prefs rely on
// on the resource path.
for pref in opt_match.opt_strs("pref").iter() {
prefs::set_pref(pref, PrefValue::Boolean(true));
let split: Vec<&str> = pref.splitn(2, '=').collect();
let pref_name = split[0];
let value = split.get(1);
match value {
Some(&"false") => prefs::set_pref(pref_name, PrefValue::Boolean(false)),
Some(&"true") | None => prefs::set_pref(pref_name, PrefValue::Boolean(true)),
_ => prefs::set_pref(pref_name, PrefValue::String(value.unwrap().to_string()))
};
}

ArgumentParsingResult::ChromeProcess
Expand Down
4 changes: 2 additions & 2 deletions tests/wpt/harness/wptrunner/executors/executorservo.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ def do_test(self, test):
"-z", self.test_url(test)]
for stylesheet in self.browser.user_stylesheets:
args += ["--user-stylesheet", stylesheet]
for pref in test.environment.get('prefs', {}):
args += ["--pref", pref]
for pref, value in test.environment.get('prefs', {}).iteritems():
args += ["--pref", "%s=%s" % (pref, value)]
debug_args, command = browser_command(self.binary, args, self.debug_info)

self.command = command
Expand Down
6 changes: 6 additions & 0 deletions tests/wpt/mozilla/meta/MANIFEST.json
Original file line number Diff line number Diff line change
Expand Up @@ -6144,6 +6144,12 @@
"url": "/_mozilla/mozilla/parentnodes.html"
}
],
"mozilla/preferences.html": [
{
"path": "mozilla/preferences.html",
"url": "/_mozilla/mozilla/preferences.html"
}
],
"mozilla/preserve_wrapper_callback.html": [
{
"path": "mozilla/preserve_wrapper_callback.html",
Expand Down
3 changes: 3 additions & 0 deletions tests/wpt/mozilla/meta/mozilla/preferences.html.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[preferences.html]
type: testharness
prefs: [dom.testbinding.preference_value.falsy:false, dom.testbinding.preference_value.truthy:true]
13 changes: 13 additions & 0 deletions tests/wpt/mozilla/tests/mozilla/preferences.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<meta charset="utf-8">
<title></title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(function() {
var testBinding = new TestBinding();
assert_equals(typeof testBinding.BooleanMozPreference, "function");
assert_equals(testBinding.BooleanMozPreference("dom.testbinding.preference_value.falsy"), false);
assert_equals(testBinding.BooleanMozPreference("dom.testbinding.preference_value.truthy"), true);
}, "prefs");
</script>