2017-01-10 01:40:57 +09:00
|
|
|
/* Copyright 2017 Mozilla Foundation
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
2016-02-10 05:55:11 +09:00
|
|
|
|
2020-01-02 20:00:16 +09:00
|
|
|
import { AbortException } from "../../src/shared/util.js";
|
|
|
|
import { PDFNetworkStream } from "../../src/display/network.js";
|
2017-01-10 01:40:57 +09:00
|
|
|
|
2020-04-14 19:28:14 +09:00
|
|
|
describe("network", function () {
|
2020-10-25 23:40:51 +09:00
|
|
|
const pdf1 = new URL("../pdfs/tracemonkey.pdf", window.location).href;
|
|
|
|
const pdf1Length = 1016315;
|
2016-02-10 05:55:11 +09:00
|
|
|
|
2021-04-12 03:03:41 +09:00
|
|
|
it("read without stream and range", async function () {
|
2020-10-25 23:40:51 +09:00
|
|
|
const stream = new PDFNetworkStream({
|
2017-10-16 22:52:20 +09:00
|
|
|
url: pdf1,
|
|
|
|
rangeChunkSize: 65536,
|
|
|
|
disableStream: true,
|
Fix inconsistent spacing and trailing commas in objects in `test/` files, so we can enable the `comma-dangle` and `object-curly-spacing` ESLint rules later on
http://eslint.org/docs/rules/comma-dangle
http://eslint.org/docs/rules/object-curly-spacing
Given that we currently have quite inconsistent object formatting, fixing this in *one* big patch probably wouldn't be feasible (since I cannot imagine anyone wanting to review that); hence I've opted to try and do this piecewise instead.
Please note: This patch was created automatically, using the ESLint `--fix` command line option. In a couple of places this caused lines to become too long, and I've fixed those manually; please refer to the interdiff below for the only hand-edits in this patch.
```diff
diff --git a/test/chromium/test-telemetry.js b/test/chromium/test-telemetry.js
index cc412a31..2e5bdfa1 100755
--- a/test/chromium/test-telemetry.js
+++ b/test/chromium/test-telemetry.js
@@ -324,7 +324,7 @@ var tests = [
var window = createExtensionGlobal();
telemetryScript.runInNewContext(window);
window.chrome.runtime.getManifest = function() {
- return { version: '1.0.1', };
+ return { version: '1.0.1', };
};
window.Date.test_now_value += 12 * 36E5;
telemetryScript.runInNewContext(window);
diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js
index 1f00747a..f22988e7 100644
--- a/test/unit/api_spec.js
+++ b/test/unit/api_spec.js
@@ -503,8 +503,9 @@ describe('api', function() {
it('gets destinations, from /Dests dictionary', function(done) {
var promise = doc.getDestinations();
promise.then(function(data) {
- expect(data).toEqual({ chapter1: [{ gen: 0, num: 17, }, { name: 'XYZ', },
- 0, 841.89, null], });
+ expect(data).toEqual({
+ chapter1: [{ gen: 0, num: 17, }, { name: 'XYZ', }, 0, 841.89, null],
+ });
done();
}).catch(function (reason) {
done.fail(reason);
diff --git a/test/unit/function_spec.js b/test/unit/function_spec.js
index 66441212..62127eb9 100644
--- a/test/unit/function_spec.js
+++ b/test/unit/function_spec.js
@@ -492,9 +492,11 @@ describe('function', function() {
it('check compiled mul', function() {
check([0.25, 0.5, 'mul'], [], [0, 1], [{ input: [], output: [0.125], }]);
check([0, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0], }]);
- check([0.5, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0.125], }]);
+ check([0.5, 'mul'], [0, 1], [0, 1],
+ [{ input: [0.25], output: [0.125], }]);
check([1, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0.25], }]);
- check([0, 'exch', 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0], }]);
+ check([0, 'exch', 'mul'], [0, 1], [0, 1],
+ [{ input: [0.25], output: [0], }]);
check([0.5, 'exch', 'mul'], [0, 1], [0, 1],
[{ input: [0.25], output: [0.125], }]);
check([1, 'exch', 'mul'], [0, 1], [0, 1],
```
2017-06-02 19:55:01 +09:00
|
|
|
disableRange: true,
|
2016-02-10 05:55:11 +09:00
|
|
|
});
|
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
const fullReader = stream.getFullReader();
|
2016-02-10 05:55:11 +09:00
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
let isStreamingSupported, isRangeSupported;
|
|
|
|
const promise = fullReader.headersReady.then(function () {
|
2016-02-10 05:55:11 +09:00
|
|
|
isStreamingSupported = fullReader.isStreamingSupported;
|
|
|
|
isRangeSupported = fullReader.isRangeSupported;
|
|
|
|
});
|
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
let len = 0,
|
2016-02-10 05:55:11 +09:00
|
|
|
count = 0;
|
2020-10-26 00:03:11 +09:00
|
|
|
const read = function () {
|
2020-04-14 19:28:14 +09:00
|
|
|
return fullReader.read().then(function (result) {
|
2016-02-10 05:55:11 +09:00
|
|
|
if (result.done) {
|
2019-05-10 19:54:06 +09:00
|
|
|
return undefined;
|
2016-02-10 05:55:11 +09:00
|
|
|
}
|
|
|
|
count++;
|
|
|
|
len += result.value.byteLength;
|
|
|
|
return read();
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2021-04-12 03:03:41 +09:00
|
|
|
await Promise.all([read(), promise]);
|
|
|
|
|
|
|
|
expect(len).toEqual(pdf1Length);
|
|
|
|
expect(count).toEqual(1);
|
|
|
|
expect(isStreamingSupported).toEqual(false);
|
|
|
|
expect(isRangeSupported).toEqual(false);
|
2016-02-10 05:55:11 +09:00
|
|
|
});
|
|
|
|
|
2021-04-12 03:03:41 +09:00
|
|
|
it("read custom ranges", async function () {
|
2016-02-10 05:55:11 +09:00
|
|
|
// We don't test on browsers that don't support range request, so
|
|
|
|
// requiring this test to pass.
|
2020-10-25 23:40:51 +09:00
|
|
|
const rangeSize = 32768;
|
|
|
|
const stream = new PDFNetworkStream({
|
2017-10-16 22:52:20 +09:00
|
|
|
url: pdf1,
|
|
|
|
length: pdf1Length,
|
|
|
|
rangeChunkSize: rangeSize,
|
|
|
|
disableStream: true,
|
Fix inconsistent spacing and trailing commas in objects in `test/` files, so we can enable the `comma-dangle` and `object-curly-spacing` ESLint rules later on
http://eslint.org/docs/rules/comma-dangle
http://eslint.org/docs/rules/object-curly-spacing
Given that we currently have quite inconsistent object formatting, fixing this in *one* big patch probably wouldn't be feasible (since I cannot imagine anyone wanting to review that); hence I've opted to try and do this piecewise instead.
Please note: This patch was created automatically, using the ESLint `--fix` command line option. In a couple of places this caused lines to become too long, and I've fixed those manually; please refer to the interdiff below for the only hand-edits in this patch.
```diff
diff --git a/test/chromium/test-telemetry.js b/test/chromium/test-telemetry.js
index cc412a31..2e5bdfa1 100755
--- a/test/chromium/test-telemetry.js
+++ b/test/chromium/test-telemetry.js
@@ -324,7 +324,7 @@ var tests = [
var window = createExtensionGlobal();
telemetryScript.runInNewContext(window);
window.chrome.runtime.getManifest = function() {
- return { version: '1.0.1', };
+ return { version: '1.0.1', };
};
window.Date.test_now_value += 12 * 36E5;
telemetryScript.runInNewContext(window);
diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js
index 1f00747a..f22988e7 100644
--- a/test/unit/api_spec.js
+++ b/test/unit/api_spec.js
@@ -503,8 +503,9 @@ describe('api', function() {
it('gets destinations, from /Dests dictionary', function(done) {
var promise = doc.getDestinations();
promise.then(function(data) {
- expect(data).toEqual({ chapter1: [{ gen: 0, num: 17, }, { name: 'XYZ', },
- 0, 841.89, null], });
+ expect(data).toEqual({
+ chapter1: [{ gen: 0, num: 17, }, { name: 'XYZ', }, 0, 841.89, null],
+ });
done();
}).catch(function (reason) {
done.fail(reason);
diff --git a/test/unit/function_spec.js b/test/unit/function_spec.js
index 66441212..62127eb9 100644
--- a/test/unit/function_spec.js
+++ b/test/unit/function_spec.js
@@ -492,9 +492,11 @@ describe('function', function() {
it('check compiled mul', function() {
check([0.25, 0.5, 'mul'], [], [0, 1], [{ input: [], output: [0.125], }]);
check([0, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0], }]);
- check([0.5, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0.125], }]);
+ check([0.5, 'mul'], [0, 1], [0, 1],
+ [{ input: [0.25], output: [0.125], }]);
check([1, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0.25], }]);
- check([0, 'exch', 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0], }]);
+ check([0, 'exch', 'mul'], [0, 1], [0, 1],
+ [{ input: [0.25], output: [0], }]);
check([0.5, 'exch', 'mul'], [0, 1], [0, 1],
[{ input: [0.25], output: [0.125], }]);
check([1, 'exch', 'mul'], [0, 1], [0, 1],
```
2017-06-02 19:55:01 +09:00
|
|
|
disableRange: false,
|
2016-02-10 05:55:11 +09:00
|
|
|
});
|
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
const fullReader = stream.getFullReader();
|
2016-02-10 05:55:11 +09:00
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
let isStreamingSupported, isRangeSupported, fullReaderCancelled;
|
|
|
|
const promise = fullReader.headersReady.then(function () {
|
2016-02-10 05:55:11 +09:00
|
|
|
isStreamingSupported = fullReader.isStreamingSupported;
|
|
|
|
isRangeSupported = fullReader.isRangeSupported;
|
|
|
|
// we shall be able to close the full reader without issues
|
2019-08-01 23:31:32 +09:00
|
|
|
fullReader.cancel(new AbortException("Don't need fullReader."));
|
2016-02-10 05:55:11 +09:00
|
|
|
fullReaderCancelled = true;
|
|
|
|
});
|
|
|
|
|
|
|
|
// Skipping fullReader results, requesting something from the PDF end.
|
2020-10-25 23:40:51 +09:00
|
|
|
const tailSize = pdf1Length % rangeSize || rangeSize;
|
2016-02-10 05:55:11 +09:00
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
const range1Reader = stream.getRangeReader(
|
2016-02-10 05:55:11 +09:00
|
|
|
pdf1Length - tailSize - rangeSize,
|
|
|
|
pdf1Length - tailSize
|
|
|
|
);
|
2020-10-25 23:40:51 +09:00
|
|
|
const range2Reader = stream.getRangeReader(
|
|
|
|
pdf1Length - tailSize,
|
|
|
|
pdf1Length
|
|
|
|
);
|
2016-02-10 05:55:11 +09:00
|
|
|
|
2020-10-25 23:40:51 +09:00
|
|
|
const result1 = { value: 0 },
|
Fix inconsistent spacing and trailing commas in objects in `test/` files, so we can enable the `comma-dangle` and `object-curly-spacing` ESLint rules later on
http://eslint.org/docs/rules/comma-dangle
http://eslint.org/docs/rules/object-curly-spacing
Given that we currently have quite inconsistent object formatting, fixing this in *one* big patch probably wouldn't be feasible (since I cannot imagine anyone wanting to review that); hence I've opted to try and do this piecewise instead.
Please note: This patch was created automatically, using the ESLint `--fix` command line option. In a couple of places this caused lines to become too long, and I've fixed those manually; please refer to the interdiff below for the only hand-edits in this patch.
```diff
diff --git a/test/chromium/test-telemetry.js b/test/chromium/test-telemetry.js
index cc412a31..2e5bdfa1 100755
--- a/test/chromium/test-telemetry.js
+++ b/test/chromium/test-telemetry.js
@@ -324,7 +324,7 @@ var tests = [
var window = createExtensionGlobal();
telemetryScript.runInNewContext(window);
window.chrome.runtime.getManifest = function() {
- return { version: '1.0.1', };
+ return { version: '1.0.1', };
};
window.Date.test_now_value += 12 * 36E5;
telemetryScript.runInNewContext(window);
diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js
index 1f00747a..f22988e7 100644
--- a/test/unit/api_spec.js
+++ b/test/unit/api_spec.js
@@ -503,8 +503,9 @@ describe('api', function() {
it('gets destinations, from /Dests dictionary', function(done) {
var promise = doc.getDestinations();
promise.then(function(data) {
- expect(data).toEqual({ chapter1: [{ gen: 0, num: 17, }, { name: 'XYZ', },
- 0, 841.89, null], });
+ expect(data).toEqual({
+ chapter1: [{ gen: 0, num: 17, }, { name: 'XYZ', }, 0, 841.89, null],
+ });
done();
}).catch(function (reason) {
done.fail(reason);
diff --git a/test/unit/function_spec.js b/test/unit/function_spec.js
index 66441212..62127eb9 100644
--- a/test/unit/function_spec.js
+++ b/test/unit/function_spec.js
@@ -492,9 +492,11 @@ describe('function', function() {
it('check compiled mul', function() {
check([0.25, 0.5, 'mul'], [], [0, 1], [{ input: [], output: [0.125], }]);
check([0, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0], }]);
- check([0.5, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0.125], }]);
+ check([0.5, 'mul'], [0, 1], [0, 1],
+ [{ input: [0.25], output: [0.125], }]);
check([1, 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0.25], }]);
- check([0, 'exch', 'mul'], [0, 1], [0, 1], [{ input: [0.25], output: [0], }]);
+ check([0, 'exch', 'mul'], [0, 1], [0, 1],
+ [{ input: [0.25], output: [0], }]);
check([0.5, 'exch', 'mul'], [0, 1], [0, 1],
[{ input: [0.25], output: [0.125], }]);
check([1, 'exch', 'mul'], [0, 1], [0, 1],
```
2017-06-02 19:55:01 +09:00
|
|
|
result2 = { value: 0 };
|
2020-10-26 00:03:11 +09:00
|
|
|
const read = function (reader, lenResult) {
|
2020-04-14 19:28:14 +09:00
|
|
|
return reader.read().then(function (result) {
|
2016-02-10 05:55:11 +09:00
|
|
|
if (result.done) {
|
2019-05-10 19:54:06 +09:00
|
|
|
return undefined;
|
2016-02-10 05:55:11 +09:00
|
|
|
}
|
|
|
|
lenResult.value += result.value.byteLength;
|
|
|
|
return read(reader, lenResult);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2021-04-12 03:03:41 +09:00
|
|
|
await Promise.all([
|
2016-02-10 05:55:11 +09:00
|
|
|
read(range1Reader, result1),
|
|
|
|
read(range2Reader, result2),
|
|
|
|
promise,
|
|
|
|
]);
|
Enable auto-formatting of the entire code-base using Prettier (issue 11444)
Note that Prettier, purposely, has only limited [configuration options](https://prettier.io/docs/en/options.html). The configuration file is based on [the one in `mozilla central`](https://searchfox.org/mozilla-central/source/.prettierrc) with just a few additions (to avoid future breakage if the defaults ever changes).
Prettier is being used for a couple of reasons:
- To be consistent with `mozilla-central`, where Prettier is already in use across the tree.
- To ensure a *consistent* coding style everywhere, which is automatically enforced during linting (since Prettier is used as an ESLint plugin). This thus ends "all" formatting disussions once and for all, removing the need for review comments on most stylistic matters.
Many ESLint options are now redundant, and I've tried my best to remove all the now unnecessary options (but I may have missed some).
Note also that since Prettier considers the `printWidth` option as a guide, rather than a hard rule, this patch resorts to a small hack in the ESLint config to ensure that *comments* won't become too long.
*Please note:* This patch is generated automatically, by appending the `--fix` argument to the ESLint call used in the `gulp lint` task. It will thus require some additional clean-up, which will be done in a *separate* commit.
(On a more personal note, I'll readily admit that some of the changes Prettier makes are *extremely* ugly. However, in the name of consistency we'll probably have to live with that.)
2019-12-25 23:59:37 +09:00
|
|
|
|
2021-04-12 03:03:41 +09:00
|
|
|
expect(result1.value).toEqual(rangeSize);
|
|
|
|
expect(result2.value).toEqual(tailSize);
|
|
|
|
expect(isStreamingSupported).toEqual(false);
|
|
|
|
expect(isRangeSupported).toEqual(true);
|
|
|
|
expect(fullReaderCancelled).toEqual(true);
|
2016-02-10 05:55:11 +09:00
|
|
|
});
|
|
|
|
});
|