| Index: third_party/WebKit/LayoutTests/imported/wpt/common/stringifiers.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/common/stringifiers.js b/third_party/WebKit/LayoutTests/imported/wpt/common/stringifiers.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b59ca9c246f75a72d532d58ef628824f8905ff7a
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/common/stringifiers.js
|
| @@ -0,0 +1,52 @@
|
| +// Tests <http://heycam.github.io/webidl/#es-stringifier>.
|
| +function test_stringifier_attribute(aObject, aAttribute, aIsUnforgeable) {
|
| + // Step 1.
|
| + test(function() {
|
| + [null, undefined].forEach(function(v) {
|
| + assert_throws(new TypeError(), function() {
|
| + aObject.toString.call(v);
|
| + });
|
| + });
|
| + });
|
| +
|
| + // TODO Step 2: security check.
|
| +
|
| + // Step 3.
|
| + test(function() {
|
| + assert_false("Window" in window && aObject instanceof window.Window);
|
| + [{}, window].forEach(function(v) {
|
| + assert_throws(new TypeError(), function() {
|
| + aObject.toString.call(v)
|
| + });
|
| + });
|
| + });
|
| +
|
| + // Step 4-6.
|
| + var expected_value;
|
| + test(function() {
|
| + expected_value = aObject[aAttribute];
|
| + assert_equals(aObject[aAttribute], expected_value,
|
| + "The attribute " + aAttribute + " should be pure.");
|
| + });
|
| +
|
| + var test_error = { name: "test" };
|
| + test(function() {
|
| + if (!aIsUnforgeable) {
|
| + Object.defineProperty(aObject, aAttribute, {
|
| + configurable: true,
|
| + get: function() { throw test_error; }
|
| + });
|
| + }
|
| + assert_equals(aObject.toString(), expected_value);
|
| + });
|
| +
|
| + test(function() {
|
| + if (!aIsUnforgeable) {
|
| + Object.defineProperty(aObject, aAttribute, {
|
| + configurable: true,
|
| + value: { toString: function() { throw test_error; } }
|
| + });
|
| + }
|
| + assert_equals(aObject.toString(), expected_value);
|
| + });
|
| +}
|
|
|