Bug 1408250 - Don't expose PaymentRequest API in non-e10s. r=baku

1. PaymentRequest::PrefEnabled() returns false under non-e10s situation.
2. Add a new mochitest test_block_none10s.html to expect to get ReferenceError
   in non-e10s mode.
This commit is contained in:
Eden Chuang 2017-10-20 00:10:25 +08:00
Родитель ec610d5b7e
Коммит 8eaa630afe
3 изменённых файлов: 62 добавлений и 1 удалений

Просмотреть файл

@ -51,7 +51,8 @@ NS_IMPL_RELEASE_INHERITED(PaymentRequest, DOMEventTargetHelper)
bool
PaymentRequest::PrefEnabled(JSContext* aCx, JSObject* aObj)
{
return Preferences::GetBool("dom.payments.request.enabled");
return XRE_IsContentProcess() &&
Preferences::GetBool("dom.payments.request.enabled");
}
nsresult

Просмотреть файл

@ -14,6 +14,8 @@ support-files =
[test_abortPayment.html]
run-if = nightly_build # Bug 1390018: Depends on the Nightly-only UI service
[test_basiccard.html]
[test_block_none10s.html]
skip-if = e10s # Bug 1408250: Don't expose PaymentRequest Constructor in non-e10s
[test_canMakePayment.html]
run-if = nightly_build # Bug 1390737: Depends on the Nightly-only UI service
[test_constructor.html]

Просмотреть файл

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<head>
<title>Test for Bug 1408250</title>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript">
"use strict";
SimpleTest.waitForExplicitFinish();
function testInNone10s() {
return new Promise((resolve,reject) => {
const supportedInstruments = [{
supportedMethods: "basic-card",
}];
const details = {
id: "simple details",
total: {
label: "Donation",
amount: { currency: "USD", value: "55.00" }
},
};
try {
const payRequest = new PaymentRequest(supportedInstruments, details);
ok(false, "Unexpected, new PaymentRequest() can not be used in non-e10s.");
} catch (err) {
ok(err.name, "ReferenceError",
"Expected ReferenceError when calling new PaymentRequest()");
}
resolve();
});
}
function runTests() {
testInNone10s()
.then(SimpleTest.finish)
.catch( e => {
ok(false, "Unexpected error: " + e.name);
SimpleTest.finish();
});
}
window.addEventListener('load', function() {
SpecialPowers.pushPrefEnv({
'set': [
['dom.payments.request.enabled', true],
]
}, runTests);
});
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1408250">Mozilla Bug 1408250</a>
</body>
</html>