pdfjs-dist 2.0.487 → 2.1.266

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 (161) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +15564 -9476
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +46644 -36309
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/external/url/url-lib.js +627 -0
  9. package/image_decoders/pdf.image_decoders.js +11430 -0
  10. package/image_decoders/pdf.image_decoders.js.map +1 -0
  11. package/image_decoders/pdf.image_decoders.min.js +1 -0
  12. package/lib/core/annotation.js +406 -131
  13. package/lib/core/arithmetic_decoder.js +275 -245
  14. package/lib/core/bidi.js +65 -6
  15. package/lib/core/ccitt.js +173 -18
  16. package/lib/core/ccitt_stream.js +15 -6
  17. package/lib/core/cff_parser.js +376 -53
  18. package/lib/core/charsets.js +5 -4
  19. package/lib/core/chunked_stream.js +387 -149
  20. package/lib/core/cmap.js +310 -75
  21. package/lib/core/colorspace.js +874 -594
  22. package/lib/core/crypto.js +290 -45
  23. package/lib/core/document.js +545 -260
  24. package/lib/core/encodings.js +19 -10
  25. package/lib/core/evaluator.js +725 -147
  26. package/lib/core/font_renderer.js +360 -91
  27. package/lib/core/fonts.js +791 -186
  28. package/lib/core/function.js +284 -71
  29. package/lib/core/glyphlist.js +3 -2
  30. package/lib/core/image.js +168 -61
  31. package/lib/core/jbig2.js +479 -66
  32. package/lib/core/jbig2_stream.js +19 -8
  33. package/lib/core/jpeg_stream.js +38 -13
  34. package/lib/core/jpg.js +252 -29
  35. package/lib/core/jpx.js +396 -6
  36. package/lib/core/jpx_stream.js +18 -6
  37. package/lib/core/metrics.js +4 -4
  38. package/lib/core/murmurhash3.js +24 -6
  39. package/lib/core/obj.js +1137 -475
  40. package/lib/core/operator_list.js +108 -6
  41. package/lib/core/parser.js +321 -68
  42. package/lib/core/pattern.js +145 -13
  43. package/lib/core/pdf_manager.js +321 -133
  44. package/lib/core/primitives.js +75 -22
  45. package/lib/core/ps_parser.js +134 -45
  46. package/lib/core/standard_fonts.js +10 -10
  47. package/lib/core/stream.js +313 -34
  48. package/lib/core/type1_parser.js +143 -13
  49. package/lib/core/unicode.js +31 -4
  50. package/lib/core/worker.js +210 -66
  51. package/lib/display/annotation_layer.js +361 -123
  52. package/lib/display/api.js +1454 -729
  53. package/lib/display/api_compatibility.js +11 -13
  54. package/lib/display/canvas.js +324 -29
  55. package/lib/display/content_disposition.js +83 -32
  56. package/lib/display/dom_utils.js +226 -41
  57. package/lib/display/fetch_stream.js +208 -84
  58. package/lib/display/font_loader.js +465 -236
  59. package/lib/display/metadata.js +38 -16
  60. package/lib/display/network.js +216 -51
  61. package/lib/display/network_utils.js +32 -19
  62. package/lib/display/node_stream.js +352 -169
  63. package/lib/display/pattern_helper.js +58 -7
  64. package/lib/display/svg.js +242 -29
  65. package/lib/display/text_layer.js +132 -18
  66. package/lib/display/transport_stream.js +171 -42
  67. package/lib/display/webgl.js +64 -18
  68. package/lib/display/worker_options.js +5 -4
  69. package/lib/display/xml_parser.js +166 -53
  70. package/lib/examples/node/domstubs.js +57 -4
  71. package/lib/pdf.js +21 -4
  72. package/lib/pdf.worker.js +5 -3
  73. package/lib/shared/compatibility.js +158 -564
  74. package/lib/shared/global_scope.js +2 -2
  75. package/lib/shared/is_node.js +4 -4
  76. package/lib/shared/message_handler.js +521 -0
  77. package/lib/shared/streams_polyfill.js +21 -17
  78. package/lib/shared/url_polyfill.js +56 -0
  79. package/lib/shared/util.js +295 -650
  80. package/lib/test/unit/annotation_spec.js +629 -345
  81. package/lib/test/unit/api_spec.js +555 -253
  82. package/lib/test/unit/bidi_spec.js +7 -7
  83. package/lib/test/unit/cff_parser_spec.js +40 -11
  84. package/lib/test/unit/clitests_helper.js +9 -7
  85. package/lib/test/unit/cmap_spec.js +80 -26
  86. package/lib/test/unit/colorspace_spec.js +99 -52
  87. package/lib/test/unit/crypto_spec.js +17 -5
  88. package/lib/test/unit/custom_spec.js +41 -53
  89. package/lib/test/unit/display_svg_spec.js +33 -17
  90. package/lib/test/unit/document_spec.js +3 -3
  91. package/lib/test/unit/dom_utils_spec.js +9 -9
  92. package/lib/test/unit/encodings_spec.js +25 -45
  93. package/lib/test/unit/evaluator_spec.js +34 -9
  94. package/lib/test/unit/function_spec.js +17 -5
  95. package/lib/test/unit/jasmine-boot.js +31 -18
  96. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  97. package/lib/test/unit/metadata_spec.js +71 -11
  98. package/lib/test/unit/murmurhash3_spec.js +3 -3
  99. package/lib/test/unit/network_spec.js +20 -5
  100. package/lib/test/unit/network_utils_spec.js +41 -14
  101. package/lib/test/unit/node_stream_spec.js +51 -27
  102. package/lib/test/unit/parser_spec.js +35 -8
  103. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  104. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  105. package/lib/test/unit/pdf_history_spec.js +21 -9
  106. package/lib/test/unit/primitives_spec.js +24 -4
  107. package/lib/test/unit/stream_spec.js +12 -4
  108. package/lib/test/unit/test_utils.js +90 -27
  109. package/lib/test/unit/testreporter.js +21 -3
  110. package/lib/test/unit/type1_parser_spec.js +8 -6
  111. package/lib/test/unit/ui_utils_spec.js +452 -14
  112. package/lib/test/unit/unicode_spec.js +14 -11
  113. package/lib/test/unit/util_spec.js +131 -9
  114. package/lib/web/annotation_layer_builder.js +39 -22
  115. package/lib/web/app.js +1240 -582
  116. package/lib/web/app_options.js +71 -41
  117. package/lib/web/base_viewer.js +508 -179
  118. package/lib/web/chromecom.js +261 -117
  119. package/lib/web/debugger.js +166 -22
  120. package/lib/web/download_manager.js +31 -13
  121. package/lib/web/firefox_print_service.js +17 -9
  122. package/lib/web/firefoxcom.js +283 -79
  123. package/lib/web/genericcom.js +89 -30
  124. package/lib/web/genericl10n.js +142 -30
  125. package/lib/web/grab_to_pan.js +26 -4
  126. package/lib/web/interfaces.js +170 -47
  127. package/lib/web/overlay_manager.js +235 -85
  128. package/lib/web/password_prompt.js +21 -13
  129. package/lib/web/pdf_attachment_viewer.js +38 -18
  130. package/lib/web/pdf_cursor_tools.js +39 -16
  131. package/lib/web/pdf_document_properties.js +80 -30
  132. package/lib/web/pdf_find_bar.js +84 -40
  133. package/lib/web/pdf_find_controller.js +495 -184
  134. package/lib/web/pdf_find_utils.js +111 -0
  135. package/lib/web/pdf_history.js +190 -53
  136. package/lib/web/pdf_link_service.js +137 -76
  137. package/lib/web/pdf_outline_viewer.js +73 -22
  138. package/lib/web/pdf_page_view.js +196 -63
  139. package/lib/web/pdf_presentation_mode.js +99 -34
  140. package/lib/web/pdf_print_service.js +57 -11
  141. package/lib/web/pdf_rendering_queue.js +27 -5
  142. package/lib/web/pdf_sidebar.js +120 -67
  143. package/lib/web/pdf_sidebar_resizer.js +42 -16
  144. package/lib/web/pdf_single_page_viewer.js +74 -66
  145. package/lib/web/pdf_thumbnail_view.js +103 -32
  146. package/lib/web/pdf_thumbnail_viewer.js +64 -24
  147. package/lib/web/pdf_viewer.component.js +112 -32
  148. package/lib/web/pdf_viewer.js +91 -52
  149. package/lib/web/preferences.js +275 -80
  150. package/lib/web/secondary_toolbar.js +165 -40
  151. package/lib/web/text_layer_builder.js +162 -65
  152. package/lib/web/toolbar.js +78 -43
  153. package/lib/web/ui_utils.js +462 -136
  154. package/lib/web/view_history.js +215 -67
  155. package/lib/web/viewer_compatibility.js +4 -13
  156. package/package.json +5 -4
  157. package/web/pdf_viewer.css +58 -1
  158. package/web/pdf_viewer.js +6346 -3919
  159. package/web/pdf_viewer.js.map +1 -1
  160. package/lib/test/unit/fonts_spec.js +0 -81
  161. package/lib/web/dom_events.js +0 -137
