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,316 +19,343 @@
|
|
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
|
24
|
+
var _util = require("../../shared/util.js");
|
25
25
|
|
26
|
-
var
|
26
|
+
var _api = require("../../display/api.js");
|
27
27
|
|
28
|
-
var
|
28
|
+
var _message_handler = require("../../shared/message_handler.js");
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
describe('message_handler', function () {
|
30
|
+
describe("message_handler", function () {
|
33
31
|
function sleep(ticks) {
|
34
|
-
return Promise.resolve().then(
|
32
|
+
return Promise.resolve().then(() => {
|
35
33
|
return ticks && sleep(ticks - 1);
|
36
34
|
});
|
37
35
|
}
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
expect(
|
36
|
+
|
37
|
+
describe("sendWithStream", function () {
|
38
|
+
it("should return a ReadableStream", function () {
|
39
|
+
const port = new _api.LoopbackPort();
|
40
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
41
|
+
const readable = messageHandler1.sendWithStream("fakeHandler");
|
42
|
+
expect(typeof readable).toEqual("object");
|
43
|
+
expect(typeof readable.getReader).toEqual("function");
|
45
44
|
});
|
46
|
-
it(
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
messageHandler2.on(
|
45
|
+
it("should read using a reader", function (done) {
|
46
|
+
let log = "";
|
47
|
+
const port = new _api.LoopbackPort();
|
48
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
49
|
+
const messageHandler2 = new _message_handler.MessageHandler("worker", "main", port);
|
50
|
+
messageHandler2.on("fakeHandler", (data, sink) => {
|
52
51
|
sink.onPull = function () {
|
53
|
-
log +=
|
52
|
+
log += "p";
|
54
53
|
};
|
54
|
+
|
55
55
|
sink.onCancel = function (reason) {
|
56
|
-
log +=
|
56
|
+
log += "c";
|
57
57
|
};
|
58
|
-
|
59
|
-
|
58
|
+
|
59
|
+
sink.ready.then(() => {
|
60
|
+
sink.enqueue("hi");
|
60
61
|
return sink.ready;
|
61
|
-
}).then(
|
62
|
+
}).then(() => {
|
62
63
|
sink.close();
|
63
64
|
});
|
64
65
|
return sleep(5);
|
65
66
|
});
|
66
|
-
|
67
|
+
const readable = messageHandler1.sendWithStream("fakeHandler", {}, {
|
67
68
|
highWaterMark: 1,
|
68
|
-
|
69
|
+
|
70
|
+
size() {
|
69
71
|
return 1;
|
70
72
|
}
|
73
|
+
|
71
74
|
});
|
72
|
-
|
73
|
-
sleep(10).then(
|
74
|
-
expect(log).toEqual(
|
75
|
+
const reader = readable.getReader();
|
76
|
+
sleep(10).then(() => {
|
77
|
+
expect(log).toEqual("");
|
75
78
|
return reader.read();
|
76
|
-
}).then(
|
77
|
-
expect(log).toEqual(
|
78
|
-
expect(result.value).toEqual(
|
79
|
+
}).then(result => {
|
80
|
+
expect(log).toEqual("p");
|
81
|
+
expect(result.value).toEqual("hi");
|
79
82
|
expect(result.done).toEqual(false);
|
80
83
|
return sleep(10);
|
81
|
-
}).then(
|
84
|
+
}).then(() => {
|
82
85
|
return reader.read();
|
83
|
-
}).then(
|
86
|
+
}).then(result => {
|
84
87
|
expect(result.value).toEqual(undefined);
|
85
88
|
expect(result.done).toEqual(true);
|
86
89
|
done();
|
87
90
|
});
|
88
91
|
});
|
89
|
-
it(
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
messageHandler2.on(
|
92
|
+
it("should not read any data when cancelled", function (done) {
|
93
|
+
let log = "";
|
94
|
+
const port = new _api.LoopbackPort();
|
95
|
+
const messageHandler2 = new _message_handler.MessageHandler("worker", "main", port);
|
96
|
+
messageHandler2.on("fakeHandler", (data, sink) => {
|
94
97
|
sink.onPull = function () {
|
95
|
-
log +=
|
98
|
+
log += "p";
|
96
99
|
};
|
100
|
+
|
97
101
|
sink.onCancel = function (reason) {
|
98
|
-
log +=
|
102
|
+
log += "c";
|
99
103
|
};
|
100
|
-
|
101
|
-
|
102
|
-
|
104
|
+
|
105
|
+
log += "0";
|
106
|
+
sink.ready.then(() => {
|
107
|
+
log += "1";
|
103
108
|
sink.enqueue([1, 2, 3, 4], 4);
|
104
109
|
return sink.ready;
|
105
|
-
}).then(
|
106
|
-
log +=
|
110
|
+
}).then(() => {
|
111
|
+
log += "2";
|
107
112
|
sink.enqueue([5, 6, 7, 8], 4);
|
108
113
|
return sink.ready;
|
109
|
-
}).then(
|
110
|
-
log +=
|
114
|
+
}).then(() => {
|
115
|
+
log += "3";
|
111
116
|
sink.close();
|
112
|
-
},
|
113
|
-
log +=
|
117
|
+
}, () => {
|
118
|
+
log += "4";
|
114
119
|
});
|
115
120
|
});
|
116
|
-
|
117
|
-
|
121
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
122
|
+
const readable = messageHandler1.sendWithStream("fakeHandler", {}, {
|
118
123
|
highWaterMark: 4,
|
119
|
-
|
124
|
+
|
125
|
+
size(arr) {
|
120
126
|
return arr.length;
|
121
127
|
}
|
128
|
+
|
122
129
|
});
|
123
|
-
|
124
|
-
sleep(10).then(
|
125
|
-
expect(log).toEqual(
|
130
|
+
const reader = readable.getReader();
|
131
|
+
sleep(10).then(() => {
|
132
|
+
expect(log).toEqual("01");
|
126
133
|
return reader.read();
|
127
|
-
}).then(
|
134
|
+
}).then(result => {
|
128
135
|
expect(result.value).toEqual([1, 2, 3, 4]);
|
129
136
|
expect(result.done).toEqual(false);
|
130
137
|
return sleep(10);
|
131
|
-
}).then(
|
132
|
-
expect(log).toEqual(
|
133
|
-
return reader.cancel();
|
134
|
-
}).then(
|
135
|
-
expect(log).toEqual(
|
138
|
+
}).then(() => {
|
139
|
+
expect(log).toEqual("01p2");
|
140
|
+
return reader.cancel(new _util.AbortException("reader cancelled."));
|
141
|
+
}).then(() => {
|
142
|
+
expect(log).toEqual("01p2c4");
|
136
143
|
done();
|
137
144
|
});
|
138
145
|
});
|
139
|
-
it(
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
messageHandler2.on(
|
146
|
+
it("should not read when errored", function (done) {
|
147
|
+
let log = "";
|
148
|
+
const port = new _api.LoopbackPort();
|
149
|
+
const messageHandler2 = new _message_handler.MessageHandler("worker", "main", port);
|
150
|
+
messageHandler2.on("fakeHandler", (data, sink) => {
|
144
151
|
sink.onPull = function () {
|
145
|
-
log +=
|
152
|
+
log += "p";
|
146
153
|
};
|
154
|
+
|
147
155
|
sink.onCancel = function (reason) {
|
148
|
-
log +=
|
156
|
+
log += "c";
|
149
157
|
};
|
150
|
-
|
158
|
+
|
159
|
+
log += "0";
|
160
|
+
sink.ready.then(() => {
|
161
|
+
log += "1";
|
151
162
|
sink.enqueue([1, 2, 3, 4], 4);
|
152
163
|
return sink.ready;
|
153
|
-
}).then(
|
154
|
-
log +=
|
155
|
-
sink.error(
|
164
|
+
}).then(() => {
|
165
|
+
log += "e";
|
166
|
+
sink.error(new Error("should not read when errored"));
|
156
167
|
});
|
157
168
|
});
|
158
|
-
|
159
|
-
|
169
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
170
|
+
const readable = messageHandler1.sendWithStream("fakeHandler", {}, {
|
160
171
|
highWaterMark: 4,
|
161
|
-
|
172
|
+
|
173
|
+
size(arr) {
|
162
174
|
return arr.length;
|
163
175
|
}
|
176
|
+
|
164
177
|
});
|
165
|
-
|
166
|
-
sleep(10).then(
|
167
|
-
expect(log).toEqual(
|
178
|
+
const reader = readable.getReader();
|
179
|
+
sleep(10).then(() => {
|
180
|
+
expect(log).toEqual("01");
|
168
181
|
return reader.read();
|
169
|
-
}).then(
|
182
|
+
}).then(result => {
|
170
183
|
expect(result.value).toEqual([1, 2, 3, 4]);
|
171
184
|
expect(result.done).toEqual(false);
|
172
185
|
return reader.read();
|
173
|
-
}).
|
174
|
-
expect(
|
186
|
+
}).catch(reason => {
|
187
|
+
expect(log).toEqual("01pe");
|
188
|
+
expect(reason instanceof _util.UnknownErrorException).toEqual(true);
|
189
|
+
expect(reason.message).toEqual("should not read when errored");
|
175
190
|
done();
|
176
191
|
});
|
177
192
|
});
|
178
|
-
it(
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
messageHandler2.on(
|
193
|
+
it("should read data with blocking promise", function (done) {
|
194
|
+
let log = "";
|
195
|
+
const port = new _api.LoopbackPort();
|
196
|
+
const messageHandler2 = new _message_handler.MessageHandler("worker", "main", port);
|
197
|
+
messageHandler2.on("fakeHandler", (data, sink) => {
|
183
198
|
sink.onPull = function () {
|
184
|
-
log +=
|
199
|
+
log += "p";
|
185
200
|
};
|
201
|
+
|
186
202
|
sink.onCancel = function (reason) {
|
187
|
-
log +=
|
203
|
+
log += "c";
|
188
204
|
};
|
189
|
-
|
190
|
-
|
191
|
-
|
205
|
+
|
206
|
+
log += "0";
|
207
|
+
sink.ready.then(() => {
|
208
|
+
log += "1";
|
192
209
|
sink.enqueue([1, 2, 3, 4], 4);
|
193
210
|
return sink.ready;
|
194
|
-
}).then(
|
195
|
-
log +=
|
211
|
+
}).then(() => {
|
212
|
+
log += "2";
|
196
213
|
sink.enqueue([5, 6, 7, 8], 4);
|
197
214
|
return sink.ready;
|
198
|
-
}).then(
|
215
|
+
}).then(() => {
|
199
216
|
sink.close();
|
200
217
|
});
|
201
218
|
});
|
202
|
-
|
203
|
-
|
219
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
220
|
+
const readable = messageHandler1.sendWithStream("fakeHandler", {}, {
|
204
221
|
highWaterMark: 4,
|
205
|
-
|
222
|
+
|
223
|
+
size(arr) {
|
206
224
|
return arr.length;
|
207
225
|
}
|
226
|
+
|
208
227
|
});
|
209
|
-
|
210
|
-
sleep(10).then(
|
211
|
-
expect(log).toEqual(
|
228
|
+
const reader = readable.getReader();
|
229
|
+
sleep(10).then(() => {
|
230
|
+
expect(log).toEqual("01");
|
212
231
|
return reader.read();
|
213
|
-
}).then(
|
232
|
+
}).then(result => {
|
214
233
|
expect(result.value).toEqual([1, 2, 3, 4]);
|
215
234
|
expect(result.done).toEqual(false);
|
216
235
|
return sleep(10);
|
217
|
-
}).then(
|
218
|
-
expect(log).toEqual(
|
236
|
+
}).then(() => {
|
237
|
+
expect(log).toEqual("01p2");
|
219
238
|
return reader.read();
|
220
|
-
}).then(
|
239
|
+
}).then(result => {
|
221
240
|
expect(result.value).toEqual([5, 6, 7, 8]);
|
222
241
|
expect(result.done).toEqual(false);
|
223
242
|
return sleep(10);
|
224
|
-
}).then(
|
225
|
-
expect(log).toEqual(
|
243
|
+
}).then(() => {
|
244
|
+
expect(log).toEqual("01p2p");
|
226
245
|
return reader.read();
|
227
|
-
}).then(
|
246
|
+
}).then(result => {
|
228
247
|
expect(result.value).toEqual(undefined);
|
229
248
|
expect(result.done).toEqual(true);
|
230
249
|
done();
|
231
250
|
});
|
232
251
|
});
|
233
|
-
it(
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
messageHandler2.on(
|
252
|
+
it("should read data with blocking promise and buffer whole data" + " into stream", function (done) {
|
253
|
+
let log = "";
|
254
|
+
const port = new _api.LoopbackPort();
|
255
|
+
const messageHandler2 = new _message_handler.MessageHandler("worker", "main", port);
|
256
|
+
messageHandler2.on("fakeHandler", (data, sink) => {
|
238
257
|
sink.onPull = function () {
|
239
|
-
log +=
|
258
|
+
log += "p";
|
240
259
|
};
|
260
|
+
|
241
261
|
sink.onCancel = function (reason) {
|
242
|
-
log +=
|
262
|
+
log += "c";
|
243
263
|
};
|
244
|
-
|
245
|
-
|
246
|
-
|
264
|
+
|
265
|
+
log += "0";
|
266
|
+
sink.ready.then(() => {
|
267
|
+
log += "1";
|
247
268
|
sink.enqueue([1, 2, 3, 4], 4);
|
248
269
|
return sink.ready;
|
249
|
-
}).then(
|
250
|
-
log +=
|
270
|
+
}).then(() => {
|
271
|
+
log += "2";
|
251
272
|
sink.enqueue([5, 6, 7, 8], 4);
|
252
273
|
return sink.ready;
|
253
|
-
}).then(
|
274
|
+
}).then(() => {
|
254
275
|
sink.close();
|
255
276
|
});
|
256
277
|
return sleep(10);
|
257
278
|
});
|
258
|
-
|
259
|
-
|
279
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
280
|
+
const readable = messageHandler1.sendWithStream("fakeHandler", {}, {
|
260
281
|
highWaterMark: 8,
|
261
|
-
|
282
|
+
|
283
|
+
size(arr) {
|
262
284
|
return arr.length;
|
263
285
|
}
|
286
|
+
|
264
287
|
});
|
265
|
-
|
266
|
-
sleep(10).then(
|
267
|
-
expect(log).toEqual(
|
288
|
+
const reader = readable.getReader();
|
289
|
+
sleep(10).then(() => {
|
290
|
+
expect(log).toEqual("012");
|
268
291
|
return reader.read();
|
269
|
-
}).then(
|
292
|
+
}).then(result => {
|
270
293
|
expect(result.value).toEqual([1, 2, 3, 4]);
|
271
294
|
expect(result.done).toEqual(false);
|
272
295
|
return sleep(10);
|
273
|
-
}).then(
|
274
|
-
expect(log).toEqual(
|
296
|
+
}).then(() => {
|
297
|
+
expect(log).toEqual("012p");
|
275
298
|
return reader.read();
|
276
|
-
}).then(
|
299
|
+
}).then(result => {
|
277
300
|
expect(result.value).toEqual([5, 6, 7, 8]);
|
278
301
|
expect(result.done).toEqual(false);
|
279
302
|
return sleep(10);
|
280
|
-
}).then(
|
281
|
-
expect(log).toEqual(
|
303
|
+
}).then(() => {
|
304
|
+
expect(log).toEqual("012p");
|
282
305
|
return reader.read();
|
283
|
-
}).then(
|
306
|
+
}).then(result => {
|
284
307
|
expect(result.value).toEqual(undefined);
|
285
308
|
expect(result.done).toEqual(true);
|
286
309
|
done();
|
287
310
|
});
|
288
311
|
});
|
289
|
-
it(
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
messageHandler2.on(
|
312
|
+
it("should ignore any pull after close is called", function (done) {
|
313
|
+
let log = "";
|
314
|
+
const port = new _api.LoopbackPort();
|
315
|
+
const capability = (0, _util.createPromiseCapability)();
|
316
|
+
const messageHandler2 = new _message_handler.MessageHandler("worker", "main", port);
|
317
|
+
messageHandler2.on("fakeHandler", (data, sink) => {
|
295
318
|
sink.onPull = function () {
|
296
|
-
log +=
|
319
|
+
log += "p";
|
297
320
|
};
|
321
|
+
|
298
322
|
sink.onCancel = function (reason) {
|
299
|
-
log +=
|
323
|
+
log += "c";
|
300
324
|
};
|
301
|
-
|
302
|
-
|
303
|
-
|
325
|
+
|
326
|
+
log += "0";
|
327
|
+
sink.ready.then(() => {
|
328
|
+
log += "1";
|
304
329
|
sink.enqueue([1, 2, 3, 4], 4);
|
305
330
|
});
|
306
|
-
return capability.promise.then(
|
331
|
+
return capability.promise.then(() => {
|
307
332
|
sink.close();
|
308
333
|
});
|
309
334
|
});
|
310
|
-
|
311
|
-
|
335
|
+
const messageHandler1 = new _message_handler.MessageHandler("main", "worker", port);
|
336
|
+
const readable = messageHandler1.sendWithStream("fakeHandler", {}, {
|
312
337
|
highWaterMark: 10,
|
313
|
-
|
338
|
+
|
339
|
+
size(arr) {
|
314
340
|
return arr.length;
|
315
341
|
}
|
342
|
+
|
316
343
|
});
|
317
|
-
|
318
|
-
sleep(10).then(
|
319
|
-
expect(log).toEqual(
|
344
|
+
const reader = readable.getReader();
|
345
|
+
sleep(10).then(() => {
|
346
|
+
expect(log).toEqual("01");
|
320
347
|
capability.resolve();
|
321
|
-
return capability.promise.then(
|
348
|
+
return capability.promise.then(() => {
|
322
349
|
return reader.read();
|
323
350
|
});
|
324
|
-
}).then(
|
351
|
+
}).then(result => {
|
325
352
|
expect(result.value).toEqual([1, 2, 3, 4]);
|
326
353
|
expect(result.done).toEqual(false);
|
327
354
|
return sleep(10);
|
328
|
-
}).then(
|
329
|
-
expect(log).toEqual(
|
355
|
+
}).then(() => {
|
356
|
+
expect(log).toEqual("01");
|
330
357
|
return reader.read();
|
331
|
-
}).then(
|
358
|
+
}).then(result => {
|
332
359
|
expect(result.value).toEqual(undefined);
|
333
360
|
expect(result.done).toEqual(true);
|
334
361
|
done();
|