[Pkg-javascript-commits] [pdf.js] 235/414: Ensure that `PDFFindController_reset` actually resets *all* state (issue 7034)
David Prévot
taffit at moszumanska.debian.org
Tue Jun 28 17:12:25 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit e7d039dbce8849c225ddafa5ed06fcfda14ee86e
Author: Jonas Jenwald <jonas.jenwald at gmail.com>
Date: Fri Feb 26 18:06:59 2016 +0100
Ensure that `PDFFindController_reset` actually resets *all* state (issue 7034)
To reduce code duplication, the initialization code now uses the `reset` method.
Also, this patch moves `charactersToNormalize` out of `PDFFindController`, since it seemed better suited to be a "constant".
---
web/pdf_find_controller.js | 83 +++++++++++++++++++++++-----------------------
web/viewer.js | 4 +--
2 files changed, 43 insertions(+), 44 deletions(-)
diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js
index 29d4570..407cc16 100644
--- a/web/pdf_find_controller.js
+++ b/web/pdf_find_controller.js
@@ -26,51 +26,34 @@ var FindStates = {
var FIND_SCROLL_OFFSET_TOP = -50;
var FIND_SCROLL_OFFSET_LEFT = -400;
+var CHARACTERS_TO_NORMALIZE = {
+ '\u2018': '\'', // Left single quotation mark
+ '\u2019': '\'', // Right single quotation mark
+ '\u201A': '\'', // Single low-9 quotation mark
+ '\u201B': '\'', // Single high-reversed-9 quotation mark
+ '\u201C': '"', // Left double quotation mark
+ '\u201D': '"', // Right double quotation mark
+ '\u201E': '"', // Double low-9 quotation mark
+ '\u201F': '"', // Double high-reversed-9 quotation mark
+ '\u00BC': '1/4', // Vulgar fraction one quarter
+ '\u00BD': '1/2', // Vulgar fraction one half
+ '\u00BE': '3/4', // Vulgar fraction three quarters
+};
+
/**
* Provides "search" or "find" functionality for the PDF.
* This object actually performs the search for a given string.
*/
var PDFFindController = (function PDFFindControllerClosure() {
function PDFFindController(options) {
- this.startedTextExtraction = false;
- this.extractTextPromises = [];
- this.pendingFindMatches = Object.create(null);
- this.active = false; // If active, find results will be highlighted.
- this.pageContents = []; // Stores the text for each page.
- this.pageMatches = [];
- this.matchCount = 0;
- this.selected = { // Currently selected match.
- pageIdx: -1,
- matchIdx: -1
- };
- this.offset = { // Where the find algorithm currently is in the document.
- pageIdx: null,
- matchIdx: null
- };
- this.pagesToSearch = null;
- this.resumePageIdx = null;
- this.state = null;
- this.dirtyMatch = false;
- this.findTimeout = null;
this.pdfViewer = options.pdfViewer || null;
this.integratedFind = options.integratedFind || false;
- this.charactersToNormalize = {
- '\u2018': '\'', // Left single quotation mark
- '\u2019': '\'', // Right single quotation mark
- '\u201A': '\'', // Single low-9 quotation mark
- '\u201B': '\'', // Single high-reversed-9 quotation mark
- '\u201C': '"', // Left double quotation mark
- '\u201D': '"', // Right double quotation mark
- '\u201E': '"', // Double low-9 quotation mark
- '\u201F': '"', // Double high-reversed-9 quotation mark
- '\u00BC': '1/4', // Vulgar fraction one quarter
- '\u00BD': '1/2', // Vulgar fraction one half
- '\u00BE': '3/4', // Vulgar fraction three quarters
- };
this.findBar = options.findBar || null;
- // Compile the regular expression for text normalization once
- var replace = Object.keys(this.charactersToNormalize).join('');
+ this.reset();
+
+ // Compile the regular expression for text normalization once.
+ var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');
this.normalizationRegex = new RegExp('[' + replace + ']', 'g');
var events = [
@@ -79,10 +62,6 @@ var PDFFindController = (function PDFFindControllerClosure() {
'findhighlightallchange',
'findcasesensitivitychange'
];
-
- this.firstPagePromise = new Promise(function (resolve) {
- this.resolveFirstPage = resolve;
- }.bind(this));
this.handleEvent = this.handleEvent.bind(this);
for (var i = 0, len = events.length; i < len; i++) {
@@ -98,13 +77,33 @@ var PDFFindController = (function PDFFindControllerClosure() {
reset: function PDFFindController_reset() {
this.startedTextExtraction = false;
this.extractTextPromises = [];
- this.active = false;
+ this.pendingFindMatches = Object.create(null);
+ this.active = false; // If active, find results will be highlighted.
+ this.pageContents = []; // Stores the text for each page.
+ this.pageMatches = [];
+ this.matchCount = 0;
+ this.selected = { // Currently selected match.
+ pageIdx: -1,
+ matchIdx: -1
+ };
+ this.offset = { // Where the find algorithm currently is in the document.
+ pageIdx: null,
+ matchIdx: null
+ };
+ this.pagesToSearch = null;
+ this.resumePageIdx = null;
+ this.state = null;
+ this.dirtyMatch = false;
+ this.findTimeout = null;
+
+ this.firstPagePromise = new Promise(function (resolve) {
+ this.resolveFirstPage = resolve;
+ }.bind(this));
},
normalize: function PDFFindController_normalize(text) {
- var self = this;
return text.replace(this.normalizationRegex, function (ch) {
- return self.charactersToNormalize[ch];
+ return CHARACTERS_TO_NORMALIZE[ch];
});
},
diff --git a/web/viewer.js b/web/viewer.js
index 764c0af..ee248cc 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -526,6 +526,8 @@ var PDFViewerApplication = {
this.pdfLinkService.setDocument(null, null);
}
+ this.findController.reset();
+
if (typeof PDFBug !== 'undefined') {
PDFBug.cleanup();
}
@@ -804,8 +806,6 @@ var PDFViewerApplication = {
var self = this;
scale = scale || UNKNOWN_SCALE;
- this.findController.reset();
-
this.pdfDocument = pdfDocument;
this.pdfDocumentProperties.setDocumentAndUrl(pdfDocument, this.url);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list