pdfjs-dist 2.1.266 → 2.5.207
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8382 -18492
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +20417 -29816
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25688 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +58239 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +403 -0
- package/es5/web/pdf_viewer.js +7742 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1475 -4897
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +750 -899
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +235 -183
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +447 -542
- package/lib/core/cmap.js +222 -264
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +573 -660
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +1103 -868
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +570 -491
- package/lib/core/function.js +291 -288
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +145 -149
- package/lib/core/image_utils.js +170 -0
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +284 -232
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2929 -2929
- package/lib/core/murmurhash3.js +90 -101
- package/lib/core/obj.js +1183 -1157
- package/lib/core/operator_list.js +99 -67
- package/lib/core/parser.js +972 -911
- package/lib/core/pattern.js +87 -70
- package/lib/core/pdf_manager.js +150 -315
- package/lib/core/primitives.js +83 -56
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +87 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +193 -390
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +741 -972
- package/lib/display/api.js +1500 -1791
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +165 -165
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +515 -0
- package/lib/display/fetch_stream.js +183 -298
- package/lib/display/font_loader.js +273 -413
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +266 -359
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +285 -458
- package/lib/display/pattern_helper.js +113 -65
- package/lib/display/svg.js +1166 -901
- package/lib/display/text_layer.js +156 -132
- package/lib/display/transport_stream.js +262 -278
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +40 -37
- package/lib/pdf.js +226 -59
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +266 -416
- package/lib/test/unit/annotation_spec.js +1555 -701
- package/lib/test/unit/api_spec.js +802 -604
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +84 -69
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +74 -76
- package/lib/test/unit/colorspace_spec.js +166 -161
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +20 -22
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +16 -21
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +83 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +46 -30
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -61
- package/lib/test/unit/network_utils_spec.js +183 -119
- package/lib/test/unit/node_stream_spec.js +78 -92
- package/lib/test/unit/parser_spec.js +172 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +140 -125
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +131 -143
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +297 -459
- package/lib/test/unit/unicode_spec.js +38 -38
- package/lib/test/unit/util_spec.js +121 -305
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1328 -1214
- package/lib/web/app_options.js +105 -107
- package/lib/web/base_viewer.js +824 -838
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +39 -55
- package/lib/web/firefox_print_service.js +37 -27
- package/lib/web/firefoxcom.js +212 -363
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +32 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +113 -131
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +221 -306
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +491 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +140 -175
- package/lib/web/pdf_page_view.js +452 -523
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +84 -108
- package/lib/web/pdf_sidebar.js +276 -306
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +82 -286
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +282 -339
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +267 -420
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +35 -25
- package/web/pdf_viewer.js +3489 -4855
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -494
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/lib/test/unit/dom_utils_spec.js +0 -89
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -21,403 +21,219 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var _util = require("../../shared/util");
|
24
|
+
var _util = require("../../shared/util.js");
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
31
|
-
|
32
|
-
describe('util', function () {
|
33
|
-
describe('bytesToString', function () {
|
34
|
-
it('handles non-array arguments', function () {
|
26
|
+
describe("util", function () {
|
27
|
+
describe("bytesToString", function () {
|
28
|
+
it("handles non-array arguments", function () {
|
35
29
|
expect(function () {
|
36
30
|
(0, _util.bytesToString)(null);
|
37
|
-
}).toThrow(new Error(
|
31
|
+
}).toThrow(new Error("Invalid argument for bytesToString"));
|
38
32
|
});
|
39
|
-
it(
|
40
|
-
expect((0, _util.bytesToString)(new Uint8Array([]))).toEqual(
|
41
|
-
expect((0, _util.bytesToString)(new Uint8Array([102, 111, 111]))).toEqual(
|
33
|
+
it("handles array arguments with a length not exceeding the maximum", function () {
|
34
|
+
expect((0, _util.bytesToString)(new Uint8Array([]))).toEqual("");
|
35
|
+
expect((0, _util.bytesToString)(new Uint8Array([102, 111, 111]))).toEqual("foo");
|
42
36
|
});
|
43
|
-
it(
|
44
|
-
|
45
|
-
|
37
|
+
it("handles array arguments with a length exceeding the maximum", function () {
|
38
|
+
const length = 10000;
|
39
|
+
const bytes = new Uint8Array(length);
|
46
40
|
|
47
|
-
for (
|
48
|
-
bytes[i] =
|
41
|
+
for (let i = 0; i < length; i++) {
|
42
|
+
bytes[i] = "a".charCodeAt(0);
|
49
43
|
}
|
50
44
|
|
51
|
-
|
45
|
+
const string = Array(length + 1).join("a");
|
52
46
|
expect((0, _util.bytesToString)(bytes)).toEqual(string);
|
53
47
|
});
|
54
48
|
});
|
55
|
-
describe(
|
56
|
-
it(
|
57
|
-
expect((0, _util.getInheritableProperty)({
|
58
|
-
dict: null,
|
59
|
-
key: 'foo'
|
60
|
-
})).toEqual(undefined);
|
61
|
-
expect((0, _util.getInheritableProperty)({
|
62
|
-
dict: undefined,
|
63
|
-
key: 'foo'
|
64
|
-
})).toEqual(undefined);
|
65
|
-
});
|
66
|
-
it('handles dictionaries that do not contain the property', function () {
|
67
|
-
var emptyDict = new _primitives.Dict();
|
68
|
-
expect((0, _util.getInheritableProperty)({
|
69
|
-
dict: emptyDict,
|
70
|
-
key: 'foo'
|
71
|
-
})).toEqual(undefined);
|
72
|
-
var filledDict = new _primitives.Dict();
|
73
|
-
filledDict.set('bar', 'baz');
|
74
|
-
expect((0, _util.getInheritableProperty)({
|
75
|
-
dict: filledDict,
|
76
|
-
key: 'foo'
|
77
|
-
})).toEqual(undefined);
|
78
|
-
});
|
79
|
-
it('fetches the property if it is not inherited', function () {
|
80
|
-
var ref = new _primitives.Ref(10, 0);
|
81
|
-
var xref = new _test_utils.XRefMock([{
|
82
|
-
ref: ref,
|
83
|
-
data: 'quux'
|
84
|
-
}]);
|
85
|
-
var dict = new _primitives.Dict(xref);
|
86
|
-
dict.set('foo', 'bar');
|
87
|
-
expect((0, _util.getInheritableProperty)({
|
88
|
-
dict: dict,
|
89
|
-
key: 'foo'
|
90
|
-
})).toEqual('bar');
|
91
|
-
dict.set('baz', ['qux', ref]);
|
92
|
-
expect((0, _util.getInheritableProperty)({
|
93
|
-
dict: dict,
|
94
|
-
key: 'baz',
|
95
|
-
getArray: true
|
96
|
-
})).toEqual(['qux', 'quux']);
|
97
|
-
});
|
98
|
-
it('fetches the property if it is inherited and present on one level', function () {
|
99
|
-
var ref = new _primitives.Ref(10, 0);
|
100
|
-
var xref = new _test_utils.XRefMock([{
|
101
|
-
ref: ref,
|
102
|
-
data: 'quux'
|
103
|
-
}]);
|
104
|
-
var firstDict = new _primitives.Dict(xref);
|
105
|
-
var secondDict = new _primitives.Dict(xref);
|
106
|
-
firstDict.set('Parent', secondDict);
|
107
|
-
secondDict.set('foo', 'bar');
|
108
|
-
expect((0, _util.getInheritableProperty)({
|
109
|
-
dict: firstDict,
|
110
|
-
key: 'foo'
|
111
|
-
})).toEqual('bar');
|
112
|
-
secondDict.set('baz', ['qux', ref]);
|
113
|
-
expect((0, _util.getInheritableProperty)({
|
114
|
-
dict: firstDict,
|
115
|
-
key: 'baz',
|
116
|
-
getArray: true
|
117
|
-
})).toEqual(['qux', 'quux']);
|
118
|
-
});
|
119
|
-
it('fetches the property if it is inherited and present on multiple levels', function () {
|
120
|
-
var ref = new _primitives.Ref(10, 0);
|
121
|
-
var xref = new _test_utils.XRefMock([{
|
122
|
-
ref: ref,
|
123
|
-
data: 'quux'
|
124
|
-
}]);
|
125
|
-
var firstDict = new _primitives.Dict(xref);
|
126
|
-
var secondDict = new _primitives.Dict(xref);
|
127
|
-
firstDict.set('Parent', secondDict);
|
128
|
-
firstDict.set('foo', 'bar1');
|
129
|
-
secondDict.set('foo', 'bar2');
|
130
|
-
expect((0, _util.getInheritableProperty)({
|
131
|
-
dict: firstDict,
|
132
|
-
key: 'foo'
|
133
|
-
})).toEqual('bar1');
|
134
|
-
expect((0, _util.getInheritableProperty)({
|
135
|
-
dict: firstDict,
|
136
|
-
key: 'foo',
|
137
|
-
getArray: false,
|
138
|
-
stopWhenFound: false
|
139
|
-
})).toEqual(['bar1', 'bar2']);
|
140
|
-
firstDict.set('baz', ['qux1', ref]);
|
141
|
-
secondDict.set('baz', ['qux2', ref]);
|
142
|
-
expect((0, _util.getInheritableProperty)({
|
143
|
-
dict: firstDict,
|
144
|
-
key: 'baz',
|
145
|
-
getArray: true,
|
146
|
-
stopWhenFound: false
|
147
|
-
})).toEqual([['qux1', 'quux'], ['qux2', 'quux']]);
|
148
|
-
});
|
149
|
-
it('stops searching when the loop limit is reached', function () {
|
150
|
-
var dict = new _primitives.Dict();
|
151
|
-
var currentDict = dict;
|
152
|
-
var parentDict = null;
|
153
|
-
|
154
|
-
for (var i = 0; i < 150; i++) {
|
155
|
-
parentDict = new _primitives.Dict();
|
156
|
-
currentDict.set('Parent', parentDict);
|
157
|
-
currentDict = parentDict;
|
158
|
-
}
|
159
|
-
|
160
|
-
parentDict.set('foo', 'bar');
|
161
|
-
expect((0, _util.getInheritableProperty)({
|
162
|
-
dict: dict,
|
163
|
-
key: 'foo'
|
164
|
-
})).toEqual(undefined);
|
165
|
-
dict.set('foo', 'baz');
|
166
|
-
expect((0, _util.getInheritableProperty)({
|
167
|
-
dict: dict,
|
168
|
-
key: 'foo',
|
169
|
-
getArray: false,
|
170
|
-
stopWhenFound: false
|
171
|
-
})).toEqual(['baz']);
|
172
|
-
});
|
173
|
-
});
|
174
|
-
describe('isArrayBuffer', function () {
|
175
|
-
it('handles array buffer values', function () {
|
49
|
+
describe("isArrayBuffer", function () {
|
50
|
+
it("handles array buffer values", function () {
|
176
51
|
expect((0, _util.isArrayBuffer)(new ArrayBuffer(0))).toEqual(true);
|
177
52
|
expect((0, _util.isArrayBuffer)(new Uint8Array(0))).toEqual(true);
|
178
53
|
});
|
179
|
-
it(
|
180
|
-
expect((0, _util.isArrayBuffer)(
|
54
|
+
it("handles non-array buffer values", function () {
|
55
|
+
expect((0, _util.isArrayBuffer)("true")).toEqual(false);
|
181
56
|
expect((0, _util.isArrayBuffer)(1)).toEqual(false);
|
182
57
|
expect((0, _util.isArrayBuffer)(null)).toEqual(false);
|
183
58
|
expect((0, _util.isArrayBuffer)(undefined)).toEqual(false);
|
184
59
|
});
|
185
60
|
});
|
186
|
-
describe(
|
187
|
-
it(
|
61
|
+
describe("isBool", function () {
|
62
|
+
it("handles boolean values", function () {
|
188
63
|
expect((0, _util.isBool)(true)).toEqual(true);
|
189
64
|
expect((0, _util.isBool)(false)).toEqual(true);
|
190
65
|
});
|
191
|
-
it(
|
192
|
-
expect((0, _util.isBool)(
|
193
|
-
expect((0, _util.isBool)(
|
66
|
+
it("handles non-boolean values", function () {
|
67
|
+
expect((0, _util.isBool)("true")).toEqual(false);
|
68
|
+
expect((0, _util.isBool)("false")).toEqual(false);
|
194
69
|
expect((0, _util.isBool)(1)).toEqual(false);
|
195
70
|
expect((0, _util.isBool)(0)).toEqual(false);
|
196
71
|
expect((0, _util.isBool)(null)).toEqual(false);
|
197
72
|
expect((0, _util.isBool)(undefined)).toEqual(false);
|
198
73
|
});
|
199
74
|
});
|
200
|
-
describe(
|
201
|
-
it(
|
75
|
+
describe("isEmptyObj", function () {
|
76
|
+
it("handles empty objects", function () {
|
202
77
|
expect((0, _util.isEmptyObj)({})).toEqual(true);
|
203
78
|
});
|
204
|
-
it(
|
79
|
+
it("handles non-empty objects", function () {
|
205
80
|
expect((0, _util.isEmptyObj)({
|
206
|
-
foo:
|
81
|
+
foo: "bar"
|
207
82
|
})).toEqual(false);
|
208
83
|
});
|
209
84
|
});
|
210
|
-
describe(
|
211
|
-
it(
|
85
|
+
describe("isNum", function () {
|
86
|
+
it("handles numeric values", function () {
|
212
87
|
expect((0, _util.isNum)(1)).toEqual(true);
|
213
88
|
expect((0, _util.isNum)(0)).toEqual(true);
|
214
89
|
expect((0, _util.isNum)(-1)).toEqual(true);
|
215
90
|
expect((0, _util.isNum)(1000000000000000000)).toEqual(true);
|
216
91
|
expect((0, _util.isNum)(12.34)).toEqual(true);
|
217
92
|
});
|
218
|
-
it(
|
219
|
-
expect((0, _util.isNum)(
|
93
|
+
it("handles non-numeric values", function () {
|
94
|
+
expect((0, _util.isNum)("true")).toEqual(false);
|
220
95
|
expect((0, _util.isNum)(true)).toEqual(false);
|
221
96
|
expect((0, _util.isNum)(null)).toEqual(false);
|
222
97
|
expect((0, _util.isNum)(undefined)).toEqual(false);
|
223
98
|
});
|
224
99
|
});
|
225
|
-
describe(
|
226
|
-
it(
|
227
|
-
expect((0, _util.
|
228
|
-
expect((0, _util.
|
229
|
-
expect((0, _util.isSpace)(0x0D)).toEqual(true);
|
230
|
-
expect((0, _util.isSpace)(0x0A)).toEqual(true);
|
231
|
-
});
|
232
|
-
it('handles non-space characters', function () {
|
233
|
-
expect((0, _util.isSpace)(0x0B)).toEqual(false);
|
234
|
-
expect((0, _util.isSpace)(null)).toEqual(false);
|
235
|
-
expect((0, _util.isSpace)(undefined)).toEqual(false);
|
236
|
-
});
|
237
|
-
});
|
238
|
-
describe('isString', function () {
|
239
|
-
it('handles string values', function () {
|
240
|
-
expect((0, _util.isString)('foo')).toEqual(true);
|
241
|
-
expect((0, _util.isString)('')).toEqual(true);
|
100
|
+
describe("isString", function () {
|
101
|
+
it("handles string values", function () {
|
102
|
+
expect((0, _util.isString)("foo")).toEqual(true);
|
103
|
+
expect((0, _util.isString)("")).toEqual(true);
|
242
104
|
});
|
243
|
-
it(
|
105
|
+
it("handles non-string values", function () {
|
244
106
|
expect((0, _util.isString)(true)).toEqual(false);
|
245
107
|
expect((0, _util.isString)(1)).toEqual(false);
|
246
108
|
expect((0, _util.isString)(null)).toEqual(false);
|
247
109
|
expect((0, _util.isString)(undefined)).toEqual(false);
|
248
110
|
});
|
249
111
|
});
|
250
|
-
describe(
|
251
|
-
it(
|
252
|
-
expect((0, _util.
|
253
|
-
expect((0, _util.
|
254
|
-
|
255
|
-
it('handles values larger than zero', function () {
|
256
|
-
expect((0, _util.log2)(1)).toEqual(0);
|
257
|
-
expect((0, _util.log2)(2)).toEqual(1);
|
258
|
-
expect((0, _util.log2)(3)).toEqual(2);
|
259
|
-
expect((0, _util.log2)(3.14)).toEqual(2);
|
260
|
-
});
|
261
|
-
});
|
262
|
-
describe('string32', function () {
|
263
|
-
it('converts unsigned 32-bit integers to strings', function () {
|
264
|
-
expect((0, _util.string32)(0x74727565)).toEqual('true');
|
265
|
-
expect((0, _util.string32)(0x74797031)).toEqual('typ1');
|
266
|
-
expect((0, _util.string32)(0x4F54544F)).toEqual('OTTO');
|
112
|
+
describe("string32", function () {
|
113
|
+
it("converts unsigned 32-bit integers to strings", function () {
|
114
|
+
expect((0, _util.string32)(0x74727565)).toEqual("true");
|
115
|
+
expect((0, _util.string32)(0x74797031)).toEqual("typ1");
|
116
|
+
expect((0, _util.string32)(0x4f54544f)).toEqual("OTTO");
|
267
117
|
});
|
268
118
|
});
|
269
|
-
describe(
|
270
|
-
it(
|
119
|
+
describe("stringToBytes", function () {
|
120
|
+
it("handles non-string arguments", function () {
|
271
121
|
expect(function () {
|
272
122
|
(0, _util.stringToBytes)(null);
|
273
|
-
}).toThrow(new Error(
|
123
|
+
}).toThrow(new Error("Invalid argument for stringToBytes"));
|
274
124
|
});
|
275
|
-
it(
|
276
|
-
expect((0, _util.stringToBytes)(
|
277
|
-
expect((0, _util.stringToBytes)(
|
125
|
+
it("handles string arguments", function () {
|
126
|
+
expect((0, _util.stringToBytes)("")).toEqual(new Uint8Array([]));
|
127
|
+
expect((0, _util.stringToBytes)("foo")).toEqual(new Uint8Array([102, 111, 111]));
|
278
128
|
});
|
279
129
|
});
|
280
|
-
describe(
|
281
|
-
it(
|
282
|
-
|
130
|
+
describe("stringToPDFString", function () {
|
131
|
+
it("handles ISO Latin 1 strings", function () {
|
132
|
+
const str = "\x8Dstring\x8E";
|
283
133
|
expect((0, _util.stringToPDFString)(str)).toEqual("\u201Cstring\u201D");
|
284
134
|
});
|
285
|
-
it(
|
286
|
-
|
287
|
-
expect((0, _util.stringToPDFString)(str)).toEqual(
|
135
|
+
it("handles UTF-16 big-endian strings", function () {
|
136
|
+
const str = "\xFE\xFF\x00\x73\x00\x74\x00\x72\x00\x69\x00\x6E\x00\x67";
|
137
|
+
expect((0, _util.stringToPDFString)(str)).toEqual("string");
|
288
138
|
});
|
289
|
-
it(
|
290
|
-
|
291
|
-
expect((0, _util.stringToPDFString)(
|
292
|
-
var str2 = '\xFE\xFF';
|
293
|
-
expect((0, _util.stringToPDFString)(str2)).toEqual('');
|
294
|
-
});
|
295
|
-
});
|
296
|
-
describe('removeNullCharacters', function () {
|
297
|
-
it('should not modify string without null characters', function () {
|
298
|
-
var str = 'string without null chars';
|
299
|
-
expect((0, _util.removeNullCharacters)(str)).toEqual('string without null chars');
|
139
|
+
it("handles UTF-16 little-endian strings", function () {
|
140
|
+
const str = "\xFF\xFE\x73\x00\x74\x00\x72\x00\x69\x00\x6E\x00\x67\x00";
|
141
|
+
expect((0, _util.stringToPDFString)(str)).toEqual("string");
|
300
142
|
});
|
301
|
-
it(
|
302
|
-
|
303
|
-
expect((0, _util.
|
143
|
+
it("handles empty strings", function () {
|
144
|
+
const str1 = "";
|
145
|
+
expect((0, _util.stringToPDFString)(str1)).toEqual("");
|
146
|
+
const str2 = "\xFE\xFF";
|
147
|
+
expect((0, _util.stringToPDFString)(str2)).toEqual("");
|
148
|
+
const str3 = "\xFF\xFE";
|
149
|
+
expect((0, _util.stringToPDFString)(str3)).toEqual("");
|
304
150
|
});
|
305
151
|
});
|
306
|
-
describe(
|
307
|
-
it(
|
308
|
-
|
309
|
-
expect(
|
152
|
+
describe("removeNullCharacters", function () {
|
153
|
+
it("should not modify string without null characters", function () {
|
154
|
+
const str = "string without null chars";
|
155
|
+
expect((0, _util.removeNullCharacters)(str)).toEqual("string without null chars");
|
310
156
|
});
|
311
|
-
it(
|
312
|
-
|
313
|
-
expect(
|
157
|
+
it("should modify string with null characters", function () {
|
158
|
+
const str = "string\x00With\x00Null\x00Chars";
|
159
|
+
expect((0, _util.removeNullCharacters)(str)).toEqual("stringWithNullChars");
|
314
160
|
});
|
315
161
|
});
|
316
|
-
describe(
|
317
|
-
it(
|
318
|
-
|
319
|
-
|
320
|
-
var _loop = function _loop() {
|
321
|
-
var input = _arr[_i];
|
322
|
-
expect(function () {
|
323
|
-
(0, _util.toRomanNumerals)(input);
|
324
|
-
}).toThrow(new Error('The number should be a positive integer.'));
|
325
|
-
};
|
326
|
-
|
327
|
-
for (var _i = 0; _i < _arr.length; _i++) {
|
328
|
-
_loop();
|
329
|
-
}
|
162
|
+
describe("ReadableStream", function () {
|
163
|
+
it("should return an Object", function () {
|
164
|
+
const readable = new ReadableStream();
|
165
|
+
expect(typeof readable).toEqual("object");
|
330
166
|
});
|
331
|
-
it(
|
332
|
-
|
333
|
-
expect(
|
334
|
-
expect((0, _util.toRomanNumerals)(7)).toEqual('VII');
|
335
|
-
expect((0, _util.toRomanNumerals)(8)).toEqual('VIII');
|
336
|
-
expect((0, _util.toRomanNumerals)(10)).toEqual('X');
|
337
|
-
expect((0, _util.toRomanNumerals)(40)).toEqual('XL');
|
338
|
-
expect((0, _util.toRomanNumerals)(100)).toEqual('C');
|
339
|
-
expect((0, _util.toRomanNumerals)(500)).toEqual('D');
|
340
|
-
expect((0, _util.toRomanNumerals)(1000)).toEqual('M');
|
341
|
-
expect((0, _util.toRomanNumerals)(2019)).toEqual('MMXIX');
|
342
|
-
});
|
343
|
-
it('converts numbers to lowercase Roman numerals', function () {
|
344
|
-
expect((0, _util.toRomanNumerals)(1, true)).toEqual('i');
|
345
|
-
expect((0, _util.toRomanNumerals)(6, true)).toEqual('vi');
|
346
|
-
expect((0, _util.toRomanNumerals)(7, true)).toEqual('vii');
|
347
|
-
expect((0, _util.toRomanNumerals)(8, true)).toEqual('viii');
|
348
|
-
expect((0, _util.toRomanNumerals)(10, true)).toEqual('x');
|
349
|
-
expect((0, _util.toRomanNumerals)(40, true)).toEqual('xl');
|
350
|
-
expect((0, _util.toRomanNumerals)(100, true)).toEqual('c');
|
351
|
-
expect((0, _util.toRomanNumerals)(500, true)).toEqual('d');
|
352
|
-
expect((0, _util.toRomanNumerals)(1000, true)).toEqual('m');
|
353
|
-
expect((0, _util.toRomanNumerals)(2019, true)).toEqual('mmxix');
|
167
|
+
it("should have property getReader", function () {
|
168
|
+
const readable = new ReadableStream();
|
169
|
+
expect(typeof readable.getReader).toEqual("function");
|
354
170
|
});
|
355
171
|
});
|
356
|
-
describe(
|
357
|
-
it(
|
358
|
-
|
359
|
-
expect(
|
172
|
+
describe("URL", function () {
|
173
|
+
it("should return an Object", function () {
|
174
|
+
const url = new URL("https://example.com");
|
175
|
+
expect(typeof url).toEqual("object");
|
360
176
|
});
|
361
|
-
it(
|
362
|
-
|
363
|
-
expect(
|
177
|
+
it("should have property `href`", function () {
|
178
|
+
const url = new URL("https://example.com");
|
179
|
+
expect(typeof url.href).toEqual("string");
|
364
180
|
});
|
365
181
|
});
|
366
|
-
describe(
|
367
|
-
it(
|
368
|
-
expect((0, _util.isSameOrigin)(
|
369
|
-
expect((0, _util.isSameOrigin)(
|
182
|
+
describe("isSameOrigin", function () {
|
183
|
+
it("handles invalid base URLs", function () {
|
184
|
+
expect((0, _util.isSameOrigin)("/foo", "/bar")).toEqual(false);
|
185
|
+
expect((0, _util.isSameOrigin)("blob:foo", "/bar")).toEqual(false);
|
370
186
|
});
|
371
|
-
it(
|
372
|
-
expect((0, _util.isSameOrigin)(
|
373
|
-
expect((0, _util.isSameOrigin)(
|
187
|
+
it("correctly checks if the origin of both URLs matches", function () {
|
188
|
+
expect((0, _util.isSameOrigin)("https://www.mozilla.org/foo", "https://www.mozilla.org/bar")).toEqual(true);
|
189
|
+
expect((0, _util.isSameOrigin)("https://www.mozilla.org/foo", "https://www.example.com/bar")).toEqual(false);
|
374
190
|
});
|
375
191
|
});
|
376
|
-
describe(
|
377
|
-
it(
|
192
|
+
describe("createValidAbsoluteUrl", function () {
|
193
|
+
it("handles invalid URLs", function () {
|
378
194
|
expect((0, _util.createValidAbsoluteUrl)(undefined, undefined)).toEqual(null);
|
379
195
|
expect((0, _util.createValidAbsoluteUrl)(null, null)).toEqual(null);
|
380
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
381
|
-
});
|
382
|
-
it(
|
383
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
384
|
-
});
|
385
|
-
it(
|
386
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
387
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
388
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
389
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
390
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
391
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
392
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
393
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
394
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
395
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
396
|
-
});
|
397
|
-
});
|
398
|
-
describe(
|
399
|
-
it(
|
400
|
-
|
196
|
+
expect((0, _util.createValidAbsoluteUrl)("/foo", "/bar")).toEqual(null);
|
197
|
+
});
|
198
|
+
it("handles URLs that do not use a whitelisted protocol", function () {
|
199
|
+
expect((0, _util.createValidAbsoluteUrl)("magnet:?foo", null)).toEqual(null);
|
200
|
+
});
|
201
|
+
it("correctly creates a valid URL for whitelisted protocols", function () {
|
202
|
+
expect((0, _util.createValidAbsoluteUrl)("http://www.mozilla.org/foo", null)).toEqual(new URL("http://www.mozilla.org/foo"));
|
203
|
+
expect((0, _util.createValidAbsoluteUrl)("/foo", "http://www.mozilla.org")).toEqual(new URL("http://www.mozilla.org/foo"));
|
204
|
+
expect((0, _util.createValidAbsoluteUrl)("https://www.mozilla.org/foo", null)).toEqual(new URL("https://www.mozilla.org/foo"));
|
205
|
+
expect((0, _util.createValidAbsoluteUrl)("/foo", "https://www.mozilla.org")).toEqual(new URL("https://www.mozilla.org/foo"));
|
206
|
+
expect((0, _util.createValidAbsoluteUrl)("ftp://www.mozilla.org/foo", null)).toEqual(new URL("ftp://www.mozilla.org/foo"));
|
207
|
+
expect((0, _util.createValidAbsoluteUrl)("/foo", "ftp://www.mozilla.org")).toEqual(new URL("ftp://www.mozilla.org/foo"));
|
208
|
+
expect((0, _util.createValidAbsoluteUrl)("mailto:foo@bar.baz", null)).toEqual(new URL("mailto:foo@bar.baz"));
|
209
|
+
expect((0, _util.createValidAbsoluteUrl)("/foo", "mailto:foo@bar.baz")).toEqual(null);
|
210
|
+
expect((0, _util.createValidAbsoluteUrl)("tel:+0123456789", null)).toEqual(new URL("tel:+0123456789"));
|
211
|
+
expect((0, _util.createValidAbsoluteUrl)("/foo", "tel:0123456789")).toEqual(null);
|
212
|
+
});
|
213
|
+
});
|
214
|
+
describe("createPromiseCapability", function () {
|
215
|
+
it("should resolve with correct data", function (done) {
|
216
|
+
const promiseCapability = (0, _util.createPromiseCapability)();
|
401
217
|
expect(promiseCapability.settled).toEqual(false);
|
402
218
|
promiseCapability.resolve({
|
403
|
-
test:
|
219
|
+
test: "abc"
|
404
220
|
});
|
405
221
|
promiseCapability.promise.then(function (data) {
|
406
222
|
expect(promiseCapability.settled).toEqual(true);
|
407
223
|
expect(data).toEqual({
|
408
|
-
test:
|
224
|
+
test: "abc"
|
409
225
|
});
|
410
226
|
done();
|
411
227
|
}, done.fail);
|
412
228
|
});
|
413
|
-
it(
|
414
|
-
|
229
|
+
it("should reject with correct reason", function (done) {
|
230
|
+
const promiseCapability = (0, _util.createPromiseCapability)();
|
415
231
|
expect(promiseCapability.settled).toEqual(false);
|
416
|
-
promiseCapability.reject(new Error(
|
232
|
+
promiseCapability.reject(new Error("reason"));
|
417
233
|
promiseCapability.promise.then(done.fail, function (reason) {
|
418
234
|
expect(promiseCapability.settled).toEqual(true);
|
419
235
|
expect(reason instanceof Error).toEqual(true);
|
420
|
-
expect(reason.message).toEqual(
|
236
|
+
expect(reason.message).toEqual("reason");
|
421
237
|
done();
|
422
238
|
});
|
423
239
|
});
|