pdfjs-dist 2.0.943 → 2.4.456
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8286 -14230
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +25500 -26628
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +57878 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +2887 -4094
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +855 -778
- package/lib/core/arithmetic_decoder.js +325 -311
- package/lib/core/bidi.js +117 -50
- package/lib/core/ccitt.js +251 -89
- package/lib/core/ccitt_stream.js +26 -16
- package/lib/core/cff_parser.js +525 -197
- package/lib/core/charsets.js +6 -5
- package/lib/core/chunked_stream.js +541 -406
- package/lib/core/cmap.js +368 -253
- package/lib/core/colorspace.js +781 -800
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +609 -422
- package/lib/core/document.js +649 -481
- package/lib/core/encodings.js +33 -24
- package/lib/core/evaluator.js +1471 -736
- package/lib/core/font_renderer.js +289 -149
- package/lib/core/fonts.js +1067 -413
- package/lib/core/function.js +517 -287
- package/lib/core/glyphlist.js +4529 -4527
- package/lib/core/image.js +232 -114
- package/lib/core/image_utils.js +94 -0
- package/lib/core/jbig2.js +711 -342
- package/lib/core/jbig2_stream.js +31 -19
- package/lib/core/jpeg_stream.js +151 -26
- package/lib/core/jpg.js +433 -181
- package/lib/core/jpx.js +551 -143
- package/lib/core/jpx_stream.js +40 -28
- package/lib/core/metrics.js +2931 -2931
- package/lib/core/murmurhash3.js +104 -97
- package/lib/core/obj.js +1561 -1053
- package/lib/core/operator_list.js +192 -64
- package/lib/core/parser.js +1162 -864
- package/lib/core/pattern.js +224 -75
- package/lib/core/pdf_manager.js +154 -285
- package/lib/core/primitives.js +145 -69
- package/lib/core/ps_parser.js +212 -162
- package/lib/core/standard_fonts.js +245 -244
- package/lib/core/stream.js +353 -81
- package/lib/core/type1_parser.js +218 -68
- package/lib/core/unicode.js +1682 -1655
- package/lib/core/worker.js +233 -302
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +808 -862
- package/lib/display/api.js +1778 -1462
- package/lib/display/api_compatibility.js +14 -9
- package/lib/display/canvas.js +463 -140
- package/lib/display/content_disposition.js +86 -58
- package/lib/display/display_utils.js +524 -0
- package/lib/display/fetch_stream.js +202 -274
- package/lib/display/font_loader.js +311 -333
- package/lib/display/metadata.js +98 -88
- package/lib/display/network.js +343 -347
- package/lib/display/network_utils.js +46 -26
- package/lib/display/node_stream.js +326 -404
- package/lib/display/pattern_helper.js +168 -69
- package/lib/display/svg.js +1296 -885
- package/lib/display/text_layer.js +229 -103
- package/lib/display/transport_stream.js +290 -250
- package/lib/display/webgl.js +116 -83
- package/lib/display/worker_options.js +6 -5
- package/lib/display/xml_parser.js +358 -337
- package/lib/examples/node/domstubs.js +95 -39
- package/lib/pdf.js +49 -31
- package/lib/pdf.worker.js +7 -5
- package/lib/shared/compatibility.js +3 -145
- package/lib/shared/is_node.js +8 -7
- package/lib/shared/message_handler.js +367 -314
- package/lib/shared/util.js +421 -415
- package/lib/test/unit/annotation_spec.js +1570 -690
- package/lib/test/unit/api_spec.js +855 -493
- package/lib/test/unit/bidi_spec.js +12 -12
- package/lib/test/unit/cff_parser_spec.js +88 -61
- package/lib/test/unit/clitests_helper.js +9 -12
- package/lib/test/unit/cmap_spec.js +140 -88
- package/lib/test/unit/colorspace_spec.js +204 -152
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +194 -182
- package/lib/test/unit/custom_spec.js +50 -64
- package/lib/test/unit/display_svg_spec.js +53 -38
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +17 -22
- package/lib/test/unit/encodings_spec.js +15 -57
- package/lib/test/unit/evaluator_spec.js +90 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +219 -205
- package/lib/test/unit/jasmine-boot.js +68 -39
- package/lib/test/unit/message_handler_spec.js +187 -160
- package/lib/test/unit/metadata_spec.js +87 -34
- package/lib/test/unit/murmurhash3_spec.js +13 -13
- package/lib/test/unit/network_spec.js +26 -59
- package/lib/test/unit/network_utils_spec.js +187 -121
- package/lib/test/unit/node_stream_spec.js +98 -90
- package/lib/test/unit/parser_spec.js +173 -131
- package/lib/test/unit/pdf_find_controller_spec.js +148 -67
- package/lib/test/unit/pdf_find_utils_spec.js +35 -34
- package/lib/test/unit/pdf_history_spec.js +45 -33
- package/lib/test/unit/primitives_spec.js +161 -126
- package/lib/test/unit/stream_spec.js +22 -15
- package/lib/test/unit/test_utils.js +149 -98
- package/lib/test/unit/testreporter.js +36 -18
- package/lib/test/unit/type1_parser_spec.js +46 -44
- package/lib/test/unit/ui_utils_spec.js +388 -372
- package/lib/test/unit/unicode_spec.js +49 -46
- package/lib/test/unit/util_spec.js +144 -248
- package/lib/web/annotation_layer_builder.js +75 -95
- package/lib/web/app.js +1538 -1147
- package/lib/web/app_options.js +116 -104
- package/lib/web/base_viewer.js +950 -775
- package/lib/web/chromecom.js +217 -225
- package/lib/web/debugger.js +236 -148
- package/lib/web/download_manager.js +50 -50
- package/lib/web/firefox_print_service.js +51 -33
- package/lib/web/firefoxcom.js +225 -352
- package/lib/web/genericcom.js +30 -93
- package/lib/web/genericl10n.js +26 -143
- package/lib/web/grab_to_pan.js +57 -33
- package/lib/web/interfaces.js +105 -232
- package/lib/web/overlay_manager.js +73 -227
- package/lib/web/password_prompt.js +44 -62
- package/lib/web/pdf_attachment_viewer.js +118 -123
- package/lib/web/pdf_cursor_tools.js +89 -93
- package/lib/web/pdf_document_properties.js +242 -281
- package/lib/web/pdf_find_bar.js +157 -163
- package/lib/web/pdf_find_controller.js +598 -454
- package/lib/web/pdf_find_utils.js +32 -16
- package/lib/web/pdf_history.js +481 -355
- package/lib/web/pdf_link_service.js +355 -323
- package/lib/web/pdf_outline_viewer.js +167 -152
- package/lib/web/pdf_page_view.js +511 -457
- package/lib/web/pdf_presentation_mode.js +347 -335
- package/lib/web/pdf_print_service.js +133 -103
- package/lib/web/pdf_rendering_queue.js +98 -100
- package/lib/web/pdf_sidebar.js +323 -299
- package/lib/web/pdf_sidebar_resizer.js +107 -108
- package/lib/web/pdf_single_page_viewer.js +94 -146
- package/lib/web/pdf_thumbnail_view.js +319 -269
- package/lib/web/pdf_thumbnail_viewer.js +219 -199
- package/lib/web/pdf_viewer.component.js +111 -32
- package/lib/web/pdf_viewer.js +61 -101
- package/lib/web/preferences.js +87 -272
- package/lib/web/secondary_toolbar.js +207 -220
- package/lib/web/text_layer_builder.js +322 -322
- package/lib/web/toolbar.js +227 -180
- package/lib/web/ui_utils.js +476 -421
- package/lib/web/view_history.js +59 -208
- package/lib/web/viewer_compatibility.js +9 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +36 -22
- package/web/pdf_viewer.js +4407 -4516
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -441
- package/lib/shared/streams_polyfill.js +0 -39
- package/lib/shared/url_polyfill.js +0 -50
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/web/dom_events.js +0 -140
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,148 +19,199 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.
|
28
|
-
|
29
|
-
|
27
|
+
exports.buildGetDocumentParams = buildGetDocumentParams;
|
28
|
+
exports.createIdFactory = createIdFactory;
|
29
|
+
exports.TEST_PDFS_PATH = exports.XRefMock = exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = exports.NodeFileReaderFactory = exports.DOMFileReaderFactory = void 0;
|
30
30
|
|
31
|
-
var _util = require(
|
31
|
+
var _util = require("../../shared/util.js");
|
32
32
|
|
33
|
-
var _is_node = require(
|
33
|
+
var _is_node = require("../../shared/is_node.js");
|
34
34
|
|
35
|
-
var
|
35
|
+
var _primitives = require("../../core/primitives.js");
|
36
36
|
|
37
|
-
var
|
37
|
+
var _document = require("../../core/document.js");
|
38
38
|
|
39
|
-
|
39
|
+
class DOMFileReaderFactory {
|
40
|
+
static async fetch(params) {
|
41
|
+
const response = await fetch(params.path);
|
40
42
|
|
41
|
-
|
43
|
+
if (!response.ok) {
|
44
|
+
throw new Error(response.statusText);
|
45
|
+
}
|
42
46
|
|
43
|
-
|
44
|
-
function NodeFileReaderFactory() {
|
45
|
-
_classCallCheck(this, NodeFileReaderFactory);
|
47
|
+
return new Uint8Array((await response.arrayBuffer()));
|
46
48
|
}
|
47
49
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
}]);
|
50
|
+
}
|
51
|
+
|
52
|
+
exports.DOMFileReaderFactory = DOMFileReaderFactory;
|
53
|
+
|
54
|
+
class NodeFileReaderFactory {
|
55
|
+
static async fetch(params) {
|
56
|
+
const fs = require("fs");
|
56
57
|
|
57
|
-
|
58
|
-
|
58
|
+
return new Promise((resolve, reject) => {
|
59
|
+
fs.readFile(params.path, (error, data) => {
|
60
|
+
if (error || !data) {
|
61
|
+
reject(error || new Error(`Empty file for: ${params.path}`));
|
62
|
+
return;
|
63
|
+
}
|
59
64
|
|
60
|
-
|
61
|
-
|
62
|
-
|
65
|
+
resolve(new Uint8Array(data));
|
66
|
+
});
|
67
|
+
});
|
68
|
+
}
|
69
|
+
|
70
|
+
}
|
71
|
+
|
72
|
+
exports.NodeFileReaderFactory = NodeFileReaderFactory;
|
73
|
+
const TEST_PDFS_PATH = {
|
74
|
+
dom: "../pdfs/",
|
75
|
+
node: "./test/pdfs/"
|
63
76
|
};
|
77
|
+
exports.TEST_PDFS_PATH = TEST_PDFS_PATH;
|
78
|
+
|
64
79
|
function buildGetDocumentParams(filename, options) {
|
65
|
-
|
66
|
-
|
80
|
+
const params = Object.create(null);
|
81
|
+
|
82
|
+
if (_is_node.isNodeJS) {
|
67
83
|
params.url = TEST_PDFS_PATH.node + filename;
|
68
84
|
} else {
|
69
85
|
params.url = new URL(TEST_PDFS_PATH.dom + filename, window.location).href;
|
70
86
|
}
|
71
|
-
|
87
|
+
|
88
|
+
for (const option in options) {
|
72
89
|
params[option] = options[option];
|
73
90
|
}
|
91
|
+
|
74
92
|
return params;
|
75
93
|
}
|
76
94
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
95
|
+
class NodeCanvasFactory {
|
96
|
+
create(width, height) {
|
97
|
+
(0, _util.assert)(width > 0 && height > 0, "Invalid canvas size");
|
98
|
+
|
99
|
+
const Canvas = require("canvas");
|
100
|
+
|
101
|
+
const canvas = Canvas.createCanvas(width, height);
|
102
|
+
return {
|
103
|
+
canvas,
|
104
|
+
context: canvas.getContext("2d")
|
105
|
+
};
|
106
|
+
}
|
107
|
+
|
108
|
+
reset(canvasAndContext, width, height) {
|
109
|
+
(0, _util.assert)(canvasAndContext.canvas, "Canvas is not specified");
|
110
|
+
(0, _util.assert)(width > 0 && height > 0, "Invalid canvas size");
|
111
|
+
canvasAndContext.canvas.width = width;
|
112
|
+
canvasAndContext.canvas.height = height;
|
113
|
+
}
|
114
|
+
|
115
|
+
destroy(canvasAndContext) {
|
116
|
+
(0, _util.assert)(canvasAndContext.canvas, "Canvas is not specified");
|
117
|
+
canvasAndContext.canvas.width = 0;
|
118
|
+
canvasAndContext.canvas.height = 0;
|
119
|
+
canvasAndContext.canvas = null;
|
120
|
+
canvasAndContext.context = null;
|
121
|
+
}
|
83
122
|
|
84
|
-
|
123
|
+
}
|
85
124
|
|
125
|
+
exports.NodeCanvasFactory = NodeCanvasFactory;
|
126
|
+
|
127
|
+
class NodeCMapReaderFactory {
|
128
|
+
constructor({
|
129
|
+
baseUrl = null,
|
130
|
+
isCompressed = false
|
131
|
+
}) {
|
86
132
|
this.baseUrl = baseUrl;
|
87
133
|
this.isCompressed = isCompressed;
|
88
134
|
}
|
89
135
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
136
|
+
async fetch({
|
137
|
+
name
|
138
|
+
}) {
|
139
|
+
if (!this.baseUrl) {
|
140
|
+
throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
|
141
|
+
}
|
142
|
+
|
143
|
+
if (!name) {
|
144
|
+
throw new Error("CMap name must be specified.");
|
145
|
+
}
|
94
146
|
|
95
|
-
|
147
|
+
const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
|
148
|
+
const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
|
149
|
+
return new Promise((resolve, reject) => {
|
150
|
+
const fs = require("fs");
|
96
151
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
fs.readFile(url, function (error, data) {
|
107
|
-
if (error || !data) {
|
108
|
-
reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url));
|
109
|
-
return;
|
110
|
-
}
|
111
|
-
resolve({
|
112
|
-
cMapData: new Uint8Array(data),
|
113
|
-
compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE
|
114
|
-
});
|
152
|
+
fs.readFile(url, (error, data) => {
|
153
|
+
if (error || !data) {
|
154
|
+
reject(new Error(error));
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
|
158
|
+
resolve({
|
159
|
+
cMapData: new Uint8Array(data),
|
160
|
+
compressionType
|
115
161
|
});
|
116
162
|
});
|
117
|
-
}
|
118
|
-
|
163
|
+
}).catch(reason => {
|
164
|
+
throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}` + `CMap at: ${url}`);
|
165
|
+
});
|
166
|
+
}
|
119
167
|
|
120
|
-
|
121
|
-
}();
|
168
|
+
}
|
122
169
|
|
123
|
-
|
124
|
-
function XRefMock(array) {
|
125
|
-
_classCallCheck(this, XRefMock);
|
170
|
+
exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
|
126
171
|
|
172
|
+
class XRefMock {
|
173
|
+
constructor(array) {
|
127
174
|
this._map = Object.create(null);
|
128
|
-
|
129
|
-
|
175
|
+
|
176
|
+
for (const key in array) {
|
177
|
+
const obj = array[key];
|
130
178
|
this._map[obj.ref.toString()] = obj.data;
|
131
179
|
}
|
132
180
|
}
|
133
181
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
key: 'fetchIfRef',
|
146
|
-
value: function fetchIfRef(obj) {
|
147
|
-
if (!(0, _primitives.isRef)(obj)) {
|
148
|
-
return obj;
|
149
|
-
}
|
150
|
-
return this.fetch(obj);
|
151
|
-
}
|
152
|
-
}, {
|
153
|
-
key: 'fetchIfRefAsync',
|
154
|
-
value: function fetchIfRefAsync(obj) {
|
155
|
-
return Promise.resolve(this.fetchIfRef(obj));
|
182
|
+
fetch(ref) {
|
183
|
+
return this._map[ref.toString()];
|
184
|
+
}
|
185
|
+
|
186
|
+
fetchAsync(ref) {
|
187
|
+
return Promise.resolve(this.fetch(ref));
|
188
|
+
}
|
189
|
+
|
190
|
+
fetchIfRef(obj) {
|
191
|
+
if (!(0, _primitives.isRef)(obj)) {
|
192
|
+
return obj;
|
156
193
|
}
|
157
|
-
}]);
|
158
194
|
|
159
|
-
|
160
|
-
}
|
195
|
+
return this.fetch(obj);
|
196
|
+
}
|
197
|
+
|
198
|
+
fetchIfRefAsync(obj) {
|
199
|
+
return Promise.resolve(this.fetchIfRef(obj));
|
200
|
+
}
|
201
|
+
|
202
|
+
}
|
161
203
|
|
162
|
-
exports.NodeFileReaderFactory = NodeFileReaderFactory;
|
163
|
-
exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
|
164
204
|
exports.XRefMock = XRefMock;
|
165
|
-
|
166
|
-
|
205
|
+
|
206
|
+
function createIdFactory(pageIndex) {
|
207
|
+
const page = new _document.Page({
|
208
|
+
pdfManager: {
|
209
|
+
get docId() {
|
210
|
+
return "d0";
|
211
|
+
}
|
212
|
+
|
213
|
+
},
|
214
|
+
pageIndex
|
215
|
+
});
|
216
|
+
return page.idFactory;
|
217
|
+
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,13 +19,14 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
|
-
var TestReporter = function
|
24
|
+
var TestReporter = function (browser, appPath) {
|
25
25
|
function send(action, json, cb) {
|
26
26
|
var r = new XMLHttpRequest();
|
27
|
-
r.open(
|
28
|
-
r.setRequestHeader(
|
27
|
+
r.open("POST", action, true);
|
28
|
+
r.setRequestHeader("Content-Type", "application/json");
|
29
|
+
|
29
30
|
r.onreadystatechange = function sendTaskResultOnreadystatechange(e) {
|
30
31
|
if (r.readyState === 4) {
|
31
32
|
if (r.status !== 200) {
|
@@ -37,47 +38,64 @@ var TestReporter = function TestReporter(browser, appPath) {
|
|
37
38
|
}
|
38
39
|
}
|
39
40
|
};
|
40
|
-
|
41
|
+
|
42
|
+
json["browser"] = browser;
|
41
43
|
r.send(JSON.stringify(json));
|
42
44
|
}
|
45
|
+
|
43
46
|
function sendInfo(message) {
|
44
|
-
send(
|
47
|
+
send("/info", {
|
48
|
+
message
|
49
|
+
});
|
45
50
|
}
|
51
|
+
|
46
52
|
function sendResult(status, description, error) {
|
47
53
|
var message = {
|
48
|
-
status
|
49
|
-
description
|
54
|
+
status,
|
55
|
+
description
|
50
56
|
};
|
51
|
-
|
52
|
-
|
57
|
+
|
58
|
+
if (typeof error !== "undefined") {
|
59
|
+
message["error"] = error;
|
53
60
|
}
|
54
|
-
|
61
|
+
|
62
|
+
send("/submit_task_results", message);
|
55
63
|
}
|
64
|
+
|
56
65
|
function sendQuitRequest() {
|
57
|
-
send(
|
66
|
+
send("/tellMeToQuit?path=" + escape(appPath), {});
|
58
67
|
}
|
68
|
+
|
59
69
|
this.now = function () {
|
60
70
|
return new Date().getTime();
|
61
71
|
};
|
72
|
+
|
62
73
|
this.jasmineStarted = function (suiteInfo) {
|
63
74
|
this.runnerStartTime = this.now();
|
64
|
-
sendInfo(
|
75
|
+
sendInfo("Started tests for " + browser + ".");
|
65
76
|
};
|
77
|
+
|
66
78
|
this.suiteStarted = function (result) {};
|
79
|
+
|
67
80
|
this.specStarted = function (result) {};
|
81
|
+
|
68
82
|
this.specDone = function (result) {
|
69
83
|
if (result.failedExpectations.length === 0) {
|
70
|
-
sendResult(
|
84
|
+
sendResult("TEST-PASSED", result.description);
|
71
85
|
} else {
|
72
|
-
var failedMessages =
|
86
|
+
var failedMessages = "";
|
73
87
|
var items = result.failedExpectations;
|
88
|
+
|
74
89
|
for (var i = 0, ii = items.length; i < ii; i++) {
|
75
|
-
failedMessages += items[i].message +
|
90
|
+
failedMessages += items[i].message + " ";
|
76
91
|
}
|
77
|
-
|
92
|
+
|
93
|
+
sendResult("TEST-UNEXPECTED-FAIL", result.description, failedMessages);
|
78
94
|
}
|
79
95
|
};
|
96
|
+
|
80
97
|
this.suiteDone = function (result) {};
|
98
|
+
|
81
99
|
this.jasmineDone = function () {
|
82
100
|
setTimeout(sendQuitRequest, 500);
|
83
101
|
};
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,84 +19,86 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
|
-
var _fonts = require(
|
24
|
+
var _fonts = require("../../core/fonts.js");
|
25
25
|
|
26
|
-
var _stream = require(
|
26
|
+
var _stream = require("../../core/stream.js");
|
27
27
|
|
28
|
-
var _type1_parser = require(
|
28
|
+
var _type1_parser = require("../../core/type1_parser.js");
|
29
29
|
|
30
|
-
describe(
|
31
|
-
it(
|
32
|
-
var stream = new _stream.StringStream(
|
30
|
+
describe("Type1Parser", function () {
|
31
|
+
it("splits tokens", function () {
|
32
|
+
var stream = new _stream.StringStream("/BlueValues[-17 0]noaccess def");
|
33
33
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
34
|
-
expect(parser.getToken()).toEqual(
|
35
|
-
expect(parser.getToken()).toEqual(
|
36
|
-
expect(parser.getToken()).toEqual(
|
37
|
-
expect(parser.getToken()).toEqual(
|
38
|
-
expect(parser.getToken()).toEqual(
|
39
|
-
expect(parser.getToken()).toEqual(
|
40
|
-
expect(parser.getToken()).toEqual(
|
41
|
-
expect(parser.getToken()).toEqual(
|
34
|
+
expect(parser.getToken()).toEqual("/");
|
35
|
+
expect(parser.getToken()).toEqual("BlueValues");
|
36
|
+
expect(parser.getToken()).toEqual("[");
|
37
|
+
expect(parser.getToken()).toEqual("-17");
|
38
|
+
expect(parser.getToken()).toEqual("0");
|
39
|
+
expect(parser.getToken()).toEqual("]");
|
40
|
+
expect(parser.getToken()).toEqual("noaccess");
|
41
|
+
expect(parser.getToken()).toEqual("def");
|
42
42
|
expect(parser.getToken()).toEqual(null);
|
43
43
|
});
|
44
|
-
it(
|
45
|
-
var stream = new _stream.StringStream(
|
44
|
+
it("handles glued tokens", function () {
|
45
|
+
var stream = new _stream.StringStream("dup/CharStrings");
|
46
46
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
47
|
-
expect(parser.getToken()).toEqual(
|
48
|
-
expect(parser.getToken()).toEqual(
|
49
|
-
expect(parser.getToken()).toEqual(
|
47
|
+
expect(parser.getToken()).toEqual("dup");
|
48
|
+
expect(parser.getToken()).toEqual("/");
|
49
|
+
expect(parser.getToken()).toEqual("CharStrings");
|
50
50
|
});
|
51
|
-
it(
|
52
|
-
var stream = new _stream.StringStream(
|
51
|
+
it("ignores whitespace", function () {
|
52
|
+
var stream = new _stream.StringStream("\nab c\t");
|
53
53
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
54
|
-
expect(parser.getToken()).toEqual(
|
55
|
-
expect(parser.getToken()).toEqual(
|
54
|
+
expect(parser.getToken()).toEqual("ab");
|
55
|
+
expect(parser.getToken()).toEqual("c");
|
56
56
|
});
|
57
|
-
it(
|
58
|
-
var stream = new _stream.StringStream(
|
57
|
+
it("parses numbers", function () {
|
58
|
+
var stream = new _stream.StringStream("123");
|
59
59
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
60
60
|
expect(parser.readNumber()).toEqual(123);
|
61
61
|
});
|
62
|
-
it(
|
63
|
-
var stream = new _stream.StringStream(
|
62
|
+
it("parses booleans", function () {
|
63
|
+
var stream = new _stream.StringStream("true false");
|
64
64
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
65
65
|
expect(parser.readBoolean()).toEqual(1);
|
66
66
|
expect(parser.readBoolean()).toEqual(0);
|
67
67
|
});
|
68
|
-
it(
|
69
|
-
var stream = new _stream.StringStream(
|
68
|
+
it("parses number arrays", function () {
|
69
|
+
var stream = new _stream.StringStream("[1 2]");
|
70
70
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
71
71
|
expect(parser.readNumberArray()).toEqual([1, 2]);
|
72
|
-
stream = new _stream.StringStream(
|
72
|
+
stream = new _stream.StringStream("[ 1 2 ]");
|
73
73
|
parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
74
74
|
expect(parser.readNumberArray()).toEqual([1, 2]);
|
75
75
|
});
|
76
|
-
it(
|
77
|
-
var stream = new _stream.StringStream(
|
76
|
+
it("skips comments", function () {
|
77
|
+
var stream = new _stream.StringStream("%!PS-AdobeFont-1.0: CMSY10 003.002\n" + "%%Title: CMSY10\n" + "%Version: 003.002\n" + "FontDirectory");
|
78
78
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
79
|
-
expect(parser.getToken()).toEqual(
|
79
|
+
expect(parser.getToken()).toEqual("FontDirectory");
|
80
80
|
});
|
81
|
-
it(
|
82
|
-
var stream = new _stream.StringStream(
|
81
|
+
it("parses font program", function () {
|
82
|
+
var stream = new _stream.StringStream("/ExpansionFactor 99\n" + "/Subrs 1 array\n" + "dup 0 1 RD x noaccess put\n" + "end\n" + "/CharStrings 46 dict dup begin\n" + "/.notdef 1 RD x ND\n" + "end");
|
83
83
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
84
|
-
var program = parser.extractFontProgram();
|
84
|
+
var program = parser.extractFontProgram({});
|
85
85
|
expect(program.charstrings.length).toEqual(1);
|
86
86
|
expect(program.properties.privateData.ExpansionFactor).toEqual(99);
|
87
87
|
});
|
88
|
-
it(
|
89
|
-
var stream = new _stream.StringStream(
|
88
|
+
it("parses font header font matrix", function () {
|
89
|
+
var stream = new _stream.StringStream("/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def\n");
|
90
90
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
91
91
|
var props = {};
|
92
92
|
parser.extractFontHeader(props);
|
93
93
|
expect(props.fontMatrix).toEqual([0.001, 0, 0, 0.001, 0, 0]);
|
94
94
|
});
|
95
|
-
it(
|
96
|
-
var stream = new _stream.StringStream(
|
95
|
+
it("parses font header encoding", function () {
|
96
|
+
var stream = new _stream.StringStream("/Encoding 256 array\n" + "0 1 255 {1 index exch /.notdef put} for\n" + "dup 33 /arrowright put\n" + "readonly def\n");
|
97
97
|
var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED);
|
98
|
-
var props = {
|
98
|
+
var props = {
|
99
|
+
overridableEncoding: true
|
100
|
+
};
|
99
101
|
parser.extractFontHeader(props);
|
100
|
-
expect(props.builtInEncoding[33]).toEqual(
|
102
|
+
expect(props.builtInEncoding[33]).toEqual("arrowright");
|
101
103
|
});
|
102
104
|
});
|