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,51 +21,51 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _primitives = require("../../core/primitives");
24
+ var _test_utils = require("./test_utils.js");
25
25
 
26
- var _util = require("../../shared/util");
26
+ var _primitives = require("../../core/primitives.js");
27
27
 
28
- var _stream = require("../../core/stream");
28
+ var _util = require("../../shared/util.js");
29
29
 
30
- var _operator_list = require("../../core/operator_list");
30
+ var _stream = require("../../core/stream.js");
31
31
 
32
- var _evaluator = require("../../core/evaluator");
32
+ var _operator_list = require("../../core/operator_list.js");
33
33
 
34
- var _worker = require("../../core/worker");
34
+ var _evaluator = require("../../core/evaluator.js");
35
35
 
36
- var _test_utils = require("./test_utils");
36
+ var _worker = require("../../core/worker.js");
37
37
 
38
- describe('evaluator', function () {
38
+ describe("evaluator", function () {
39
39
  function HandlerMock() {
40
40
  this.inputs = [];
41
41
  }
42
42
 
43
43
  HandlerMock.prototype = {
44
- send: function send(name, data) {
44
+ send(name, data) {
45
45
  this.inputs.push({
46
- name: name,
47
- data: data
46
+ name,
47
+ data
48
48
  });
49
49
  }
50
+
50
51
  };
51
52
 
52
53
  function ResourcesMock() {}
53
54
 
54
55
  ResourcesMock.prototype = {
55
- get: function get(name) {
56
+ get(name) {
56
57
  return this[name];
57
58
  }
58
- };
59
59
 
60
- function PdfManagerMock() {}
60
+ };
61
61
 
62
62
  function runOperatorListCheck(evaluator, stream, resources, callback) {
63
63
  var result = new _operator_list.OperatorList();
64
- var task = new _worker.WorkerTask('OperatorListCheck');
64
+ var task = new _worker.WorkerTask("OperatorListCheck");
65
65
  evaluator.getOperatorList({
66
- stream: stream,
67
- task: task,
68
- resources: resources,
66
+ stream,
67
+ task,
68
+ resources,
69
69
  operatorList: result
70
70
  }).then(function () {
71
71
  callback(result);
@@ -77,19 +77,19 @@ describe('evaluator', function () {
77
77
  var partialEvaluator;
78
78
  beforeAll(function (done) {
79
79
  partialEvaluator = new _evaluator.PartialEvaluator({
80
- pdfManager: new PdfManagerMock(),
81
80
  xref: new _test_utils.XRefMock(),
82
81
  handler: new HandlerMock(),
83
- pageIndex: 0
82
+ pageIndex: 0,
83
+ idFactory: (0, _test_utils.createIdFactory)(0)
84
84
  });
85
85
  done();
86
86
  });
87
87
  afterAll(function () {
88
88
  partialEvaluator = null;
89
89
  });
90
- describe('splitCombinedOperations', function () {
91
- it('should reject unknown operations', function (done) {
92
- var stream = new _stream.StringStream('fTT');
90
+ describe("splitCombinedOperations", function () {
91
+ it("should reject unknown operations", function (done) {
92
+ var stream = new _stream.StringStream("fTT");
93
93
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
94
94
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
95
95
  expect(result.fnArray.length).toEqual(1);
@@ -98,8 +98,8 @@ describe('evaluator', function () {
98
98
  done();
99
99
  });
100
100
  });
101
- it('should handle one operation', function (done) {
102
- var stream = new _stream.StringStream('Q');
101
+ it("should handle one operation", function (done) {
102
+ var stream = new _stream.StringStream("Q");
103
103
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
104
104
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
105
105
  expect(result.fnArray.length).toEqual(1);
@@ -107,10 +107,10 @@ describe('evaluator', function () {
107
107
  done();
108
108
  });
109
109
  });
110
- it('should handle two glued operations', function (done) {
110
+ it("should handle two glued operations", function (done) {
111
111
  var resources = new ResourcesMock();
112
112
  resources.Res1 = {};
113
- var stream = new _stream.StringStream('/Res1 DoQ');
113
+ var stream = new _stream.StringStream("/Res1 DoQ");
114
114
  runOperatorListCheck(partialEvaluator, stream, resources, function (result) {
115
115
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
116
116
  expect(result.fnArray.length).toEqual(2);
@@ -119,8 +119,8 @@ describe('evaluator', function () {
119
119
  done();
120
120
  });
121
121
  });
122
- it('should handle three glued operations', function (done) {
123
- var stream = new _stream.StringStream('fff');
122
+ it("should handle three glued operations", function (done) {
123
+ var stream = new _stream.StringStream("fff");
124
124
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
125
125
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
126
126
  expect(result.fnArray.length).toEqual(3);
@@ -130,10 +130,10 @@ describe('evaluator', function () {
130
130
  done();
131
131
  });
132
132
  });
133
- it('should handle three glued operations #2', function (done) {
133
+ it("should handle three glued operations #2", function (done) {
134
134
  var resources = new ResourcesMock();
135
135
  resources.Res1 = {};
136
- var stream = new _stream.StringStream('B*Bf*');
136
+ var stream = new _stream.StringStream("B*Bf*");
137
137
  runOperatorListCheck(partialEvaluator, stream, resources, function (result) {
138
138
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
139
139
  expect(result.fnArray.length).toEqual(3);
@@ -143,8 +143,8 @@ describe('evaluator', function () {
143
143
  done();
144
144
  });
145
145
  });
146
- it('should handle glued operations and operands', function (done) {
147
- var stream = new _stream.StringStream('f5 Ts');
146
+ it("should handle glued operations and operands", function (done) {
147
+ var stream = new _stream.StringStream("f5 Ts");
148
148
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
149
149
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
150
150
  expect(result.fnArray.length).toEqual(2);
@@ -156,8 +156,8 @@ describe('evaluator', function () {
156
156
  done();
157
157
  });
158
158
  });
159
- it('should handle glued operations and literals', function (done) {
160
- var stream = new _stream.StringStream('trueifalserinulln');
159
+ it("should handle glued operations and literals", function (done) {
160
+ var stream = new _stream.StringStream("trueifalserinulln");
161
161
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
162
162
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
163
163
  expect(result.fnArray.length).toEqual(3);
@@ -174,9 +174,9 @@ describe('evaluator', function () {
174
174
  });
175
175
  });
176
176
  });
177
- describe('validateNumberOfArgs', function () {
178
- it('should execute if correct number of arguments', function (done) {
179
- var stream = new _stream.StringStream('5 1 d0');
177
+ describe("validateNumberOfArgs", function () {
178
+ it("should execute if correct number of arguments", function (done) {
179
+ var stream = new _stream.StringStream("5 1 d0");
180
180
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
181
181
  expect(result.argsArray[0][0]).toEqual(5);
182
182
  expect(result.argsArray[0][1]).toEqual(1);
@@ -184,8 +184,8 @@ describe('evaluator', function () {
184
184
  done();
185
185
  });
186
186
  });
187
- it('should execute if too many arguments', function (done) {
188
- var stream = new _stream.StringStream('5 1 4 d0');
187
+ it("should execute if too many arguments", function (done) {
188
+ var stream = new _stream.StringStream("5 1 4 d0");
189
189
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
190
190
  expect(result.argsArray[0][0]).toEqual(1);
191
191
  expect(result.argsArray[0][1]).toEqual(4);
@@ -193,8 +193,8 @@ describe('evaluator', function () {
193
193
  done();
194
194
  });
195
195
  });
196
- it('should execute if nested commands', function (done) {
197
- var stream = new _stream.StringStream('/F2 /GS2 gs 5.711 Tf');
196
+ it("should execute if nested commands", function (done) {
197
+ var stream = new _stream.StringStream("/F2 /GS2 gs 5.711 Tf");
198
198
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
199
199
  expect(result.fnArray.length).toEqual(3);
200
200
  expect(result.fnArray[0]).toEqual(_util.OPS.setGState);
@@ -207,34 +207,34 @@ describe('evaluator', function () {
207
207
  done();
208
208
  });
209
209
  });
210
- it('should skip if too few arguments', function (done) {
211
- var stream = new _stream.StringStream('5 d0');
210
+ it("should skip if too few arguments", function (done) {
211
+ var stream = new _stream.StringStream("5 d0");
212
212
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
213
213
  expect(result.argsArray).toEqual([]);
214
214
  expect(result.fnArray).toEqual([]);
215
215
  done();
216
216
  });
217
217
  });
218
- it('should error if (many) path operators have too few arguments ' + '(bug 1443140)', function (done) {
219
- var NUM_INVALID_OPS = 25;
220
- var tempArr = new Array(NUM_INVALID_OPS + 1);
221
- var invalidMoveText = tempArr.join('10 Td\n');
222
- var moveTextStream = new _stream.StringStream(invalidMoveText);
218
+ it("should error if (many) path operators have too few arguments " + "(bug 1443140)", function (done) {
219
+ const NUM_INVALID_OPS = 25;
220
+ const tempArr = new Array(NUM_INVALID_OPS + 1);
221
+ const invalidMoveText = tempArr.join("10 Td\n");
222
+ const moveTextStream = new _stream.StringStream(invalidMoveText);
223
223
  runOperatorListCheck(partialEvaluator, moveTextStream, new ResourcesMock(), function (result) {
224
224
  expect(result.argsArray).toEqual([]);
225
225
  expect(result.fnArray).toEqual([]);
226
226
  done();
227
227
  });
228
- var invalidLineTo = tempArr.join('20 l\n');
229
- var lineToStream = new _stream.StringStream(invalidLineTo);
228
+ const invalidLineTo = tempArr.join("20 l\n");
229
+ const lineToStream = new _stream.StringStream(invalidLineTo);
230
230
  runOperatorListCheck(partialEvaluator, lineToStream, new ResourcesMock(), function (error) {
231
231
  expect(error instanceof _util.FormatError).toEqual(true);
232
- expect(error.message).toEqual('Invalid command l: expected 2 args, but received 1 args.');
232
+ expect(error.message).toEqual("Invalid command l: expected 2 args, but received 1 args.");
233
233
  done();
234
234
  });
235
235
  });
236
- it('should close opened saves', function (done) {
237
- var stream = new _stream.StringStream('qq');
236
+ it("should close opened saves", function (done) {
237
+ var stream = new _stream.StringStream("qq");
238
238
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
239
239
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
240
240
  expect(result.fnArray.length).toEqual(4);
@@ -245,23 +245,23 @@ describe('evaluator', function () {
245
245
  done();
246
246
  });
247
247
  });
248
- it('should skip paintXObject if name is missing', function (done) {
249
- var stream = new _stream.StringStream('/ Do');
248
+ it("should error on paintXObject if name is missing", function (done) {
249
+ var stream = new _stream.StringStream("/ Do");
250
250
  runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
251
251
  expect(result instanceof _util.FormatError).toEqual(true);
252
- expect(result.message).toEqual('XObject must be referred to by name.');
252
+ expect(result.message).toEqual("XObject must be referred to by name.");
253
253
  done();
254
254
  });
255
255
  });
256
- it('should skip paintXObject if subtype is PS', function (done) {
256
+ it("should skip paintXObject if subtype is PS", function (done) {
257
257
  var xobjStreamDict = new _primitives.Dict();
258
- xobjStreamDict.set('Subtype', _primitives.Name.get('PS'));
258
+ xobjStreamDict.set("Subtype", _primitives.Name.get("PS"));
259
259
  var xobjStream = new _stream.Stream([], 0, 0, xobjStreamDict);
260
260
  var xobjs = new _primitives.Dict();
261
- xobjs.set('Res1', xobjStream);
261
+ xobjs.set("Res1", xobjStream);
262
262
  var resources = new _primitives.Dict();
263
- resources.set('XObject', xobjs);
264
- var stream = new _stream.StringStream('/Res1 Do');
263
+ resources.set("XObject", xobjs);
264
+ var stream = new _stream.StringStream("/Res1 Do");
265
265
  runOperatorListCheck(partialEvaluator, stream, resources, function (result) {
266
266
  expect(result.argsArray).toEqual([]);
267
267
  expect(result.fnArray).toEqual([]);
@@ -269,17 +269,17 @@ describe('evaluator', function () {
269
269
  });
270
270
  });
271
271
  });
272
- describe('thread control', function () {
273
- it('should abort operator list parsing', function (done) {
274
- var stream = new _stream.StringStream('qqQQ');
272
+ describe("thread control", function () {
273
+ it("should abort operator list parsing", function (done) {
274
+ var stream = new _stream.StringStream("qqQQ");
275
275
  var resources = new ResourcesMock();
276
276
  var result = new _operator_list.OperatorList();
277
- var task = new _worker.WorkerTask('OperatorListAbort');
277
+ var task = new _worker.WorkerTask("OperatorListAbort");
278
278
  task.terminate();
279
279
  partialEvaluator.getOperatorList({
280
- stream: stream,
281
- task: task,
282
- resources: resources,
280
+ stream,
281
+ task,
282
+ resources,
283
283
  operatorList: result
284
284
  }).catch(function () {
285
285
  expect(!!result.fnArray && !!result.argsArray).toEqual(true);
@@ -287,29 +287,29 @@ describe('evaluator', function () {
287
287
  done();
288
288
  });
289
289
  });
290
- it('should abort text parsing parsing', function (done) {
290
+ it("should abort text parsing parsing", function (done) {
291
291
  var resources = new ResourcesMock();
292
- var stream = new _stream.StringStream('qqQQ');
293
- var task = new _worker.WorkerTask('TextContentAbort');
292
+ var stream = new _stream.StringStream("qqQQ");
293
+ var task = new _worker.WorkerTask("TextContentAbort");
294
294
  task.terminate();
295
295
  partialEvaluator.getTextContent({
296
- stream: stream,
297
- task: task,
298
- resources: resources
296
+ stream,
297
+ task,
298
+ resources
299
299
  }).catch(function () {
300
300
  expect(true).toEqual(true);
301
301
  done();
302
302
  });
303
303
  });
304
304
  });
305
- describe('operator list', function () {
306
- function MessageHandlerMock() {}
305
+ describe("operator list", function () {
306
+ class StreamSinkMock {
307
+ enqueue() {}
308
+
309
+ }
307
310
 
308
- MessageHandlerMock.prototype = {
309
- send: function send() {}
310
- };
311
- it('should get correct total length after flushing', function () {
312
- var operatorList = new _operator_list.OperatorList(null, new MessageHandlerMock());
311
+ it("should get correct total length after flushing", function () {
312
+ var operatorList = new _operator_list.OperatorList(null, new StreamSinkMock());
313
313
  operatorList.addOp(_util.OPS.save, null);
314
314
  operatorList.addOp(_util.OPS.restore, null);
315
315
  expect(operatorList.totalLength).toEqual(2);
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @licstart The following is the entire license notice for the
3
+ * Javascript code in this page
4
+ *
5
+ * Copyright 2020 Mozilla Foundation
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ * @licend The above is the entire license notice for the
20
+ * Javascript code in this page
21
+ */
22
+ "use strict";
23
+
24
+ var _util = require("../../shared/util.js");
25
+
26
+ var _fetch_stream = require("../../display/fetch_stream.js");
27
+
28
+ describe("fetch_stream", function () {
29
+ const pdfUrl = new URL("../pdfs/tracemonkey.pdf", window.location).href;
30
+ const pdfLength = 1016315;
31
+ it("read with streaming", function (done) {
32
+ const stream = new _fetch_stream.PDFFetchStream({
33
+ url: pdfUrl,
34
+ disableStream: false,
35
+ disableRange: true
36
+ });
37
+ const fullReader = stream.getFullReader();
38
+ let isStreamingSupported, isRangeSupported;
39
+ const promise = fullReader.headersReady.then(function () {
40
+ isStreamingSupported = fullReader.isStreamingSupported;
41
+ isRangeSupported = fullReader.isRangeSupported;
42
+ });
43
+ let len = 0;
44
+
45
+ const read = function () {
46
+ return fullReader.read().then(function (result) {
47
+ if (result.done) {
48
+ return undefined;
49
+ }
50
+
51
+ len += result.value.byteLength;
52
+ return read();
53
+ });
54
+ };
55
+
56
+ const readPromise = Promise.all([read(), promise]);
57
+ readPromise.then(function () {
58
+ expect(len).toEqual(pdfLength);
59
+ expect(isStreamingSupported).toEqual(true);
60
+ expect(isRangeSupported).toEqual(false);
61
+ done();
62
+ }).catch(done.fail);
63
+ });
64
+ it("read ranges with streaming", function (done) {
65
+ const rangeSize = 32768;
66
+ const stream = new _fetch_stream.PDFFetchStream({
67
+ url: pdfUrl,
68
+ rangeChunkSize: rangeSize,
69
+ disableStream: false,
70
+ disableRange: false
71
+ });
72
+ const fullReader = stream.getFullReader();
73
+ let isStreamingSupported, isRangeSupported, fullReaderCancelled;
74
+ const promise = fullReader.headersReady.then(function () {
75
+ isStreamingSupported = fullReader.isStreamingSupported;
76
+ isRangeSupported = fullReader.isRangeSupported;
77
+ fullReader.cancel(new _util.AbortException("Don't need fullReader."));
78
+ fullReaderCancelled = true;
79
+ });
80
+ const tailSize = pdfLength % rangeSize || rangeSize;
81
+ const rangeReader1 = stream.getRangeReader(pdfLength - tailSize - rangeSize, pdfLength - tailSize);
82
+ const rangeReader2 = stream.getRangeReader(pdfLength - tailSize, pdfLength);
83
+ const result1 = {
84
+ value: 0
85
+ },
86
+ result2 = {
87
+ value: 0
88
+ };
89
+
90
+ const read = function (reader, lenResult) {
91
+ return reader.read().then(function (result) {
92
+ if (result.done) {
93
+ return undefined;
94
+ }
95
+
96
+ lenResult.value += result.value.byteLength;
97
+ return read(reader, lenResult);
98
+ });
99
+ };
100
+
101
+ const readPromise = Promise.all([read(rangeReader1, result1), read(rangeReader2, result2), promise]);
102
+ readPromise.then(function () {
103
+ expect(isStreamingSupported).toEqual(true);
104
+ expect(isRangeSupported).toEqual(true);
105
+ expect(fullReaderCancelled).toEqual(true);
106
+ expect(result1.value).toEqual(rangeSize);
107
+ expect(result2.value).toEqual(tailSize);
108
+ done();
109
+ }).catch(done.fail);
110
+ });
111
+ });