Commit Graph

1985 Commits

Author SHA1 Message Date
Jonas Jenwald
a9e5bc91fb Replace unnecessary var self = this statements with arrow functions in web/pdf_page_view.js and web/pdf_thumbnail_view.js
Also replaces `var` with `let` in code that's touched in the patch. Please note that this should be completely safe, for two separate reasons, since trying to access let in a scope where it's not defined is first of all a runtime error and second of all an ESLint error (thanks to the `no-undef` rule).
2017-05-16 13:48:27 +02:00
Jonas Jenwald
9efd11c5c9 Replace unnecessary var self = this statements with arrow functions in web/pdf_find_controller.js 2017-05-10 14:09:20 +02:00
Jonas Jenwald
c750514903 Simplify extractText in web/pdf_find_controller.js
Currently this method first uses a loop to build a temporary array to hold Promises, which are then resolved from a recursive helper function once the textContent is fetched for each page.

To me, this is unncessarily complicated, since we can do everything within one loop by simply chaining the asynchronous calls to retrieve the textContent. (Note that this guarantees that the textContent of the pages is still fetched sequentially.)
2017-05-10 14:09:15 +02:00
Yury Delendik
595ee1232d Merge pull request #8391 from timvandermeij/es6-web
Convert the hand tool, interfaces and secondary toolbar to ES6 syntax
2017-05-09 07:53:27 -05:00
Jonas Jenwald
240a3926f4 Replace unnecessary var self = this statements with arrow functions in web/app.js
Also replaces `var` with `let` in the functions/methods that are touched in the patch. Please note that this should be completely safe, for two separate reasons, since trying to access `let` in a scope where it's not defined is first of all a runtime error and second of all an ESLint error (thanks to the `no-undef` rule).
2017-05-09 13:46:54 +02:00
Tim van der Meij
8d9596480c
Convert the interfaces to ES6 syntax 2017-05-07 22:01:49 +02:00
Tim van der Meij
67049602c5
Convert the secondary toolbar to ES6 syntax 2017-05-07 21:43:50 +02:00
Tim van der Meij
bc49524ac7
Convert the hand tool to ES6 syntax 2017-05-07 21:30:07 +02:00
Jonas Jenwald
7780fd5b98 Re-factor PDFDocumentProperties such that it's properly reset when a new PDF file is opened (issue 8371)
This patch contains the following improvements:
 - Only fetch the various document properties *once* per PDF file opened, and cache the result (in a frozen object).
 - Always update the *entire* dialog at once, to prevent inconsistent UI state (issue 8371).
 - Ensure that the dialog, and all its internal properties, are reset when `PDFViewerApplication.close` is called.
 - Inline, and re-factor, the `getProperties` method in `open`, since that's the only call-site.
 - Always overwrite the fileSize with the value obtained from `pdfDocument.getDownloadInfo`, to ensure that it's correct.
 - ES6-ify the code that's touched in this patch.

Fixes 8371.
2017-05-07 10:16:03 +02:00
Jonas Jenwald
f27b5013e2 Replace unnecessary bind(this) statements with arrow functions in web/ files
By using `let`, which is block-scoped, instead of `var` in a couple of places we're able to get rid of additional `bind` calls.
2017-05-04 17:13:09 +02:00
Jonas Jenwald
2a0207ccaf Enable the object-shorthand ESLint rule in web
Please see http://eslint.org/docs/rules/object-shorthand.

For the most part, these changes are of the search-and-replace kind, and the previously enabled `no-undef` rule should complement the tests in helping ensure that no stupid errors crept into to the patch.
2017-04-29 20:29:04 +02:00
Tim van der Meij
32c0ea5909 Merge pull request #8324 from timvandermeij/es6-annotation-presentation-rendering
Convert the annotation layer builder, presentation mode and rendering queue to ES6 syntax
2017-04-27 16:30:07 +02:00
Tim van der Meij
24d44b2a34
Convert the rendering queue to ES6 syntax 2017-04-27 16:23:30 +02:00
Tim van der Meij
ccdc7ba3c8
Convert presentation mode to ES6 syntax 2017-04-27 16:23:29 +02:00
Tim van der Meij
3554a93c2b
Convert the annotation layer builder to ES6 syntax 2017-04-27 16:23:29 +02:00
Tim van der Meij
f4690a3c93 Merge pull request #8331 from Snuffleupagus/ui-utils-unit-tests-travis
Enable running the `ui_utils` unit-tests on Travis
2017-04-27 15:33:32 +02:00
Jonas Jenwald
09edfb3dc0 Re-factor ViewHistory to make it properly asynchronous
Rather than having to manually use `initializedPromise`, which really ought to be a private property, to ensure that setting/getting values in the `ViewHistory` works as intended, this re-factoring simply changes all of its methods to be asynchronous.

Furthermore, a `getMultiple` method (mirroring the existing `setMultiple` one) is also added to `ViewHistory`.

