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.

Files changed (191) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8382 -18492
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +20417 -29816
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25688 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +58239 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +403 -0
  29. package/es5/web/pdf_viewer.js +7742 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +1475 -4897
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +750 -899
  36. package/lib/core/arithmetic_decoder.js +81 -97
  37. package/lib/core/bidi.js +54 -46
  38. package/lib/core/ccitt.js +88 -81
  39. package/lib/core/ccitt_stream.js +15 -14
  40. package/lib/core/cff_parser.js +235 -183
  41. package/lib/core/charsets.js +4 -4
  42. package/lib/core/chunked_stream.js +447 -542
  43. package/lib/core/cmap.js +222 -264
  44. package/lib/core/colorspace.js +699 -863
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +379 -437
  47. package/lib/core/document.js +573 -660
  48. package/lib/core/encodings.js +15 -15
  49. package/lib/core/evaluator.js +1103 -868
  50. package/lib/core/font_renderer.js +135 -178
  51. package/lib/core/fonts.js +570 -491
  52. package/lib/core/function.js +291 -288
  53. package/lib/core/glyphlist.js +4527 -4526
  54. package/lib/core/image.js +145 -149
  55. package/lib/core/image_utils.js +170 -0
  56. package/lib/core/jbig2.js +325 -316
  57. package/lib/core/jbig2_stream.js +18 -17
  58. package/lib/core/jpeg_stream.js +21 -26
  59. package/lib/core/jpg.js +284 -232
  60. package/lib/core/jpx.js +161 -143
  61. package/lib/core/jpx_stream.js +28 -28
  62. package/lib/core/metrics.js +2929 -2929
  63. package/lib/core/murmurhash3.js +90 -101
  64. package/lib/core/obj.js +1183 -1157
  65. package/lib/core/operator_list.js +99 -67
  66. package/lib/core/parser.js +972 -911
  67. package/lib/core/pattern.js +87 -70
  68. package/lib/core/pdf_manager.js +150 -315
  69. package/lib/core/primitives.js +83 -56
  70. package/lib/core/ps_parser.js +175 -214
  71. package/lib/core/standard_fonts.js +237 -236
  72. package/lib/core/stream.js +94 -74
  73. package/lib/core/type1_parser.js +87 -69
  74. package/lib/core/unicode.js +1654 -1654
  75. package/lib/core/worker.js +193 -390
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +741 -972
  78. package/lib/display/api.js +1500 -1791
  79. package/lib/display/api_compatibility.js +12 -17
  80. package/lib/display/canvas.js +165 -165
  81. package/lib/display/content_disposition.js +40 -59
  82. package/lib/display/display_utils.js +515 -0
  83. package/lib/display/fetch_stream.js +183 -298
  84. package/lib/display/font_loader.js +273 -413
  85. package/lib/display/metadata.js +86 -98
  86. package/lib/display/network.js +266 -359
  87. package/lib/display/network_utils.js +25 -18
  88. package/lib/display/node_stream.js +285 -458
  89. package/lib/display/pattern_helper.js +113 -65
  90. package/lib/display/svg.js +1166 -901
  91. package/lib/display/text_layer.js +156 -132
  92. package/lib/display/transport_stream.js +262 -278
  93. package/lib/display/webgl.js +70 -83
  94. package/lib/display/worker_options.js +3 -3
  95. package/lib/display/xml_parser.js +303 -392
  96. package/lib/examples/node/domstubs.js +40 -37
  97. package/lib/pdf.js +226 -59
  98. package/lib/pdf.worker.js +14 -6
  99. package/lib/shared/compatibility.js +3 -246
  100. package/lib/shared/is_node.js +7 -6
  101. package/lib/shared/message_handler.js +327 -332
  102. package/lib/shared/util.js +266 -416
  103. package/lib/test/unit/annotation_spec.js +1555 -701
  104. package/lib/test/unit/api_spec.js +802 -604
  105. package/lib/test/unit/bidi_spec.js +7 -7
  106. package/lib/test/unit/cff_parser_spec.js +84 -69
  107. package/lib/test/unit/clitests_helper.js +7 -9
  108. package/lib/test/unit/cmap_spec.js +74 -76
  109. package/lib/test/unit/colorspace_spec.js +166 -161
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +181 -181
  112. package/lib/test/unit/custom_spec.js +20 -22
  113. package/lib/test/unit/display_svg_spec.js +34 -39
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +16 -21
  116. package/lib/test/unit/encodings_spec.js +12 -34
  117. package/lib/test/unit/evaluator_spec.js +83 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +206 -204
  120. package/lib/test/unit/jasmine-boot.js +46 -30
  121. package/lib/test/unit/message_handler_spec.js +173 -159
  122. package/lib/test/unit/metadata_spec.js +69 -69
  123. package/lib/test/unit/murmurhash3_spec.js +12 -12
  124. package/lib/test/unit/network_spec.js +13 -61
  125. package/lib/test/unit/network_utils_spec.js +183 -119
  126. package/lib/test/unit/node_stream_spec.js +78 -92
  127. package/lib/test/unit/parser_spec.js +172 -114
  128. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  129. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  130. package/lib/test/unit/pdf_history_spec.js +32 -32
  131. package/lib/test/unit/primitives_spec.js +140 -125
  132. package/lib/test/unit/stream_spec.js +16 -14
  133. package/lib/test/unit/test_utils.js +131 -143
  134. package/lib/test/unit/testreporter.js +19 -19
  135. package/lib/test/unit/type1_parser_spec.js +42 -42
  136. package/lib/test/unit/ui_utils_spec.js +297 -459
  137. package/lib/test/unit/unicode_spec.js +38 -38
  138. package/lib/test/unit/util_spec.js +121 -305
  139. package/lib/web/annotation_layer_builder.js +66 -103
  140. package/lib/web/app.js +1328 -1214
  141. package/lib/web/app_options.js +105 -107
  142. package/lib/web/base_viewer.js +824 -838
  143. package/lib/web/chromecom.js +165 -252
  144. package/lib/web/debugger.js +149 -205
  145. package/lib/web/download_manager.js +39 -55
  146. package/lib/web/firefox_print_service.js +37 -27
  147. package/lib/web/firefoxcom.js +212 -363
  148. package/lib/web/genericcom.js +26 -108
  149. package/lib/web/genericl10n.js +24 -153
  150. package/lib/web/grab_to_pan.js +32 -30
  151. package/lib/web/interfaces.js +80 -254
  152. package/lib/web/overlay_manager.js +70 -246
  153. package/lib/web/password_prompt.js +38 -64
  154. package/lib/web/pdf_attachment_viewer.js +113 -131
  155. package/lib/web/pdf_cursor_tools.js +75 -102
  156. package/lib/web/pdf_document_properties.js +221 -306
  157. package/lib/web/pdf_find_bar.js +136 -170
  158. package/lib/web/pdf_find_controller.js +491 -548
  159. package/lib/web/pdf_find_utils.js +13 -13
  160. package/lib/web/pdf_history.js +397 -406
  161. package/lib/web/pdf_link_service.js +304 -348
  162. package/lib/web/pdf_outline_viewer.js +140 -175
  163. package/lib/web/pdf_page_view.js +452 -523
  164. package/lib/web/pdf_presentation_mode.js +308 -357
  165. package/lib/web/pdf_print_service.js +90 -104
  166. package/lib/web/pdf_rendering_queue.js +84 -108
  167. package/lib/web/pdf_sidebar.js +276 -306
  168. package/lib/web/pdf_sidebar_resizer.js +92 -119
  169. package/lib/web/pdf_single_page_viewer.js +77 -126
  170. package/lib/web/pdf_thumbnail_view.js +276 -297
  171. package/lib/web/pdf_thumbnail_viewer.js +186 -206
  172. package/lib/web/pdf_viewer.component.js +20 -21
  173. package/lib/web/pdf_viewer.js +55 -115
  174. package/lib/web/preferences.js +82 -286
  175. package/lib/web/secondary_toolbar.js +164 -196
  176. package/lib/web/text_layer_builder.js +282 -339
  177. package/lib/web/toolbar.js +217 -210
  178. package/lib/web/ui_utils.js +267 -420
  179. package/lib/web/view_history.js +52 -226
  180. package/lib/web/viewer_compatibility.js +21 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +35 -25
  183. package/web/pdf_viewer.js +3489 -4855
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -494
  189. package/lib/shared/streams_polyfill.js +0 -43
  190. package/lib/shared/url_polyfill.js +0 -56
  191. 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 2018 Mozilla Foundation
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,125 +21,183 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _parser = require("../../core/parser");
24
+ var _parser = require("../../core/parser.js");
25
25
 
