pdfjs-dist 2.3.200 → 2.4.456
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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +6499 -17971
- 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 +19303 -29896
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -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 +57878 -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 +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1333 -4839
- 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 +683 -1066
- 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 +196 -193
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +441 -569
- package/lib/core/cmap.js +220 -279
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +59 -80
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +564 -673
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +983 -889
- package/lib/core/font_renderer.js +128 -171
- package/lib/core/fonts.js +451 -400
- package/lib/core/function.js +289 -285
- package/lib/core/glyphlist.js +4527 -4527
- package/lib/core/image.js +138 -117
- package/lib/core/image_utils.js +46 -63
- package/lib/core/jbig2.js +324 -332
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +133 -24
- package/lib/core/jpg.js +238 -210
- package/lib/core/jpx.js +158 -157
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2928 -2928
- package/lib/core/murmurhash3.js +87 -102
- package/lib/core/obj.js +1111 -1302
- package/lib/core/operator_list.js +55 -42
- package/lib/core/parser.js +956 -987
- package/lib/core/pattern.js +69 -69
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +45 -77
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +83 -77
- package/lib/core/type1_parser.js +78 -68
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +148 -196
- package/lib/core/worker_stream.js +101 -210
- package/lib/display/annotation_layer.js +733 -1155
- package/lib/display/api.js +1539 -1928
- package/lib/display/api_compatibility.js +10 -8
- package/lib/display/canvas.js +159 -158
- package/lib/display/content_disposition.js +36 -55
- package/lib/display/display_utils.js +298 -551
- package/lib/display/fetch_stream.js +181 -305
- package/lib/display/font_loader.js +273 -416
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +376 -511
- package/lib/display/network_utils.js +20 -19
- package/lib/display/node_stream.js +276 -460
- package/lib/display/pattern_helper.js +76 -44
- package/lib/display/svg.js +1137 -1405
- package/lib/display/text_layer.js +75 -82
- package/lib/display/transport_stream.js +236 -374
- 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 +37 -37
- package/lib/pdf.js +22 -21
- package/lib/pdf.worker.js +5 -5
- package/lib/shared/compatibility.js +2 -251
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +222 -194
- package/lib/shared/util.js +269 -405
- package/lib/test/unit/annotation_spec.js +1089 -1014
- package/lib/test/unit/api_spec.js +617 -544
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +63 -62
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +84 -86
- package/lib/test/unit/colorspace_spec.js +154 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +22 -24
- package/lib/test/unit/display_svg_spec.js +35 -36
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +16 -16
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +81 -95
- package/lib/test/unit/fetch_stream_spec.js +30 -30
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +48 -32
- package/lib/test/unit/message_handler_spec.js +172 -162
- 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 +12 -12
- package/lib/test/unit/network_utils_spec.js +152 -152
- package/lib/test/unit/node_stream_spec.js +74 -90
- package/lib/test/unit/parser_spec.js +107 -113
- 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 +117 -115
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +119 -285
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +41 -41
- package/lib/test/unit/ui_utils_spec.js +318 -426
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +122 -143
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1166 -1196
- package/lib/web/app_options.js +61 -77
- package/lib/web/base_viewer.js +804 -850
- package/lib/web/chromecom.js +164 -249
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +38 -57
- package/lib/web/firefox_print_service.js +35 -30
- package/lib/web/firefoxcom.js +175 -374
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +30 -30
- package/lib/web/interfaces.js +80 -258
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +105 -130
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +227 -376
- package/lib/web/pdf_find_bar.js +137 -171
- package/lib/web/pdf_find_controller.js +492 -549
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +395 -406
- package/lib/web/pdf_link_service.js +302 -349
- package/lib/web/pdf_outline_viewer.js +148 -209
- package/lib/web/pdf_page_view.js +449 -507
- package/lib/web/pdf_presentation_mode.js +304 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +264 -304
- 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 +66 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -317
- package/lib/web/toolbar.js +216 -211
- package/lib/web/ui_utils.js +303 -404
- package/lib/web/view_history.js +49 -222
- package/lib/web/viewer_compatibility.js +7 -5
- package/package.json +2 -9
- package/web/pdf_viewer.css +25 -18
- package/web/pdf_viewer.js +3481 -4764
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/lib/shared/streams_polyfill.js +0 -43
@@ -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,22 +21,22 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var _glyphlist = require("../../core/glyphlist");
|
24
|
+
var _glyphlist = require("../../core/glyphlist.js");
|
25
25
|
|
26
|
-
var _unicode = require("../../core/unicode");
|
26
|
+
var _unicode = require("../../core/unicode.js");
|
27
27
|
|
28
|
-
describe(
|
29
|
-
describe(
|
30
|
-
it(
|
28
|
+
describe("unicode", function () {
|
29
|
+
describe("mapSpecialUnicodeValues", function () {
|
30
|
+
it("should not re-map normal Unicode values", function () {
|
31
31
|
expect((0, _unicode.mapSpecialUnicodeValues)(0x0041)).toEqual(0x0041);
|
32
|
-
expect((0, _unicode.mapSpecialUnicodeValues)(
|
32
|
+
expect((0, _unicode.mapSpecialUnicodeValues)(0xfb01)).toEqual(0xfb01);
|
33
33
|
});
|
34
|
-
it(
|
35
|
-
expect((0, _unicode.mapSpecialUnicodeValues)(
|
36
|
-
expect((0, _unicode.mapSpecialUnicodeValues)(
|
34
|
+
it("should re-map special Unicode values", function () {
|
35
|
+
expect((0, _unicode.mapSpecialUnicodeValues)(0xf8e9)).toEqual(0x00a9);
|
36
|
+
expect((0, _unicode.mapSpecialUnicodeValues)(0xffff)).toEqual(0);
|
37
37
|
});
|
38
38
|
});
|
39
|
-
describe(
|
39
|
+
describe("getUnicodeForGlyph", function () {
|
40
40
|
var standardMap, dingbatsMap;
|
41
41
|
beforeAll(function (done) {
|
42
42
|
standardMap = (0, _glyphlist.getGlyphsUnicode)();
|
@@ -46,31 +46,31 @@ describe('unicode', function () {
|
|
46
46
|
afterAll(function () {
|
47
47
|
standardMap = dingbatsMap = null;
|
48
48
|
});
|
49
|
-
it(
|
50
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
51
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
49
|
+
it("should get Unicode values for valid glyph names", function () {
|
50
|
+
expect((0, _unicode.getUnicodeForGlyph)("A", standardMap)).toEqual(0x0041);
|
51
|
+
expect((0, _unicode.getUnicodeForGlyph)("a1", dingbatsMap)).toEqual(0x2701);
|
52
52
|
});
|
53
|
-
it(
|
54
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
55
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
56
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
57
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
53
|
+
it("should recover Unicode values from uniXXXX/uXXXX{XX} glyph names", function () {
|
54
|
+
expect((0, _unicode.getUnicodeForGlyph)("uni0041", standardMap)).toEqual(0x0041);
|
55
|
+
expect((0, _unicode.getUnicodeForGlyph)("u0041", standardMap)).toEqual(0x0041);
|
56
|
+
expect((0, _unicode.getUnicodeForGlyph)("uni2701", dingbatsMap)).toEqual(0x2701);
|
57
|
+
expect((0, _unicode.getUnicodeForGlyph)("u2701", dingbatsMap)).toEqual(0x2701);
|
58
58
|
});
|
59
|
-
it(
|
60
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
61
|
-
expect((0, _unicode.getUnicodeForGlyph)(
|
59
|
+
it("should not get Unicode values for invalid glyph names", function () {
|
60
|
+
expect((0, _unicode.getUnicodeForGlyph)("Qwerty", standardMap)).toEqual(-1);
|
61
|
+
expect((0, _unicode.getUnicodeForGlyph)("Qwerty", dingbatsMap)).toEqual(-1);
|
62
62
|
});
|
63
63
|
});
|
64
|
-
describe(
|
65
|
-
it(
|
64
|
+
describe("getUnicodeRangeFor", function () {
|
65
|
+
it("should get correct Unicode range", function () {
|
66
66
|
expect((0, _unicode.getUnicodeRangeFor)(0x0041)).toEqual(0);
|
67
|
-
expect((0, _unicode.getUnicodeRangeFor)(
|
67
|
+
expect((0, _unicode.getUnicodeRangeFor)(0xfb01)).toEqual(62);
|
68
68
|
});
|
69
|
-
it(
|
70
|
-
expect((0, _unicode.getUnicodeRangeFor)(
|
69
|
+
it("should not get a Unicode range", function () {
|
70
|
+
expect((0, _unicode.getUnicodeRangeFor)(0x05ff)).toEqual(-1);
|
71
71
|
});
|
72
72
|
});
|
73
|
-
describe(
|
73
|
+
describe("getNormalizedUnicodes", function () {
|
74
74
|
var NormalizedUnicodes;
|
75
75
|
beforeAll(function (done) {
|
76
76
|
NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
|
@@ -79,23 +79,23 @@ describe('unicode', function () {
|
|
79
79
|
afterAll(function () {
|
80
80
|
NormalizedUnicodes = null;
|
81
81
|
});
|
82
|
-
it(
|
83
|
-
expect(NormalizedUnicodes["\uFB01"]).toEqual(
|
82
|
+
it("should get normalized Unicode values for ligatures", function () {
|
83
|
+
expect(NormalizedUnicodes["\uFB01"]).toEqual("fi");
|
84
84
|
expect(NormalizedUnicodes["\u0675"]).toEqual("\u0627\u0674");
|
85
85
|
});
|
86
|
-
it(
|
87
|
-
expect(NormalizedUnicodes[
|
86
|
+
it("should not normalize standard characters", function () {
|
87
|
+
expect(NormalizedUnicodes["A"]).toEqual(undefined);
|
88
88
|
});
|
89
89
|
});
|
90
|
-
describe(
|
90
|
+
describe("reverseIfRtl", function () {
|
91
91
|
var NormalizedUnicodes;
|
92
92
|
|
93
|
-
function getGlyphUnicode(
|
94
|
-
if (NormalizedUnicodes[
|
95
|
-
return NormalizedUnicodes[
|
93
|
+
function getGlyphUnicode(char) {
|
94
|
+
if (NormalizedUnicodes[char] !== undefined) {
|
95
|
+
return NormalizedUnicodes[char];
|
96
96
|
}
|
97
97
|
|
98
|
-
return
|
98
|
+
return char;
|
99
99
|
}
|
100
100
|
|
101
101
|
beforeAll(function (done) {
|
@@ -105,13 +105,13 @@ describe('unicode', function () {
|
|
105
105
|
afterAll(function () {
|
106
106
|
NormalizedUnicodes = null;
|
107
107
|
});
|
108
|
-
it(
|
109
|
-
var A = getGlyphUnicode(
|
110
|
-
expect((0, _unicode.reverseIfRtl)(A)).toEqual(
|
108
|
+
it("should not reverse LTR characters", function () {
|
109
|
+
var A = getGlyphUnicode("A");
|
110
|
+
expect((0, _unicode.reverseIfRtl)(A)).toEqual("A");
|
111
111
|
var fi = getGlyphUnicode("\uFB01");
|
112
|
-
expect((0, _unicode.reverseIfRtl)(fi)).toEqual(
|
112
|
+
expect((0, _unicode.reverseIfRtl)(fi)).toEqual("fi");
|
113
113
|
});
|
114
|
-
it(
|
114
|
+
it("should reverse RTL characters", function () {
|
115
115
|
var heAlef = getGlyphUnicode("\u05D0");
|
116
116
|
expect((0, _unicode.reverseIfRtl)(heAlef)).toEqual("\u05D0");
|
117
117
|
var arAlef = getGlyphUnicode("\u0675");
|
@@ -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,240 +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
|
-
describe('bytesToString', function () {
|
30
|
-
it('handles non-array arguments', function () {
|
26
|
+
describe("util", function () {
|
27
|
+
describe("bytesToString", function () {
|
28
|
+
it("handles non-array arguments", function () {
|
31
29
|
expect(function () {
|
32
30
|
(0, _util.bytesToString)(null);
|
33
|
-
}).toThrow(new Error(
|
31
|
+
}).toThrow(new Error("Invalid argument for bytesToString"));
|
34
32
|
});
|
35
|
-
it(
|
36
|
-
expect((0, _util.bytesToString)(new Uint8Array([]))).toEqual(
|
37
|
-
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");
|
38
36
|
});
|
39
|
-
it(
|
40
|
-
|
41
|
-
|
37
|
+
it("handles array arguments with a length exceeding the maximum", function () {
|
38
|
+
const length = 10000;
|
39
|
+
const bytes = new Uint8Array(length);
|
42
40
|
|
43
|
-
for (
|
44
|
-
bytes[i] =
|
41
|
+
for (let i = 0; i < length; i++) {
|
42
|
+
bytes[i] = "a".charCodeAt(0);
|
45
43
|
}
|
46
44
|
|
47
|
-
|
45
|
+
const string = Array(length + 1).join("a");
|
48
46
|
expect((0, _util.bytesToString)(bytes)).toEqual(string);
|
49
47
|
});
|
50
48
|
});
|
51
|
-
describe(
|
52
|
-
it(
|
49
|
+
describe("isArrayBuffer", function () {
|
50
|
+
it("handles array buffer values", function () {
|
53
51
|
expect((0, _util.isArrayBuffer)(new ArrayBuffer(0))).toEqual(true);
|
54
52
|
expect((0, _util.isArrayBuffer)(new Uint8Array(0))).toEqual(true);
|
55
53
|
});
|
56
|
-
it(
|
57
|
-
expect((0, _util.isArrayBuffer)(
|
54
|
+
it("handles non-array buffer values", function () {
|
55
|
+
expect((0, _util.isArrayBuffer)("true")).toEqual(false);
|
58
56
|
expect((0, _util.isArrayBuffer)(1)).toEqual(false);
|
59
57
|
expect((0, _util.isArrayBuffer)(null)).toEqual(false);
|
60
58
|
expect((0, _util.isArrayBuffer)(undefined)).toEqual(false);
|
61
59
|
});
|
62
60
|
});
|
63
|
-
describe(
|
64
|
-
it(
|
61
|
+
describe("isBool", function () {
|
62
|
+
it("handles boolean values", function () {
|
65
63
|
expect((0, _util.isBool)(true)).toEqual(true);
|
66
64
|
expect((0, _util.isBool)(false)).toEqual(true);
|
67
65
|
});
|
68
|
-
it(
|
69
|
-
expect((0, _util.isBool)(
|
70
|
-
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);
|
71
69
|
expect((0, _util.isBool)(1)).toEqual(false);
|
72
70
|
expect((0, _util.isBool)(0)).toEqual(false);
|
73
71
|
expect((0, _util.isBool)(null)).toEqual(false);
|
74
72
|
expect((0, _util.isBool)(undefined)).toEqual(false);
|
75
73
|
});
|
76
74
|
});
|
77
|
-
describe(
|
78
|
-
it(
|
75
|
+
describe("isEmptyObj", function () {
|
76
|
+
it("handles empty objects", function () {
|
79
77
|
expect((0, _util.isEmptyObj)({})).toEqual(true);
|
80
78
|
});
|
81
|
-
it(
|
79
|
+
it("handles non-empty objects", function () {
|
82
80
|
expect((0, _util.isEmptyObj)({
|
83
|
-
foo:
|
81
|
+
foo: "bar"
|
84
82
|
})).toEqual(false);
|
85
83
|
});
|
86
84
|
});
|
87
|
-
describe(
|
88
|
-
it(
|
85
|
+
describe("isNum", function () {
|
86
|
+
it("handles numeric values", function () {
|
89
87
|
expect((0, _util.isNum)(1)).toEqual(true);
|
90
88
|
expect((0, _util.isNum)(0)).toEqual(true);
|
91
89
|
expect((0, _util.isNum)(-1)).toEqual(true);
|
92
90
|
expect((0, _util.isNum)(1000000000000000000)).toEqual(true);
|
93
91
|
expect((0, _util.isNum)(12.34)).toEqual(true);
|
94
92
|
});
|
95
|
-
it(
|
96
|
-
expect((0, _util.isNum)(
|
93
|
+
it("handles non-numeric values", function () {
|
94
|
+
expect((0, _util.isNum)("true")).toEqual(false);
|
97
95
|
expect((0, _util.isNum)(true)).toEqual(false);
|
98
96
|
expect((0, _util.isNum)(null)).toEqual(false);
|
99
97
|
expect((0, _util.isNum)(undefined)).toEqual(false);
|
100
98
|
});
|
101
99
|
});
|
102
|
-
describe(
|
103
|
-
it(
|
104
|
-
expect((0, _util.
|
105
|
-
expect((0, _util.
|
106
|
-
expect((0, _util.isSpace)(0x0D)).toEqual(true);
|
107
|
-
expect((0, _util.isSpace)(0x0A)).toEqual(true);
|
108
|
-
});
|
109
|
-
it('handles non-space characters', function () {
|
110
|
-
expect((0, _util.isSpace)(0x0B)).toEqual(false);
|
111
|
-
expect((0, _util.isSpace)(null)).toEqual(false);
|
112
|
-
expect((0, _util.isSpace)(undefined)).toEqual(false);
|
113
|
-
});
|
114
|
-
});
|
115
|
-
describe('isString', function () {
|
116
|
-
it('handles string values', function () {
|
117
|
-
expect((0, _util.isString)('foo')).toEqual(true);
|
118
|
-
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);
|
119
104
|
});
|
120
|
-
it(
|
105
|
+
it("handles non-string values", function () {
|
121
106
|
expect((0, _util.isString)(true)).toEqual(false);
|
122
107
|
expect((0, _util.isString)(1)).toEqual(false);
|
123
108
|
expect((0, _util.isString)(null)).toEqual(false);
|
124
109
|
expect((0, _util.isString)(undefined)).toEqual(false);
|
125
110
|
});
|
126
111
|
});
|
127
|
-
describe(
|
128
|
-
it(
|
129
|
-
expect((0, _util.
|
130
|
-
expect((0, _util.
|
131
|
-
|
132
|
-
it('handles values larger than zero', function () {
|
133
|
-
expect((0, _util.log2)(1)).toEqual(0);
|
134
|
-
expect((0, _util.log2)(2)).toEqual(1);
|
135
|
-
expect((0, _util.log2)(3)).toEqual(2);
|
136
|
-
expect((0, _util.log2)(3.14)).toEqual(2);
|
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");
|
137
117
|
});
|
138
118
|
});
|
139
|
-
describe(
|
140
|
-
it(
|
141
|
-
expect((0, _util.string32)(0x74727565)).toEqual('true');
|
142
|
-
expect((0, _util.string32)(0x74797031)).toEqual('typ1');
|
143
|
-
expect((0, _util.string32)(0x4F54544F)).toEqual('OTTO');
|
144
|
-
});
|
145
|
-
});
|
146
|
-
describe('stringToBytes', function () {
|
147
|
-
it('handles non-string arguments', function () {
|
119
|
+
describe("stringToBytes", function () {
|
120
|
+
it("handles non-string arguments", function () {
|
148
121
|
expect(function () {
|
149
122
|
(0, _util.stringToBytes)(null);
|
150
|
-
}).toThrow(new Error(
|
123
|
+
}).toThrow(new Error("Invalid argument for stringToBytes"));
|
151
124
|
});
|
152
|
-
it(
|
153
|
-
expect((0, _util.stringToBytes)(
|
154
|
-
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]));
|
155
128
|
});
|
156
129
|
});
|
157
|
-
describe(
|
158
|
-
it(
|
159
|
-
|
130
|
+
describe("stringToPDFString", function () {
|
131
|
+
it("handles ISO Latin 1 strings", function () {
|
132
|
+
const str = "\x8Dstring\x8E";
|
160
133
|
expect((0, _util.stringToPDFString)(str)).toEqual("\u201Cstring\u201D");
|
161
134
|
});
|
162
|
-
it(
|
163
|
-
|
164
|
-
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");
|
138
|
+
});
|
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");
|
165
142
|
});
|
166
|
-
it(
|
167
|
-
|
168
|
-
expect((0, _util.stringToPDFString)(str1)).toEqual(
|
169
|
-
|
170
|
-
expect((0, _util.stringToPDFString)(str2)).toEqual(
|
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("");
|
171
150
|
});
|
172
151
|
});
|
173
|
-
describe(
|
174
|
-
it(
|
175
|
-
|
176
|
-
expect((0, _util.removeNullCharacters)(str)).toEqual(
|
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");
|
177
156
|
});
|
178
|
-
it(
|
179
|
-
|
180
|
-
expect((0, _util.removeNullCharacters)(str)).toEqual(
|
157
|
+
it("should modify string with null characters", function () {
|
158
|
+
const str = "string\x00With\x00Null\x00Chars";
|
159
|
+
expect((0, _util.removeNullCharacters)(str)).toEqual("stringWithNullChars");
|
181
160
|
});
|
182
161
|
});
|
183
|
-
describe(
|
184
|
-
it(
|
185
|
-
|
186
|
-
expect(
|
162
|
+
describe("ReadableStream", function () {
|
163
|
+
it("should return an Object", function () {
|
164
|
+
const readable = new ReadableStream();
|
165
|
+
expect(typeof readable).toEqual("object");
|
187
166
|
});
|
188
|
-
it(
|
189
|
-
|
190
|
-
expect(
|
167
|
+
it("should have property getReader", function () {
|
168
|
+
const readable = new ReadableStream();
|
169
|
+
expect(typeof readable.getReader).toEqual("function");
|
191
170
|
});
|
192
171
|
});
|
193
|
-
describe(
|
194
|
-
it(
|
195
|
-
|
196
|
-
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");
|
197
176
|
});
|
198
|
-
it(
|
199
|
-
|
200
|
-
expect(
|
177
|
+
it("should have property `href`", function () {
|
178
|
+
const url = new URL("https://example.com");
|
179
|
+
expect(typeof url.href).toEqual("string");
|
201
180
|
});
|
202
181
|
});
|
203
|
-
describe(
|
204
|
-
it(
|
205
|
-
expect((0, _util.isSameOrigin)(
|
206
|
-
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);
|
207
186
|
});
|
208
|
-
it(
|
209
|
-
expect((0, _util.isSameOrigin)(
|
210
|
-
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);
|
211
190
|
});
|
212
191
|
});
|
213
|
-
describe(
|
214
|
-
it(
|
192
|
+
describe("createValidAbsoluteUrl", function () {
|
193
|
+
it("handles invalid URLs", function () {
|
215
194
|
expect((0, _util.createValidAbsoluteUrl)(undefined, undefined)).toEqual(null);
|
216
195
|
expect((0, _util.createValidAbsoluteUrl)(null, null)).toEqual(null);
|
217
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
218
|
-
});
|
219
|
-
it(
|
220
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
221
|
-
});
|
222
|
-
it(
|
223
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
224
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
225
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
226
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
227
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
228
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
229
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
230
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
231
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
232
|
-
expect((0, _util.createValidAbsoluteUrl)(
|
233
|
-
});
|
234
|
-
});
|
235
|
-
describe(
|
236
|
-
it(
|
237
|
-
|
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)();
|
238
217
|
expect(promiseCapability.settled).toEqual(false);
|
239
218
|
promiseCapability.resolve({
|
240
|
-
test:
|
219
|
+
test: "abc"
|
241
220
|
});
|
242
221
|
promiseCapability.promise.then(function (data) {
|
243
222
|
expect(promiseCapability.settled).toEqual(true);
|
244
223
|
expect(data).toEqual({
|
245
|
-
test:
|
224
|
+
test: "abc"
|
246
225
|
});
|
247
226
|
done();
|
248
227
|
}, done.fail);
|
249
228
|
});
|
250
|
-
it(
|
251
|
-
|
229
|
+
it("should reject with correct reason", function (done) {
|
230
|
+
const promiseCapability = (0, _util.createPromiseCapability)();
|
252
231
|
expect(promiseCapability.settled).toEqual(false);
|
253
|
-
promiseCapability.reject(new Error(
|
232
|
+
promiseCapability.reject(new Error("reason"));
|
254
233
|
promiseCapability.promise.then(done.fail, function (reason) {
|
255
234
|
expect(promiseCapability.settled).toEqual(true);
|
256
235
|
expect(reason instanceof Error).toEqual(true);
|
257
|
-
expect(reason.message).toEqual(
|
236
|
+
expect(reason.message).toEqual("reason");
|
258
237
|
done();
|
259
238
|
});
|
260
239
|
});
|