Finally, this patch also addresses an existing issue, where certain preferences (e.g. the default zoom level) would be ignored when calling `setInitialView` if reading from the `ViewHistory` fails for some reason.
2017-04-27 11:49:35 +02:00
Jonas Jenwald
16b4132ebf Convert the ViewHistory to an ES6 class 2017-04-26 11:49:06 +02:00
Jonas Jenwald
ae04cf1c37 Enable running the ui_utils unit-tests on Travis
With the exception of just one test-case, all the current `ui_utils` unit-tests can run successfully on Node.js (since most of them doesn't rely on the DOM).

To get this working, I had to first of all add a new `LIB` build flag such that `gulp lib` produces a `web/pdfjs.js` file that is able to load `pdf.js` successfully.
Second of all, since neither `document` nor `navigator` is available in Node.js, `web/ui_utils.js` was adjusted slightly to avoid errors.
2017-04-25 13:37:56 +02:00
Jonas Jenwald
c5f9193777 Convert the Preferences to an ES6 class 2017-04-23 21:14:58 +02:00
Tim van der Meij
99d35a1039 Merge pull request #8306 from timvandermeij/es6-sidebar
Convert the sidebar to ES6 syntax
2017-04-23 17:18:25 +02:00
Tim van der Meij
26ad82f5c2
Convert the sidebar to ES6 syntax 2017-04-23 17:13:51 +02:00
Tim van der Meij
93520172f6
Convert the attachments/outline view to ES6 syntax 2017-04-23 16:06:15 +02:00
Tim van der Meij
96cb599e93 Merge pull request #8322 from Snuffleupagus/rm-window-FirefoxCom
[Firefox addon] Remove the `window.FirefoxCom` hack from `web/viewer.js`, since it was made redunant by the `setExternalLocalizerServices` refactoring (PR 7202 follow-up)
2017-04-21 00:15:10 +02:00
Jonas Jenwald
7bd8b97dba Change PDFAttachmentViewer to only open PDF attachments in the viewer, instead of downloading them, when PDFJS.disableCreateObjectURL = false
This prevents issues with the filename detection being skipped, when trying to download the opened PDF attachment, since `getPDFFileNameFromURL` ignores `data:` URLs for performance reasons.
2017-04-20 18:21:41 +02:00
Jonas Jenwald
84472b30ee Change getPDFFileNameFromURL to ignore data: URLs for performance reasons (issue 8263)
The patch also changes the `defaultFilename` to use the ES6 default parameter notation, and fixes the formatting of the JSDoc comment.

Finally, since `getPDFFileNameFromURL` currently has no unit-tests, a few basic ones are added to avoid regressions.
2017-04-20 18:21:27 +02:00
Jonas Jenwald
d76f299b6b [Firefox addon] Remove the window.FirefoxCom hack from web/viewer.js, since it was made redundant by the setExternalLocalizerServices re-factoring (PR 7202 follow-up)
After PR 7202, there are no remaining references to `FirefoxCom` in the `/extensions/firefox/tools/l10n.js` file.
2017-04-20 17:23:30 +02:00
Yury Delendik
5ad3611cc4 Merge pull request #8300 from Snuffleupagus/GENERIC-DownloadManager-creation
Refactor the `DownloadManager` initialization in `GENERIC`/`CHROME` builds again (PR 8203 follow-up)
2017-04-17 07:34:13 -05:00
Yury Delendik
7812b3cfb2 Merge pull request #8299 from Snuffleupagus/domEvents-getGlobalEventBus-import
Import `getGlobalEventBus` correctly from `web/dom_events.js` in various `/web` files, to un-break e.g. the viewer components (PR 8203 follow-up)
2017-04-17 07:32:04 -05:00
Jonas Jenwald
594e8c05ef Refactor the DownloadManager initialization in GENERIC/CHROME builds again (PR 8203 follow-up)
In the first commit in PR 8203, I changed how the `DownloadManager` was included/initialized in `GENERIC`/`CHROME` builds.
The change was prompted by the fact that you cannot have conditional `import`s with ES6 modules, and I wanted to avoid bundling the general `DownloadManager` into the various Firefox specific build targets.

What I completely missed though, is that the new code meant that `download_manager.js` will now be pulling in the *entire* viewer (through `app.js`).
This is a *really* stupid mistake on my part, since it causes the `dist/build/pdf_viewer.js` used with the viewer components to now include basically the entire default viewer.

The simplest solution that I could come up with, is to add a `genericcom.js` file (similar to the `firefoxcom.js`/`chromecom.js` files) which will be responsible for importing/initializing the `DownloadManager`.
2017-04-17 13:34:30 +02:00
Jonas Jenwald
79e0745a12 Import getGlobalEventBus correctly from web/dom_events.js in various /web files, to un-break e.g. the viewer components (PR 8203 follow-up)
In PR 8203, I somehow managed to mess up the import of `getGlobalEventBus` in *all* files where it's present; my sincere apologies for this!
2017-04-17 00:54:29 +02:00
Tim van der Meij
bd0e4dc4e3 Merge pull request #8297 from timvandermeij/es6-find-bar
Convert the find bar to ES6 syntax
2017-04-16 23:46:25 +02:00
Tim van der Meij
6f6fb4dfd0
Convert the find bar to ES6 syntax 2017-04-16 23:12:11 +02:00
Tim van der Meij
6d7a0ff8f2
Convert the document properties to ES6 syntax 2017-04-16 16:42:57 +02:00
Tim van der Meij
3eb51f1272 Merge pull request #8295 from Snuffleupagus/web-createPromiseCapability
Use `createPromiseCapability` in `/web` files and avoid unnecessary `PDFPageView.setPdfPage` calls
2017-04-16 15:47:26 +02:00
Jonas Jenwald
10592a311a Merge pull request #8293 from timvandermeij/es6-password-prompt
Convert the password prompt to ES6 syntax
2017-04-16 15:38:24 +02:00
Tim van der Meij
dfd338a399
Remove the password prompt input type hack
The browsers have become smarter and made this hack no longer
functional. Since this is now enforced by practically all browsers,
there is nothing more we can do about this. It is up to the user to
serve the viewer over HTTPS or deal with the warning.

Note that this is in no way specific for PDF.js. Any site with password
inputs served over HTTP has this problem right now. This hack was
provided as a convenience for the users, but nothing more than that.
2017-04-16 15:17:23 +02:00
Tim van der Meij
e3796f6f41
Convert the password prompt to ES6 syntax 2017-04-16 15:17:23 +02:00
Jonas Jenwald
fce2cfddcf Check if pageView.pdfPage exists in PDFViewer._ensurePdfPageLoaded, to avoid potentially calling PDFPageView.setPdfPage multiple times for the same page
Since calling `PDFPageView.setPdfPage` will in turn call `PDFPageView.reset`, which cancels all rendering and completely resets the page, it's thus possible that we currently cause some unnecessary re-rendering during the initial loading phase of the viewer.

Depending on the order in which data arrives, it's possible (and in practice always seem to happen) that the `pdfPage` property of the *second* page has already been set during `PDFViewer.setDocument`, by the time that the request for the `pdfPage` is resolved in `PDFViewer._ensurePdfPageLoaded`.

Also, note how the `setPdfPage` call in `PDFViewer.setDocument` is already guarded by this kind of check.
2017-04-16 13:42:45 +02:00
Jonas Jenwald
b0a4f6de8f Use createPromiseCapability in /web files
In various viewer files, there's a number of cases where we basically duplicate the functionality of `createPromiseCapability` manually.
As far as I can tell, a couple of these cases have existed for a very long time, and notable even before the `createPromiseCapability` utility function existed.

Also, since we can write ES6 code now, the patch also replaces a couple of `bind` usages with arrow functions in code that's touched in the patch.
2017-04-16 12:45:24 +02:00
Jonas Jenwald
db6f2f3718 Ensure that PDFThumbnailView.draw is able to handle RenderingCancelledException correctly (PR 8157 follow-up)
In PR 8157, I embarrassingly enough forgot to change `pdf_thumbnail_view.js` to match the changes made to `pdf_page_view.js`.
2017-04-15 11:12:48 +02:00
Yury Delendik
8e681ce3e2 Change amd to cjs path in ES6 modules 2017-04-14 10:32:36 -05:00
Yury Delendik
74b31ab18f Merge pull request #8203 from Snuffleupagus/es6-modules-web
Convert the files in the `/web` folder to ES6 modules
2017-04-13 11:16:27 -05:00
Yury Delendik
46646a9dd1 Merge pull request #8131 from timvandermeij/remove-umd-validation
ES6 modules: remove UMD header validation
2017-04-13 10:49:41 -05:00
Tim van der Meij
32e01cda96 Merge pull request #8228 from timvandermeij/line-annotations
Implement support for line annotations
2017-04-13 00:18:31 +02:00
Tim van der Meij
e15a2ec523
Annotations: implement support for line annotations
This patch implements support for line annotations. Other viewers only
show the popup annotation when hovering over the line, which may have
any orientation. To make this possible, we render an invisible line (SVG
element) over the line on the canvas that acts as the trigger for the
popup annotation. This invisible line has the same starting coordinates,
ending coordinates and width of the line on the canvas.
2017-04-12 23:05:25 +02:00
Jonas Jenwald
b2c3f8f081 Convert a number of import * as pdfjsLib from 'pdfjs-web/pdfjs'; cases to only specify the necessary imports
Rather than always importing everything from the `web/pdfjs.js`, similar to all other imports we can just choose what we actually need.
2017-04-09 11:55:48 +02:00
Jonas Jenwald
3b35c15d42 Convert the files in the /web folder to ES6 modules
Note that as discussed on IRC, this makes the viewer slightly slower to load *only* in `gulp server` mode, however the difference seem slight enough that I think it will be fine.
2017-04-09 11:55:48 +02:00
Jonas Jenwald
313060aff5 Refactor the DownloadManager initialization in GENERIC/CHROME builds, to avoid issues when converting the code to ES6 modules 2017-04-09 11:55:48 +02:00
Yury Delendik
31f8875614 Merge pull request #8157 from Snuffleupagus/api-RenderTask-cancel-Error
[api-minor] Reject the `RenderTask` with an actual `Error`, instead of just a `string`, when rendering is cancelled
2017-04-04 09:38:47 -05:00