26
- var _util = require("../../shared/util");
26
+ var _util = require("../../shared/util.js");
27
27
 
28
- var _primitives = require("../../core/primitives");
28
+ var _primitives = require("../../core/primitives.js");
29
29
 
30
- var _stream = require("../../core/stream");
30
+ var _stream = require("../../core/stream.js");
31
31
 
32
- describe('parser', function () {
33
- describe('Lexer', function () {
34
- it('should stop parsing numbers at the end of stream', function () {
35
- var input = new _stream.StringStream('11.234');
36
- var lexer = new _parser.Lexer(input);
37
- var result = lexer.getNumber();
38
- expect(result).toEqual(11.234);
32
+ describe("parser", function () {
33
+ describe("Parser", function () {
34
+ describe("inlineStreamSkipEI", function () {
35
+ it("should skip over the EI marker if it is found", function () {
36
+ const string = "q 1 0 0 1 0 0 cm BI /W 10 /H 10 /BPC 1 " + "/F /A85 ID abc123~> EI Q";
37
+ const input = new _stream.StringStream(string);
38
+ const parser = new _parser.Parser({
39
+ lexer: new _parser.Lexer(input),
40
+ xref: null,
41
+ allowStreams: true
42
+ });
43
+ parser.inlineStreamSkipEI(input);
44
+ expect(input.pos).toEqual(string.indexOf("Q"));
45
+ expect(input.peekByte()).toEqual(0x51);
46
+ });
47
+ it("should skip to the end of stream if the EI marker is not found", function () {
48
+ const string = "q 1 0 0 1 0 0 cm BI /W 10 /H 10 /BPC 1 /F /A85 ID abc123~> Q";
49
+ const input = new _stream.StringStream(string);
50
+ const parser = new _parser.Parser({
51
+ lexer: new _parser.Lexer(input),
52
+ xref: null,
53
+ allowStreams: true
54
+ });
55
+ parser.inlineStreamSkipEI(input);
56
+ expect(input.pos).toEqual(string.length);
57
+ expect(input.peekByte()).toEqual(-1);
58
+ });
39
59
  });
40
- it('should parse PostScript numbers', function () {
41
- var numbers = ['-.002', '34.5', '-3.62', '123.6e10', '1E-5', '-1.', '0.0', '123', '-98', '43445', '0', '+17'];
42
-
43
- for (var i = 0, ii = numbers.length; i < ii; i++) {
44
- var num = numbers[i];
45
- var input = new _stream.StringStream(num);
46
- var lexer = new _parser.Lexer(input);
47
- var result = lexer.getNumber();
48
- expect(result).toEqual(parseFloat(num));
49
- }
50
- });
51
- it('should ignore double negative before number', function () {
52
- var input = new _stream.StringStream('--205.88');
53
- var lexer = new _parser.Lexer(input);
54
- var result = lexer.getNumber();
55
- expect(result).toEqual(-205.88);
56
- });
57
- it('should ignore minus signs in the middle of number', function () {
58
- var input = new _stream.StringStream('205--.88');
59
- var lexer = new _parser.Lexer(input);
60
- var result = lexer.getNumber();
61
- expect(result).toEqual(205.88);
60
+ });
61
+ describe("Lexer", function () {
62
+ describe("nextChar", function () {
63
+ it("should return and set -1 when the end of the stream is reached", function () {
64
+ const input = new _stream.StringStream("");
65
+ const lexer = new _parser.Lexer(input);
66
+ expect(lexer.nextChar()).toEqual(-1);
67
+ expect(lexer.currentChar).toEqual(-1);
68
+ });
69
+ it("should return and set the character after the current position", function () {
70
+ const input = new _stream.StringStream("123");
71
+ const lexer = new _parser.Lexer(input);
72
+ expect(lexer.nextChar()).toEqual(0x32);
73
+ expect(lexer.currentChar).toEqual(0x32);
74
+ });
62
75
  });
63
- it('should ignore line-breaks between operator and digit in number', function () {
64
- var minusInput = new _stream.StringStream('-\r\n205.88');
65
- var minusLexer = new _parser.Lexer(minusInput);
66
- expect(minusLexer.getNumber()).toEqual(-205.88);
67
- var plusInput = new _stream.StringStream('+\r\n205.88');
68
- var plusLexer = new _parser.Lexer(plusInput);
69
- expect(plusLexer.getNumber()).toEqual(205.88);
76
+ describe("peekChar", function () {
77
+ it("should only return -1 when the end of the stream is reached", function () {
78
+ const input = new _stream.StringStream("");
79
+ const lexer = new _parser.Lexer(input);
80
+ expect(lexer.peekChar()).toEqual(-1);
81
+ expect(lexer.currentChar).toEqual(-1);
82
+ });
83
+ it("should only return the character after the current position", function () {
84
+ const input = new _stream.StringStream("123");
85
+ const lexer = new _parser.Lexer(input);
86
+ expect(lexer.peekChar()).toEqual(0x32);
87
+ expect(lexer.currentChar).toEqual(0x31);
88
+ });
70
89
  });
71
- it('should treat a single decimal point as zero', function () {
72
- var input = new _stream.StringStream('.');
73
- var lexer = new _parser.Lexer(input);
74
- expect(lexer.getNumber()).toEqual(0);
75
- var numbers = ['..', '-.', '+.', '-\r\n.', '+\r\n.'];
90
+ describe("getNumber", function () {
91
+ it("should stop parsing numbers at the end of stream", function () {
92
+ const input = new _stream.StringStream("11.234");
93
+ const lexer = new _parser.Lexer(input);
94
+ expect(lexer.getNumber()).toEqual(11.234);
95
+ });
96
+ it("should parse PostScript numbers", function () {
97
+ const numbers = ["-.002", "34.5", "-3.62", "123.6e10", "1E-5", "-1.", "0.0", "123", "-98", "43445", "0", "+17"];
76
98
 
77
- var _loop = function _loop() {
78
- var number = numbers[_i];
79
- var input = new _stream.StringStream(number);
80
- var lexer = new _parser.Lexer(input);
81
- expect(function () {
82
- return lexer.getNumber();
83
- }).toThrowError(_util.FormatError, /^Invalid number:\s/);
84
- };
99
+ for (const number of numbers) {
100
+ const input = new _stream.StringStream(number);
101
+ const lexer = new _parser.Lexer(input);
102
+ const result = lexer.getNumber(),
103
+ expected = parseFloat(number);
85
104
 
86
- for (var _i = 0; _i < numbers.length; _i++) {
87
- _loop();
88
- }
89
- });
90
- it('should handle glued numbers and operators', function () {
91
- var input = new _stream.StringStream('123ET');
92
- var lexer = new _parser.Lexer(input);
93
- var value = lexer.getNumber();
94
- expect(value).toEqual(123);
95
- expect(lexer.currentChar).toEqual(0x45);
96
- });
97
- it('should stop parsing strings at the end of stream', function () {
98
- var input = new _stream.StringStream('(1$4)');
105
+ if (result !== expected && Math.abs(result - expected) < 1e-15) {
106
+ console.error(`Fuzzy matching "${result}" with "${expected}" to ` + "work-around rounding bugs in Chromium browsers.");
107
+ expect(true).toEqual(true);
108
+ continue;
109
+ }
99
110
 
100
- input.getByte = function (super_getByte) {
101
- var ch = super_getByte.call(input);
102
- return ch === 0x24 ? -1 : ch;
103
- }.bind(input, input.getByte);
111
+ expect(result).toEqual(expected);
112
+ }
113
+ });
114
+ it("should ignore double negative before number", function () {
115
+ const input = new _stream.StringStream("--205.88");
116
+ const lexer = new _parser.Lexer(input);
117
+ expect(lexer.getNumber()).toEqual(-205.88);
118
+ });
119
+ it("should ignore minus signs in the middle of number", function () {
120
+ const input = new _stream.StringStream("205--.88");
121
+ const lexer = new _parser.Lexer(input);
122
+ expect(lexer.getNumber()).toEqual(205.88);
123
+ });
124
+ it("should ignore line-breaks between operator and digit in number", function () {
125
+ const minusInput = new _stream.StringStream("-\r\n205.88");
126
+ const minusLexer = new _parser.Lexer(minusInput);
127
+ expect(minusLexer.getNumber()).toEqual(-205.88);
128
+ const plusInput = new _stream.StringStream("+\r\n205.88");
129
+ const plusLexer = new _parser.Lexer(plusInput);
130
+ expect(plusLexer.getNumber()).toEqual(205.88);
131
+ });
132
+ it("should treat a single decimal point as zero", function () {
133
+ const input = new _stream.StringStream(".");
134
+ const lexer = new _parser.Lexer(input);
135
+ expect(lexer.getNumber()).toEqual(0);
136
+ const numbers = ["..", "-.", "+.", "-\r\n.", "+\r\n."];
104
137
 
105
- var lexer = new _parser.Lexer(input);
106
- var result = lexer.getString();
107
- expect(result).toEqual('1');
138
+ for (const number of numbers) {
139
+ const invalidInput = new _stream.StringStream(number);
140
+ const invalidLexer = new _parser.Lexer(invalidInput);
141
+ expect(function () {
142
+ return invalidLexer.getNumber();
143
+ }).toThrowError(_util.FormatError, /^Invalid number:\s/);
144
+ }
145
+ });
146
+ it("should handle glued numbers and operators", function () {
147
+ const input = new _stream.StringStream("123ET");
148
+ const lexer = new _parser.Lexer(input);
149
+ expect(lexer.getNumber()).toEqual(123);
150
+ expect(lexer.currentChar).toEqual(0x45);
151
+ });
108
152
  });
109
- it('should not throw exception on bad input', function () {
110
- var input = new _stream.StringStream('<7 0 2 15 5 2 2 2 4 3 2 4>');
111
- var lexer = new _parser.Lexer(input);
112
- var result = lexer.getHexString();
113
- expect(result).toEqual('p!U"$2');
153
+ describe("getString", function () {
154
+ it("should stop parsing strings at the end of stream", function () {
155
+ const input = new _stream.StringStream("(1$4)");
156
+
157
+ input.getByte = function (super_getByte) {
158
+ const ch = super_getByte.call(input);
159
+ return ch === 0x24 ? -1 : ch;
160
+ }.bind(input, input.getByte);
161
+
162
+ const lexer = new _parser.Lexer(input);
163
+ expect(lexer.getString()).toEqual("1");
164
+ });
165
+ it("should ignore escaped CR and LF", function () {
166
+ const input = new _stream.StringStream("(\\101\\\r\n\\102\\\r\\103\\\n\\104)");
167
+ const lexer = new _parser.Lexer(input);
168
+ expect(lexer.getString()).toEqual("ABCD");
169
+ });
114
170
  });
115
- it('should ignore escaped CR and LF', function () {
116
- var input = new _stream.StringStream('(\\101\\\r\n\\102\\\r\\103\\\n\\104)');
117
- var lexer = new _parser.Lexer(input);
118
- var result = lexer.getString();
119
- expect(result).toEqual('ABCD');
171
+ describe("getHexString", function () {
172
+ it("should not throw exception on bad input", function () {
173
+ const input = new _stream.StringStream("<7 0 2 15 5 2 2 2 4 3 2 4>");
174
+ const lexer = new _parser.Lexer(input);
175
+ expect(lexer.getHexString()).toEqual('p!U"$2');
176
+ });
120
177
  });
121
- it('should handle Names with invalid usage of NUMBER SIGN (#)', function () {
122
- var inputNames = ['/# 680 0 R', '/#AQwerty', '/#A<</B'];
123
- var expectedNames = ['#', '#AQwerty', '#A'];
178
+ describe("getName", function () {
179
+ it("should handle Names with invalid usage of NUMBER SIGN (#)", function () {
180
+ const inputNames = ["/# 680 0 R", "/#AQwerty", "/#A<</B"];
181
+ const expectedNames = ["#", "#AQwerty", "#A"];
124
182
 
125
- for (var i = 0, ii = inputNames.length; i < ii; i++) {
126
- var input = new _stream.StringStream(inputNames[i]);
127
- var lexer = new _parser.Lexer(input);
128
- var result = lexer.getName();
129
- expect(result).toEqual(_primitives.Name.get(expectedNames[i]));
130
- }
183
+ for (let i = 0, ii = inputNames.length; i < ii; i++) {
184
+ const input = new _stream.StringStream(inputNames[i]);
185
+ const lexer = new _parser.Lexer(input);
186
+ expect(lexer.getName()).toEqual(_primitives.Name.get(expectedNames[i]));
187
+ }
188
+ });
131
189
  });
132
190
  });
133
- describe('Linearization', function () {
134
- it('should not find a linearization dictionary', function () {
135
- var stream1 = new _stream.StringStream('3 0 obj\n' + '<<\n' + '/Length 4622\n' + '/Filter /FlateDecode\n' + '>>\n' + 'endobj');
191
+ describe("Linearization", function () {
192
+ it("should not find a linearization dictionary", function () {
193
+ const stream1 = new _stream.StringStream("3 0 obj\n" + "<<\n" + "/Length 4622\n" + "/Filter /FlateDecode\n" + ">>\n" + "endobj");
136
194
  expect(_parser.Linearization.create(stream1)).toEqual(null);
137
- var stream2 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 0\n' + '>>\n' + 'endobj');
195
+ const stream2 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 0\n" + ">>\n" + "endobj");
138
196
  expect(_parser.Linearization.create(stream2)).toEqual(null);
139
197
  });
140
- it('should accept a valid linearization dictionary', function () {
141
- var stream = new _stream.StringStream('131 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O 133\n' + '/H [ 1388 863 ]\n' + '/L 90\n' + '/E 43573\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
142
- var expectedLinearizationDict = {
198
+ it("should accept a valid linearization dictionary", function () {
199
+ const stream = new _stream.StringStream("131 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O 133\n" + "/H [ 1388 863 ]\n" + "/L 90\n" + "/E 43573\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
200
+ const expectedLinearizationDict = {
143
201
  length: 90,
144
202
  hints: [1388, 863],
145
203
  objectNumberFirst: 133,
@@ -150,33 +208,33 @@ describe('parser', function () {
150
208
  };
151
209
  expect(_parser.Linearization.create(stream)).toEqual(expectedLinearizationDict);
152
210
  });
153
- it('should reject a linearization dictionary with invalid ' + 'integer parameters', function () {
154
- var stream1 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O 133\n' + '/H [ 1388 863 ]\n' + '/L 196622\n' + '/E 43573\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
211
+ it("should reject a linearization dictionary with invalid " + "integer parameters", function () {
212
+ const stream1 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O 133\n" + "/H [ 1388 863 ]\n" + "/L 196622\n" + "/E 43573\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
155
213
  expect(function () {
156
214
  return _parser.Linearization.create(stream1);
157
- }).toThrow(new Error('The "L" parameter in the linearization ' + 'dictionary does not equal the stream length.'));
158
- var stream2 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O 133\n' + '/H [ 1388 863 ]\n' + '/L 84\n' + '/E 0\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
215
+ }).toThrow(new Error('The "L" parameter in the linearization ' + "dictionary does not equal the stream length."));
216
+ const stream2 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O 133\n" + "/H [ 1388 863 ]\n" + "/L 84\n" + "/E 0\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
159
217
  expect(function () {
160
218
  return _parser.Linearization.create(stream2);
161
- }).toThrow(new Error('The "E" parameter in the linearization ' + 'dictionary is invalid.'));
162
- var stream3 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O /abc\n' + '/H [ 1388 863 ]\n' + '/L 89\n' + '/E 43573\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
219
+ }).toThrow(new Error('The "E" parameter in the linearization dictionary is invalid.'));
220
+ const stream3 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O /abc\n" + "/H [ 1388 863 ]\n" + "/L 89\n" + "/E 43573\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
163
221
  expect(function () {
164
222
  return _parser.Linearization.create(stream3);
165
- }).toThrow(new Error('The "O" parameter in the linearization ' + 'dictionary is invalid.'));
223
+ }).toThrow(new Error('The "O" parameter in the linearization dictionary is invalid.'));
166
224
  });
167
- it('should reject a linearization dictionary with invalid hint parameters', function () {
168
- var stream1 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O 133\n' + '/H 1388\n' + '/L 80\n' + '/E 43573\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
225
+ it("should reject a linearization dictionary with invalid hint parameters", function () {
226
+ const stream1 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O 133\n" + "/H 1388\n" + "/L 80\n" + "/E 43573\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
169
227
  expect(function () {
170
228
  return _parser.Linearization.create(stream1);
171
- }).toThrow(new Error('Hint array in the linearization dictionary ' + 'is invalid.'));
172
- var stream2 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O 133\n' + '/H [ 1388 ]\n' + '/L 84\n' + '/E 43573\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
229
+ }).toThrow(new Error("Hint array in the linearization dictionary is invalid."));
230
+ const stream2 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O 133\n" + "/H [ 1388 ]\n" + "/L 84\n" + "/E 43573\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
173
231
  expect(function () {
174
232
  return _parser.Linearization.create(stream2);
175
- }).toThrow(new Error('Hint array in the linearization dictionary ' + 'is invalid.'));
176
- var stream3 = new _stream.StringStream('1 0 obj\n' + '<<\n' + '/Linearized 1\n' + '/O 133\n' + '/H [ 1388 863 0 234]\n' + '/L 93\n' + '/E 43573\n' + '/N 18\n' + '/T 193883\n' + '>>\n' + 'endobj');
233
+ }).toThrow(new Error("Hint array in the linearization dictionary is invalid."));
234
+ const stream3 = new _stream.StringStream("1 0 obj\n" + "<<\n" + "/Linearized 1\n" + "/O 133\n" + "/H [ 1388 863 0 234]\n" + "/L 93\n" + "/E 43573\n" + "/N 18\n" + "/T 193883\n" + ">>\n" + "endobj");
177
235
  expect(function () {
178
236
  return _parser.Linearization.create(stream3);
179
- }).toThrow(new Error('Hint (2) in the linearization dictionary ' + 'is invalid.'));
237
+ }).toThrow(new Error("Hint (2) in the linearization dictionary is invalid."));
180
238
  });
181
239
  });
182
240
  });
@@ -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 2018 Mozilla Foundation
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,85 +21,53 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _test_utils = require("./test_utils");
24
+ var _test_utils = require("./test_utils.js");
25
25
 
26
- var _ui_utils = require("../../web/ui_utils");
26
+ var _ui_utils = require("../../web/ui_utils.js");
27
27
 
28
- var _api = require("../../display/api");
28
+ var _api = require("../../display/api.js");
29
29
 
30
- var _pdf_find_controller = require("../../web/pdf_find_controller");
30
+ var _pdf_find_controller = require("../../web/pdf_find_controller.js");
31
31
 
32
- var _pdf_link_service = require("../../web/pdf_link_service");
32
+ var _pdf_link_service = require("../../web/pdf_link_service.js");
33
33
 
34
- 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); }
35
-
36
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
37
-
38
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
39
-
40
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
41
-
42
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
43
-
44
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
45
-
46
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
47
-
48
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
49
-
50
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
34
+ class MockLinkService extends _pdf_link_service.SimpleLinkService {
35
+ constructor() {
36
+ super();
37
+ this._page = 1;
38
+ this._pdfDocument = null;
39
+ }
51
40
 
52
- var MockLinkService =
53
- /*#__PURE__*/
54
- function (_SimpleLinkService) {
55
- _inherits(MockLinkService, _SimpleLinkService);
41
+ setDocument(pdfDocument) {
42
+ this._pdfDocument = pdfDocument;
43
+ }
56
44
 
57
- function MockLinkService() {
58
- var _this;
45
+ get pagesCount() {
46
+ return this._pdfDocument.numPages;
47
+ }
59
48
 
60
- _classCallCheck(this, MockLinkService);
49
+ get page() {
50
+ return this._page;
51
+ }
61
52
 
62
- _this = _possibleConstructorReturn(this, _getPrototypeOf(MockLinkService).call(this));
63
- _this._page = 1;
64
- _this._pdfDocument = null;
65
- return _this;
53
+ set page(value) {
54
+ this._page = value;
66
55
  }
67
56
 
68
- _createClass(MockLinkService, [{
69
- key: "setDocument",
70
- value: function setDocument(pdfDocument) {
71
- this._pdfDocument = pdfDocument;
72
- }
73
- }, {
74
- key: "pagesCount",
75
- get: function get() {
76
- return this._pdfDocument.numPages;
77
- }
78
- }, {
79
- key: "page",
80
- get: function get() {
81
- return this._page;
82
- },
83
- set: function set(value) {
84
- this._page = value;
85
- }
86
- }]);
87
-
88
- return MockLinkService;
89
- }(_pdf_link_service.SimpleLinkService);
90
-
91
- describe('pdf_find_controller', function () {
92
- var eventBus;
93
- var pdfFindController;
57
+ }
58
+
59
+ describe("pdf_find_controller", function () {
60
+ let eventBus;
61
+ let pdfFindController;
94
62
  beforeEach(function (done) {
95
- var loadingTask = (0, _api.getDocument)((0, _test_utils.buildGetDocumentParams)('tracemonkey.pdf'));
63
+ const loadingTask = (0, _api.getDocument)((0, _test_utils.buildGetDocumentParams)("tracemonkey.pdf"));
96
64
  loadingTask.promise.then(function (pdfDocument) {
97
65
  eventBus = new _ui_utils.EventBus();
98
- var linkService = new MockLinkService();
66
+ const linkService = new MockLinkService();
99
67
  linkService.setDocument(pdfDocument);
100
68
  pdfFindController = new _pdf_find_controller.PDFFindController({
101
- linkService: linkService,
102
- eventBus: eventBus
69
+ linkService,
70
+ eventBus
103
71
  });
104
72
  pdfFindController.setDocument(pdfDocument);
105
73
  done();
@@ -110,34 +78,35 @@ describe('pdf_find_controller', function () {
110
78
  pdfFindController = null;
111
79
  });
112
80
 
113
- function testSearch(_ref) {
114
- var parameters = _ref.parameters,
115
- matchesPerPage = _ref.matchesPerPage,
116
- selectedMatch = _ref.selectedMatch;
81
+ function testSearch({
82
+ parameters,
83
+ matchesPerPage,
84
+ selectedMatch
85
+ }) {
117
86
  return new Promise(function (resolve) {
118
- pdfFindController.executeCommand('find', parameters);
119
- var totalPages = matchesPerPage.length;
87
+ pdfFindController.executeCommand("find", parameters);
88
+ let totalPages = matchesPerPage.length;
120
89
 
121
- for (var i = totalPages - 1; i >= 0; i--) {
90
+ for (let i = totalPages - 1; i >= 0; i--) {
122
91
  if (matchesPerPage[i] > 0) {
123
92
  totalPages = i + 1;
124
93
  break;
125
94
  }
126
95
  }
127
96
 
128
- var totalMatches = matchesPerPage.reduce(function (a, b) {
97
+ const totalMatches = matchesPerPage.reduce((a, b) => {
129
98
  return a + b;
130
99
  });
131
- eventBus.on('updatefindmatchescount', function onUpdateFindMatchesCount(evt) {
100
+ eventBus.on("updatefindmatchescount", function onUpdateFindMatchesCount(evt) {
132
101
  if (pdfFindController.pageMatches.length !== totalPages) {
133
102
  return;
134
103
  }
135
104
 
136
- eventBus.off('updatefindmatchescount', onUpdateFindMatchesCount);
105
+ eventBus.off("updatefindmatchescount", onUpdateFindMatchesCount);
137
106
  expect(evt.matchesCount.total).toBe(totalMatches);
138
107
 
139
- for (var _i = 0; _i < totalPages; _i++) {
140
- expect(pdfFindController.pageMatches[_i].length).toEqual(matchesPerPage[_i]);
108
+ for (let i = 0; i < totalPages; i++) {
109
+ expect(pdfFindController.pageMatches[i].length).toEqual(matchesPerPage[i]);
141
110
  }
142
111
 
143
112
  expect(pdfFindController.selected.pageIdx).toEqual(selectedMatch.pageIndex);
@@ -147,10 +116,10 @@ describe('pdf_find_controller', function () {
147
116
  });
148
117
  }
149
118
 
150
- it('performs a normal search', function (done) {
119
+ it("performs a normal search", function (done) {
151
120
  testSearch({
152
121
  parameters: {
153
- query: 'Dynamic',
122
+ query: "Dynamic",
154
123
  caseSensitive: false,
155
124
  entireWord: false,
156
125
  phraseSearch: true,
@@ -163,10 +132,10 @@ describe('pdf_find_controller', function () {
163
132
  }
164
133
  }).then(done);
165
134
  });
166
- it('performs a normal search and finds the previous result', function (done) {
135
+ it("performs a normal search and finds the previous result", function (done) {
167
136
  testSearch({
168
137
  parameters: {
169
- query: 'conference',
138
+ query: "conference",
170
139
  caseSensitive: false,
171
140
  entireWord: false,
172
141
  phraseSearch: true,
@@ -179,10 +148,10 @@ describe('pdf_find_controller', function () {
179
148
  }
180
149
  }).then(done);
181
150
  });
182
- it('performs a case sensitive search', function (done) {
151
+ it("performs a case sensitive search", function (done) {
183
152
  testSearch({
184
153
  parameters: {
185
- query: 'Dynamic',
154
+ query: "Dynamic",
186
155
  caseSensitive: true,
187
156
  entireWord: false,
188
157
  phraseSearch: true,
@@ -195,10 +164,10 @@ describe('pdf_find_controller', function () {
195
164
  }
196
165
  }).then(done);
197
166
  });
198
- it('performs an entire word search', function (done) {
167
+ it("performs an entire word search", function (done) {
199
168
  testSearch({
200
169
  parameters: {
201
- query: 'Government',
170
+ query: "Government",
202
171
  caseSensitive: false,
203
172
  entireWord: true,
204
173
  phraseSearch: true,
@@ -211,10 +180,10 @@ describe('pdf_find_controller', function () {
211
180
  }
212
181
  }).then(done);
213
182
  });
214
- it('performs a multiple term (no phrase) search', function (done) {
183
+ it("performs a multiple term (no phrase) search", function (done) {
215
184
  testSearch({
216
185
  parameters: {
217
- query: 'alternate solution',
186
+ query: "alternate solution",
218
187
  caseSensitive: false,
219
188
  entireWord: false,
220
189
  phraseSearch: false,