Skip to content
This repository was archived by the owner on Feb 9, 2018. It is now read-only.

Commit 042818e

Browse files
committed
Hide CSSUnparsedValue's constructor
1 parent 48bed39 commit 042818e

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

src/css-unparsed-value.js

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,7 @@
1515
(function(internal, scope) {
1616

1717
function CSSUnparsedValue(values) {
18-
if (values == undefined) {
19-
values = [];
20-
}
21-
if (!Array.isArray(values)) {
22-
throw new TypeError('CSSUnparsedValue should be an array of string or CSSVariableReferenceValue');
23-
}
24-
for (var i = 0; i < values.length; i++) {
25-
if (typeof values[i] != 'string' && !(values[i] instanceof CSSVariableReferenceValue)) {
26-
throw new TypeError("CSSUnparsedValue's elements should be string or CSSVariableReferenceValue");
27-
}
28-
}
29-
this._listOfReferences = values;
18+
throw new TypeError('CSSUnparsedValue cannot be instantiated.');
3019
}
3120
internal.inherit(CSSUnparsedValue, CSSStyleValue);
3221

@@ -60,4 +49,24 @@
6049

6150
scope.CSSUnparsedValue = CSSUnparsedValue;
6251

52+
(function() {
53+
function CSSUnparsedValue(values) {
54+
if (values == undefined) {
55+
values = [];
56+
}
57+
if (!Array.isArray(values)) {
58+
throw new TypeError('CSSUnparsedValue should be an array of string or CSSVariableReferenceValue');
59+
}
60+
for (var i = 0; i < values.length; i++) {
61+
if (typeof values[i] != 'string' && !(values[i] instanceof CSSVariableReferenceValue)) {
62+
throw new TypeError("CSSUnparsedValue's elements should be string or CSSVariableReferenceValue");
63+
}
64+
}
65+
this._listOfReferences = values;
66+
}
67+
CSSUnparsedValue.prototype = Object.create(scope.CSSUnparsedValue.prototype);
68+
69+
internal.CSSUnparsedValue = CSSUnparsedValue;
70+
})();
71+
6372
})(typedOM.internal, window);

test/js/css-unparsed-value.js

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,32 @@
1313
// limitations under the License.
1414

1515
suite('CSSUnparsedValue', function() {
16+
test('Cannot instantiate CSSUnparsedValue', function() {
17+
assert.throws(function() { new CSSUnparsedValue(); },
18+
/^CSSUnparsedValue cannot be instantiated/);
19+
});
20+
1621
test("CSSUnparsedValue is a CSSUnparsedValue and CSSStyleValue", function() {
17-
assert.instanceOf(new CSSUnparsedValue(), CSSUnparsedValue);
18-
assert.instanceOf(new CSSUnparsedValue(), CSSStyleValue);
22+
assert.instanceOf(new typedOM.internal.CSSUnparsedValue(), CSSUnparsedValue);
23+
assert.instanceOf(new typedOM.internal.CSSUnparsedValue(), CSSStyleValue);
1924
});
2025

2126
test('Values not an array throws', function() {
2227
var valueErr = /^CSSUnparsedValue should be an array of string or CSSVariableReferenceValue$/;
23-
assert.throws(function() { new CSSUnparsedValue(1); }, TypeError, valueErr);
24-
assert.throws(function() { new CSSUnparsedValue("123"); }, TypeError, valueErr);
25-
assert.throws(function() { new CSSUnparsedValue({h: 10, w: 5, d: 4, t: "5"});}, TypeError, valueErr);
28+
assert.throws(function() { new typedOM.internal.CSSUnparsedValue(1); }, TypeError, valueErr);
29+
assert.throws(function() { new typedOM.internal.CSSUnparsedValue("123"); }, TypeError, valueErr);
30+
assert.throws(function() { new typedOM.internal.CSSUnparsedValue({h: 10, w: 5, d: 4, t: "5"});}, TypeError, valueErr);
2631
});
2732

2833
test('Values not an array of string or CSSVariableReferenceValue throws', function() {
2934
var valueErr = /^CSSUnparsedValue's elements should be string or CSSVariableReferenceValue$/;
30-
assert.throws(function() { new CSSUnparsedValue([1]); }, TypeError, valueErr);
31-
assert.throws(function() { new CSSUnparsedValue(["1234", "2342", 1]); }, TypeError, valueErr);
35+
assert.throws(function() { new typedOM.internal.CSSUnparsedValue([1]); }, TypeError, valueErr);
36+
assert.throws(function() { new typedOM.internal.CSSUnparsedValue(["1234", "2342", 1]); }, TypeError, valueErr);
3237
});
3338

3439
test('Using spread operator on CSSUnparsedValue results in the correct values', function() {
35-
var values = ['string', new CSSVariableReferenceValue('val', new CSSUnparsedValue(['innerStr']))];
36-
var tokenStream = new CSSUnparsedValue(values);
40+
var values = ['string', new CSSVariableReferenceValue('val', new typedOM.internal.CSSUnparsedValue(['innerStr']))];
41+
var tokenStream = new typedOM.internal.CSSUnparsedValue(values);
3742

3843
var expected = [[0, values[0]], [1, values[1]]];
3944
var result = [...tokenStream];
@@ -42,10 +47,10 @@ suite('CSSUnparsedValue', function() {
4247
});
4348

4449
test('Using iterator operations on entries() gets correct values', function() {
45-
var values = ['test', new CSSVariableReferenceValue('var', new CSSUnparsedValue(['1']))];
50+
var values = ['test', new CSSVariableReferenceValue('var', new typedOM.internal.CSSUnparsedValue(['1']))];
4651
var expectedEntries = [[0, values[0]], [1, values[1]]];
4752

48-
var tokenStreamValue = new CSSUnparsedValue(values);
53+
var tokenStreamValue = new typedOM.internal.CSSUnparsedValue(values);
4954

5055
// One by one
5156
assert.deepEqual(
@@ -60,9 +65,9 @@ suite('CSSUnparsedValue', function() {
6065
});
6166

6267
test('Using iterator operations on keys() gets correct values', function() {
63-
var values = ['test', new CSSVariableReferenceValue('var', new CSSUnparsedValue(['1']))];
68+
var values = ['test', new CSSVariableReferenceValue('var', new typedOM.internal.CSSUnparsedValue(['1']))];
6469
var expectedKeys = [0, 1];
65-
var tokenStreamValue = new CSSUnparsedValue(values);
70+
var tokenStreamValue = new typedOM.internal.CSSUnparsedValue(values);
6671

6772
// One by one
6873
assert.deepEqual(
@@ -77,8 +82,8 @@ suite('CSSUnparsedValue', function() {
7782
});
7883

7984
test('Using iterator operations on values() gets correct values', function() {
80-
var inputValues = ['test', new CSSVariableReferenceValue('var', new CSSUnparsedValue(['1']))];
81-
var tokenStreamValue = new CSSUnparsedValue(inputValues);
85+
var inputValues = ['test', new CSSVariableReferenceValue('var', new typedOM.internal.CSSUnparsedValue(['1']))];
86+
var tokenStreamValue = new typedOM.internal.CSSUnparsedValue(inputValues);
8287
// One by one
8388
assert.deepEqual(
8489
iteratorExpansionUsingNext(tokenStreamValue.values()),

0 commit comments

Comments
 (0)