@@ -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 2017 Mozilla Foundation
5
+ * Copyright 2018 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.
@@ -19,25 +19,34 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
24
+ var _util = require("../../shared/util");
25
25
 
26
- var _util = require('../../shared/util');
26
+ var _is_node = _interopRequireDefault(require("../../shared/is_node"));
27
27
 
28
- var _is_node = require('../../shared/is_node');
28
+ var _node_stream = require("../../display/node_stream");
29
29
 
30
- var _is_node2 = _interopRequireDefault(_is_node);
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
31
 
32
- var _node_stream = require('../../display/node_stream');
32
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
33
33
 
34
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
35
+
36
+ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
37
+
38
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
39
+
40
+ (0, _util.assert)((0, _is_node.default)());
35
41
 
36
- (0, _util.assert)((0, _is_node2.default)());
37
42
  var path = require('path');
43
+
38
44
  var url = require('url');
45
+
39
46
  var http = require('http');
47
+
40
48
  var fs = require('fs');
49
+
41
50
  describe('node_stream', function () {
42
51
  var server = null;
43
52
  var port = null;
@@ -49,9 +58,10 @@ describe('node_stream', function () {
49
58
  fs.lstat(filePath, function (error, stat) {
50
59
  if (error) {
51
60
  response.writeHead(404);
52
- response.end('File ' + request.url + ' not found!');
61
+ response.end("File ".concat(request.url, " not found!"));
53
62
  return;
54
63
  }
64
+
55
65
  if (!request.headers['range']) {
56
66
  var contentLength = stat.size;
57
67
  var stream = fs.createReadStream(filePath);
@@ -73,7 +83,11 @@ describe('node_stream', function () {
73
83
  start: start,
74
84
  end: end
75
85
  });
76
- response.writeHead(206, { 'Content-Type': 'application/pdf' });
86
+
87
+ response.writeHead(206, {
88
+ 'Content-Type': 'application/pdf'
89
+ });
90
+
77
91
  _stream.pipe(response);
78
92
  }
79
93
  });
@@ -87,7 +101,7 @@ describe('node_stream', function () {
87
101
  });
88
102
  it('read both http(s) and filesystem pdf files', function (done) {
89
103
  var stream1 = new _node_stream.PDFNodeStream({
90
- url: 'http://127.0.0.1:' + port + '/tracemonkey.pdf',
104
+ url: "http://127.0.0.1:".concat(port, "/tracemonkey.pdf"),
91
105
  rangeChunkSize: 65536,
92
106
  disableStream: true,
93
107
  disableRange: true
@@ -100,38 +114,41 @@ describe('node_stream', function () {
100
114
  });
101
115
  var fullReader1 = stream1.getFullReader();
102
116
  var fullReader2 = stream2.getFullReader();
103
- var isStreamingSupported1 = void 0,
104
- isRangeSupported1 = void 0;
117
+ var isStreamingSupported1, isRangeSupported1;
105
118
  var promise1 = fullReader1.headersReady.then(function () {
106
119
  isStreamingSupported1 = fullReader1.isStreamingSupported;
107
120
  isRangeSupported1 = fullReader1.isRangeSupported;
108
121
  });
109
- var isStreamingSupported2 = void 0,
110
- isRangeSupported2 = void 0;
122
+ var isStreamingSupported2, isRangeSupported2;
111
123
  var promise2 = fullReader2.headersReady.then(function () {
112
124
  isStreamingSupported2 = fullReader2.isStreamingSupported;
113
125
  isRangeSupported2 = fullReader2.isRangeSupported;
114
126
  });
115
127
  var len1 = 0,
116
128
  len2 = 0;
129
+
117
130
  var read1 = function read1() {
118
131
  return fullReader1.read().then(function (result) {
119
132
  if (result.done) {
120
133
  return;
121
134
  }
135
+
122
136
  len1 += result.value.byteLength;
123
137
  return read1();
124
138
  });
125
139
  };
140
+
126
141
  var read2 = function read2() {
127
142
  return fullReader2.read().then(function (result) {
128
143
  if (result.done) {
129
144
  return;
130
145
  }
146
+
131
147
  len2 += result.value.byteLength;
132
148
  return read2();
133
149
  });
134
150
  };
151
+
135
152
  var readPromise = Promise.all([read1(), read2(), promise1, promise2]);
136
153
  readPromise.then(function (result) {
137
154
  expect(isStreamingSupported1).toEqual(false);
@@ -148,7 +165,7 @@ describe('node_stream', function () {
148
165
  it('read custom ranges for both http(s) and filesystem urls', function (done) {
149
166
  var rangeSize = 32768;
150
167
  var stream1 = new _node_stream.PDFNodeStream({
151
- url: 'http://127.0.0.1:' + port + '/tracemonkey.pdf',
168
+ url: "http://127.0.0.1:".concat(port, "/tracemonkey.pdf"),
152
169
  length: pdfLength,
153
170
  rangeChunkSize: rangeSize,
154
171
  disableStream: true,
@@ -163,12 +180,8 @@ describe('node_stream', function () {
163
180
  });
164
181
  var fullReader1 = stream1.getFullReader();
165
182
  var fullReader2 = stream2.getFullReader();
166
- var isStreamingSupported1 = void 0,
167
- isRangeSupported1 = void 0,
168
- fullReaderCancelled1 = void 0;
169
- var isStreamingSupported2 = void 0,
170
- isRangeSupported2 = void 0,
171
- fullReaderCancelled2 = void 0;
183
+ var isStreamingSupported1, isRangeSupported1, fullReaderCancelled1;
184
+ var isStreamingSupported2, isRangeSupported2, fullReaderCancelled2;
172
185
  var promise1 = fullReader1.headersReady.then(function () {
173
186
  isStreamingSupported1 = fullReader1.isStreamingSupported;
174
187
  isRangeSupported1 = fullReader1.isRangeSupported;
@@ -186,19 +199,30 @@ describe('node_stream', function () {
186
199
  var range12Reader = stream1.getRangeReader(pdfLength - tailSize, pdfLength);
187
200
  var range21Reader = stream2.getRangeReader(pdfLength - tailSize - rangeSize, pdfLength - tailSize);
188
201
  var range22Reader = stream2.getRangeReader(pdfLength - tailSize, pdfLength);
189
- var result11 = { value: 0 },
190
- result12 = { value: 0 };
191
- var result21 = { value: 0 },
192
- result22 = { value: 0 };
202
+ var result11 = {
203
+ value: 0
204
+ },
205
+ result12 = {
206
+ value: 0
207
+ };
208
+ var result21 = {
209
+ value: 0
210
+ },
211
+ result22 = {
212
+ value: 0
213
+ };
214
+
193
215
  var read = function read(reader, lenResult) {
194
216
  return reader.read().then(function (result) {
195
217
  if (result.done) {
196
218
  return;
197
219
  }
220
+
198
221
  lenResult.value += result.value.byteLength;
199
222
  return read(reader, lenResult);
200
223
  });
201
224
  };
225
+
202
226
  var readPromises = Promise.all([read(range11Reader, result11), read(range12Reader, result12), read(range21Reader, result21), read(range22Reader, result22), promise1, promise2]);
203
227
  readPromises.then(function () {
204
228
  expect(result11.value).toEqual(rangeSize);
@@ -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 2017 Mozilla Foundation
5
+ * Copyright 2018 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.
@@ -19,13 +19,15 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- var _parser = require('../../core/parser');
24
+ var _parser = require("../../core/parser");
25
25
 
26
- var _primitives = require('../../core/primitives');
26
+ var _util = require("../../shared/util");
27
27
 
28
- var _stream = require('../../core/stream');
28
+ var _primitives = require("../../core/primitives");
29
+
30
+ var _stream = require("../../core/stream");
29
31
 
30
32
  describe('parser', function () {
31
33
  describe('Lexer', function () {
@@ -37,6 +39,7 @@ describe('parser', function () {
37
39
  });
38
40
  it('should parse PostScript numbers', function () {
39
41
  var numbers = ['-.002', '34.5', '-3.62', '123.6e10', '1E-5', '-1.', '0.0', '123', '-98', '43445', '0', '+17'];
42
+
40
43
  for (var i = 0, ii = numbers.length; i < ii; i++) {
41
44
  var num = numbers[i];
42
45
  var input = new _stream.StringStream(num);
@@ -58,10 +61,31 @@ describe('parser', function () {
58
61
  expect(result).toEqual(205.88);
59
62
  });
60
63
  it('should ignore line-breaks between operator and digit in number', function () {
61
- var input = new _stream.StringStream('-\r\n205.88');
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);
70
+ });
71
+ it('should treat a single decimal point as zero', function () {
72
+ var input = new _stream.StringStream('.');
62
73
  var lexer = new _parser.Lexer(input);
63
- var result = lexer.getNumber();
64
- expect(result).toEqual(-205.88);
74
+ expect(lexer.getNumber()).toEqual(0);
75
+ var numbers = ['..', '-.', '+.', '-\r\n.', '+\r\n.'];
76
+
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
+ };
85
+
86
+ for (var _i = 0; _i < numbers.length; _i++) {
87
+ _loop();
88
+ }
65
89
  });
66
90
  it('should handle glued numbers and operators', function () {
67
91
  var input = new _stream.StringStream('123ET');
@@ -72,10 +96,12 @@ describe('parser', function () {
72
96
  });
73
97
  it('should stop parsing strings at the end of stream', function () {
74
98
  var input = new _stream.StringStream('(1$4)');
99
+
75
100
  input.getByte = function (super_getByte) {
76
101
  var ch = super_getByte.call(input);
77
102
  return ch === 0x24 ? -1 : ch;
78
103
  }.bind(input, input.getByte);
104
+
79
105
  var lexer = new _parser.Lexer(input);
80
106
  var result = lexer.getString();
81
107
  expect(result).toEqual('1');
@@ -95,6 +121,7 @@ describe('parser', function () {
95
121
  it('should handle Names with invalid usage of NUMBER SIGN (#)', function () {
96
122
  var inputNames = ['/# 680 0 R', '/#AQwerty', '/#A<</B'];
97
123
  var expectedNames = ['#', '#AQwerty', '#A'];
124
+
98
125
  for (var i = 0, ii = inputNames.length; i < ii; i++) {
99
126
  var input = new _stream.StringStream(inputNames[i]);
100
127
  var lexer = new _parser.Lexer(input);
@@ -0,0 +1,230 @@
1
+ /**
2
+ * @licstart The following is the entire license notice for the
3
+ * Javascript code in this page
4
+ *
5
+ * Copyright 2018 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 _test_utils = require("./test_utils");
25
+
26
+ var _ui_utils = require("../../web/ui_utils");
27
+
28
+ var _api = require("../../display/api");
29
+
30
+ var _pdf_find_controller = require("../../web/pdf_find_controller");
31
+
32
+ var _pdf_link_service = require("../../web/pdf_link_service");
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); }
51
+
52
+ var MockLinkService =
53
+ /*#__PURE__*/
54
+ function (_SimpleLinkService) {
55
+ _inherits(MockLinkService, _SimpleLinkService);
56
+
57
+ function MockLinkService() {
58
+ var _this;
59
+
60
+ _classCallCheck(this, MockLinkService);
61
+
62
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(MockLinkService).call(this));
63
+ _this._page = 1;
64
+ _this._pdfDocument = null;
65
+ return _this;
66
+ }
67
+
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;
94
+ beforeEach(function (done) {
95
+ var loadingTask = (0, _api.getDocument)((0, _test_utils.buildGetDocumentParams)('tracemonkey.pdf'));
96
+ loadingTask.promise.then(function (pdfDocument) {
97
+ eventBus = new _ui_utils.EventBus();
98
+ var linkService = new MockLinkService();
99
+ linkService.setDocument(pdfDocument);
100
+ pdfFindController = new _pdf_find_controller.PDFFindController({
101
+ linkService: linkService,
102
+ eventBus: eventBus
103
+ });
104
+ pdfFindController.setDocument(pdfDocument);
105
+ done();
106
+ });
107
+ });
108
+ afterEach(function () {
109
+ eventBus = null;
110
+ pdfFindController = null;
111
+ });
112
+
113
+ function testSearch(_ref) {
114
+ var parameters = _ref.parameters,
115
+ matchesPerPage = _ref.matchesPerPage,
116
+ selectedMatch = _ref.selectedMatch;
117
+ return new Promise(function (resolve) {
118
+ pdfFindController.executeCommand('find', parameters);
119
+ var totalPages = matchesPerPage.length;
120
+
121
+ for (var i = totalPages - 1; i >= 0; i--) {
122
+ if (matchesPerPage[i] > 0) {
123
+ totalPages = i + 1;
124
+ break;
125
+ }
126
+ }
127
+
128
+ var totalMatches = matchesPerPage.reduce(function (a, b) {
129
+ return a + b;
130
+ });
131
+ eventBus.on('updatefindmatchescount', function onUpdateFindMatchesCount(evt) {
132
+ if (pdfFindController.pageMatches.length !== totalPages) {
133
+ return;
134
+ }
135
+
136
+ eventBus.off('updatefindmatchescount', onUpdateFindMatchesCount);
137
+ expect(evt.matchesCount.total).toBe(totalMatches);
138
+
139
+ for (var _i = 0; _i < totalPages; _i++) {
140
+ expect(pdfFindController.pageMatches[_i].length).toEqual(matchesPerPage[_i]);
141
+ }
142
+
143
+ expect(pdfFindController.selected.pageIdx).toEqual(selectedMatch.pageIndex);
144
+ expect(pdfFindController.selected.matchIdx).toEqual(selectedMatch.matchIndex);
145
+ resolve();
146
+ });
147
+ });
148
+ }
149
+
150
+ it('performs a normal search', function (done) {
151
+ testSearch({
152
+ parameters: {
153
+ query: 'Dynamic',
154
+ caseSensitive: false,
155
+ entireWord: false,
156
+ phraseSearch: true,
157
+ findPrevious: false
158
+ },
159
+ matchesPerPage: [11, 5, 0, 3, 0, 0, 0, 1, 1, 1, 0, 3, 4, 4],
160
+ selectedMatch: {
161
+ pageIndex: 0,
162
+ matchIndex: 0
163
+ }
164
+ }).then(done);
165
+ });
166
+ it('performs a normal search and finds the previous result', function (done) {
167
+ testSearch({
168
+ parameters: {
169
+ query: 'conference',
170
+ caseSensitive: false,
171
+ entireWord: false,
172
+ phraseSearch: true,
173
+ findPrevious: true
174
+ },
175
+ matchesPerPage: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5],
176
+ selectedMatch: {
177
+ pageIndex: 13,
178
+ matchIndex: 4
179
+ }
180
+ }).then(done);
181
+ });
182
+ it('performs a case sensitive search', function (done) {
183
+ testSearch({
184
+ parameters: {
185
+ query: 'Dynamic',
186
+ caseSensitive: true,
187
+ entireWord: false,
188
+ phraseSearch: true,
189
+ findPrevious: false
190
+ },
191
+ matchesPerPage: [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3],
192
+ selectedMatch: {
193
+ pageIndex: 0,
194
+ matchIndex: 0
195
+ }
196
+ }).then(done);
197
+ });
198
+ it('performs an entire word search', function (done) {
199
+ testSearch({
200
+ parameters: {
201
+ query: 'Government',
202
+ caseSensitive: false,
203
+ entireWord: true,
204
+ phraseSearch: true,
205
+ findPrevious: false
206
+ },
207
+ matchesPerPage: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
208
+ selectedMatch: {
209
+ pageIndex: 12,
210
+ matchIndex: 0
211
+ }
212
+ }).then(done);
213
+ });
214
+ it('performs a multiple term (no phrase) search', function (done) {
215
+ testSearch({
216
+ parameters: {
217
+ query: 'alternate solution',
218
+ caseSensitive: false,
219
+ entireWord: false,
220
+ phraseSearch: false,
221
+ findPrevious: false
222
+ },
223
+ matchesPerPage: [0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0],
224
+ selectedMatch: {
225
+ pageIndex: 5,
226
+ matchIndex: 0
227
+ }
228
+ }).then(done);
229
+ });
230
+ });
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @licstart The following is the entire license notice for the
3
+ * Javascript code in this page
4
+ *
5
+ * Copyright 2018 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 _pdf_find_utils = require("../../web/pdf_find_utils");
25
+
26
+ describe('pdf_find_utils', function () {
27
+ describe('getCharacterType', function () {
28
+ it('gets expected character types', function () {
29
+ var characters = {
30
+ 'A': _pdf_find_utils.CharacterType.ALPHA_LETTER,
31
+ 'a': _pdf_find_utils.CharacterType.ALPHA_LETTER,
32
+ '0': _pdf_find_utils.CharacterType.ALPHA_LETTER,
33
+ '5': _pdf_find_utils.CharacterType.ALPHA_LETTER,
34
+ '\xC4': _pdf_find_utils.CharacterType.ALPHA_LETTER,
35
+ '\xE4': _pdf_find_utils.CharacterType.ALPHA_LETTER,
36
+ '_': _pdf_find_utils.CharacterType.ALPHA_LETTER,
37
+ ' ': _pdf_find_utils.CharacterType.SPACE,
38
+ '\t': _pdf_find_utils.CharacterType.SPACE,
39
+ '\r': _pdf_find_utils.CharacterType.SPACE,
40
+ '\n': _pdf_find_utils.CharacterType.SPACE,
41
+ '\xA0': _pdf_find_utils.CharacterType.SPACE,
42
+ '-': _pdf_find_utils.CharacterType.PUNCT,
43
+ ',': _pdf_find_utils.CharacterType.PUNCT,
44
+ '.': _pdf_find_utils.CharacterType.PUNCT,
45
+ ';': _pdf_find_utils.CharacterType.PUNCT,
46
+ ':': _pdf_find_utils.CharacterType.PUNCT,
47
+ "\u2122": _pdf_find_utils.CharacterType.ALPHA_LETTER,
48
+ "\u0E25": _pdf_find_utils.CharacterType.THAI_LETTER,
49
+ "\u4000": _pdf_find_utils.CharacterType.HAN_LETTER,
50
+ "\uF950": _pdf_find_utils.CharacterType.HAN_LETTER,
51
+ "\u30C0": _pdf_find_utils.CharacterType.KATAKANA_LETTER,
52
+ "\u3050": _pdf_find_utils.CharacterType.HIRAGANA_LETTER,
53
+ "\uFF80": _pdf_find_utils.CharacterType.HALFWIDTH_KATAKANA_LETTER
54
+ };
55
+
56
+ for (var character in characters) {
57
+ var charCode = character.charCodeAt(0);
58
+ var type = characters[character];
59
+ expect((0, _pdf_find_utils.getCharacterType)(charCode)).toEqual(type);
60
+ }
61
+ });
62
+ });
63
+ });
@@ -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 2017 Mozilla Foundation
5
+ * Copyright 2018 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.
@@ -19,9 +19,9 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- var _pdf_history = require('../../web/pdf_history');
24
+ var _pdf_history = require("../../web/pdf_history");
25
25
 
26
26
  describe('pdf_history', function () {
27
27
  describe('isDestHashesEqual', function () {
@@ -34,7 +34,9 @@ describe('pdf_history', function () {
34
34
  var destArrayString = JSON.stringify([{
35
35
  num: 3757,
36
36
  gen: 0
37
- }, { name: 'XYZ' }, 92.918, 748.972, null]);
37
+ }, {
38
+ name: 'XYZ'
39
+ }, 92.918, 748.972, null]);
38
40
  expect((0, _pdf_history.isDestHashesEqual)(destArrayString, 'page.157')).toEqual(false);
39
41
  expect((0, _pdf_history.isDestHashesEqual)('page.157', destArrayString)).toEqual(false);
40
42
  });
@@ -48,23 +50,33 @@ describe('pdf_history', function () {
48
50
  var firstDest = [{
49
51
  num: 1,
50
52
  gen: 0
51
- }, { name: 'XYZ' }, 0, 375, null];
53
+ }, {
54
+ name: 'XYZ'
55
+ }, 0, 375, null];
52
56
  var secondDest = [{
53
57
  num: 5,
54
58
  gen: 0
55
- }, { name: 'XYZ' }, 0, 375, null];
59
+ }, {
60
+ name: 'XYZ'
61
+ }, 0, 375, null];
56
62
  var thirdDest = [{
57
63
  num: 1,
58
64
  gen: 0
59
- }, { name: 'XYZ' }, 750, 0, null];
65
+ }, {
66
+ name: 'XYZ'
67
+ }, 750, 0, null];
60
68
  var fourthDest = [{
61
69
  num: 1,
62
70
  gen: 0
63
- }, { name: 'XYZ' }, 0, 375, 1.0];
71
+ }, {
72
+ name: 'XYZ'
73
+ }, 0, 375, 1.0];
64
74
  var fifthDest = [{
65
75
  gen: 0,
66
76
  num: 1
67
- }, { name: 'XYZ' }, 0, 375, null];
77
+ }, {
78
+ name: 'XYZ'
79
+ }, 0, 375, null];
68
80
  it('should reject non-equal destination arrays', function () {
69
81
  expect((0, _pdf_history.isDestArraysEqual)(firstDest, undefined)).toEqual(false);
70
82
  expect((0, _pdf_history.isDestArraysEqual)(firstDest, [1, 2, 3, 4, 5])).toEqual(false);