diff --git a/extensions/b2g/viewer.css b/extensions/b2g/viewer.css index 94519bfafb3f4..2d494e91f2171 100644 --- a/extensions/b2g/viewer.css +++ b/extensions/b2g/viewer.css @@ -14,7 +14,6 @@ */ * { - box-sizing: border-box; padding: 0; margin: 0; } @@ -148,22 +147,7 @@ canvas { display: block; } -.page { - direction: ltr; - width: 81.6rem; - height: 105.6rem; - margin: 1rem auto; - position: relative; - overflow: hidden; - background-color: white; -} - -.page > a { - display: block; - position: absolute; -} - -.loadingIcon { +.pdfViewer .page .loadingIcon { width: 2.9rem; height: 2.9rem; background: url("images/spinner.png") no-repeat left top / 38rem ; diff --git a/extensions/b2g/viewer.html b/extensions/b2g/viewer.html index 83aad6c835dce..7baa1f7f41286 100644 --- a/extensions/b2g/viewer.html +++ b/extensions/b2g/viewer.html @@ -20,22 +20,25 @@ PDF.js viewer + + + - - - - - + + + + - - - - - + + + + + +
@@ -55,7 +58,7 @@

-
+
@@ -81,194 +84,5 @@

- - - - - diff --git a/extensions/b2g/viewer.js b/extensions/b2g/viewer.js new file mode 100644 index 0000000000000..94bb77caa2968 --- /dev/null +++ b/extensions/b2g/viewer.js @@ -0,0 +1,349 @@ +/* Copyright 2014 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. + */ + +/* globals PDFJS, Promise */ + +'use strict'; + +PDFJS.useOnlyCssZoom = true; +PDFJS.disableTextLayer = true; +PDFJS.maxImageSize = 1024 * 1024; +PDFJS.workerSrc = '../pdfjs-components/build/pdf.worker.js'; +PDFJS.cMapUrl = '../pdfjs-components/cmaps/'; +PDFJS.cMapPacked = true; + +var DEFAULT_SCALE_DELTA = 1.1; +var MIN_SCALE = 0.25; +var MAX_SCALE = 10.0; +var DEFAULT_SCALE_VALUE = 'auto'; + +var PDFViewerApplication = { + pdfDocument: null, + pdfViewer: null, + pdfHistory: null, + pdfLinkService: null, + + open: function (params) { + var url = params.url, originalUrl = params.originalUrl; + var self = this; + this.setTitleUsingUrl(originalUrl); + + // Loading document. + var loadingTask = PDFJS.getDocument(url); + loadingTask.onProgress = function (progressData) { + self.progress(progressData.loaded / progressData.total); + }; + loadingTask.then(function (pdfDocument) { + // Document loaded, specifying document for the viewer. + this.pdfDocument = pdfDocument; + this.pdfViewer.setDocument(pdfDocument); + this.pdfLinkService.setDocument(pdfDocument); + this.pdfHistory.initialize(pdfDocument.fingerprint); + + this.loadingBar.hide(); + this.setTitleUsingMetadata(pdfDocument); + }.bind(this), function (exception) { + var message = exception && exception.message; + var loadingErrorMessage = mozL10n.get('loading_error', null, + 'An error occurred while loading the PDF.'); + + if (exception instanceof PDFJS.InvalidPDFException) { + // change error message also for other builds + loadingErrorMessage = mozL10n.get('invalid_file_error', null, + 'Invalid or corrupted PDF file.'); + } else if (exception instanceof PDFJS.MissingPDFException) { + // special message for missing PDFs + loadingErrorMessage = mozL10n.get('missing_file_error', null, + 'Missing PDF file.'); + } else if (exception instanceof PDFJS.UnexpectedResponseException) { + loadingErrorMessage = mozL10n.get('unexpected_response_error', null, + 'Unexpected server response.'); + } + + var moreInfo = { + message: message + }; + self.error(loadingErrorMessage, moreInfo); + self.loadingBar.hide(); + }); + }, + + get loadingBar() { + var bar = new PDFJS.ProgressBar('#loadingBar', {}); + + return PDFJS.shadow(this, 'loadingBar', bar); + }, + + setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) { + this.url = url; + var title = PDFJS.getFileName(url) || url; + try { + title = decodeURIComponent(title); + } catch (e) { + // decodeURIComponent may throw URIError, + // fall back to using the unprocessed url in that case + } + this.setTitle(title); + }, + + setTitleUsingMetadata: function (pdfDocument) { + var self = this; + pdfDocument.getMetadata().then(function(data) { + var info = data.info, metadata = data.metadata; + self.documentInfo = info; + self.metadata = metadata; + + // Provides some basic debug information + console.log('PDF ' + pdfDocument.fingerprint + ' [' + + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + + ' / ' + (info.Creator || '-').trim() + ']' + + ' (PDF.js: ' + (PDFJS.version || '-') + + (!PDFJS.disableWebGL ? ' [WebGL]' : '') + ')'); + + var pdfTitle; + if (metadata && metadata.has('dc:title')) { + var title = metadata.get('dc:title'); + // Ghostscript sometimes returns 'Untitled', so prevent setting the + // title to 'Untitled. + if (title !== 'Untitled') { + pdfTitle = title; + } + } + + if (!pdfTitle && info && info['Title']) { + pdfTitle = info['Title']; + } + + if (pdfTitle) { + self.setTitle(pdfTitle + ' - ' + document.title); + } + }); + }, + + setTitle: function pdfViewSetTitle(title) { + document.title = title; + document.getElementById('activityTitle').textContent = title; + }, + + error: function pdfViewError(message, moreInfo) { + var moreInfoText = mozL10n.get('error_version_info', + {version: PDFJS.version || '?', build: PDFJS.build || '?'}, + 'PDF.js v{{version}} (build: {{build}})') + '\n'; + + if (moreInfo) { + moreInfoText += + mozL10n.get('error_message', {message: moreInfo.message}, + 'Message: {{message}}'); + if (moreInfo.stack) { + moreInfoText += '\n' + + mozL10n.get('error_stack', {stack: moreInfo.stack}, + 'Stack: {{stack}}'); + } else { + if (moreInfo.filename) { + moreInfoText += '\n' + + mozL10n.get('error_file', {file: moreInfo.filename}, + 'File: {{file}}'); + } + if (moreInfo.lineNumber) { + moreInfoText += '\n' + + mozL10n.get('error_line', {line: moreInfo.lineNumber}, + 'Line: {{line}}'); + } + } + } + + var errorWrapper = document.getElementById('errorWrapper'); + errorWrapper.removeAttribute('hidden'); + + var errorMessage = document.getElementById('errorMessage'); + errorMessage.textContent = message; + + var closeButton = document.getElementById('errorClose'); + closeButton.onclick = function() { + errorWrapper.setAttribute('hidden', 'true'); + }; + + var errorMoreInfo = document.getElementById('errorMoreInfo'); + var moreInfoButton = document.getElementById('errorShowMore'); + var lessInfoButton = document.getElementById('errorShowLess'); + moreInfoButton.onclick = function() { + errorMoreInfo.removeAttribute('hidden'); + moreInfoButton.setAttribute('hidden', 'true'); + lessInfoButton.removeAttribute('hidden'); + errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px'; + }; + lessInfoButton.onclick = function() { + errorMoreInfo.setAttribute('hidden', 'true'); + moreInfoButton.removeAttribute('hidden'); + lessInfoButton.setAttribute('hidden', 'true'); + }; + moreInfoButton.removeAttribute('hidden'); + lessInfoButton.setAttribute('hidden', 'true'); + errorMoreInfo.value = moreInfoText; + }, + + progress: function pdfViewProgress(level) { + var percent = Math.round(level * 100); + // Updating the bar if value increases. + if (percent > this.loadingBar.percent || isNaN(percent)) { + this.loadingBar.percent = percent; + } + }, + + get pagesCount() { + return this.pdfDocument.numPages; + }, + + set page(val) { + this.pdfViewer.currentPageNumber = val; + }, + + get page() { + return this.pdfViewer.currentPageNumber; + }, + + zoomIn: function pdfViewZoomIn(ticks) { + var newScale = this.pdfViewer.currentScale; + do { + newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.ceil(newScale * 10) / 10; + newScale = Math.min(MAX_SCALE, newScale); + } while (--ticks && newScale < MAX_SCALE); + this.pdfViewer.currentScaleValue = newScale; + }, + + zoomOut: function pdfViewZoomOut(ticks) { + var newScale = this.pdfViewer.currentScale; + do { + newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.floor(newScale * 10) / 10; + newScale = Math.max(MIN_SCALE, newScale); + } while (--ticks && newScale > MIN_SCALE); + this.pdfViewer.currentScaleValue = newScale; + }, + + initUI: function pdfViewInitUI() { + var linkService = new PDFJS.PDFLinkService(); + this.pdfLinkService = linkService; + + var container = document.getElementById('viewerContainer'); + var pdfViewer = new PDFJS.PDFViewer({ + container: container, + linkService: linkService + }); + this.pdfViewer = pdfViewer; + linkService.setViewer(pdfViewer); + + this.pdfHistory = new PDFJS.PDFHistory({ + linkService: linkService + }); + linkService.setHistory(this.pdfHistory); + + document.getElementById('previous').addEventListener('click', function() { + PDFViewerApplication.page--; + }); + + document.getElementById('next').addEventListener('click', function() { + PDFViewerApplication.page++; + }); + + document.getElementById('zoomIn').addEventListener('click', function() { + PDFViewerApplication.zoomIn(); + }); + + document.getElementById('zoomOut').addEventListener('click', function() { + PDFViewerApplication.zoomOut(); + }); + + document.getElementById('pageNumber').addEventListener('click', function() { + this.select(); + }); + + document.getElementById('pageNumber').addEventListener('change', + function() { + // Handle the user inputting a floating point number. + PDFViewerApplication.page = (this.value | 0); + + if (this.value !== (this.value | 0).toString()) { + this.value = PDFViewerApplication.page; + } + }); + + container.addEventListener('pagesinit', function () { + // We can use pdfViewer now, e.g. let's change default scale. + pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; + }); + + container.addEventListener('pagechange', function (evt) { + var page = evt.pageNumber; + if (evt.previousPageNumber !== page) { + document.getElementById('pageNumber').value = page; + } + var numPages = PDFViewerApplication.pagesCount; + + document.getElementById('previous').disabled = (page <= 1); + document.getElementById('next').disabled = (page >= numPages); + }, true); + } +}; + +document.addEventListener('DOMContentLoaded', function () { + PDFViewerApplication.initUI(); +}, true); + +(function animationStartedClosure() { + // The offsetParent is not set until the PDF.js iframe or object is visible. + // Waiting for first animation. + PDFViewerApplication.animationStartedPromise = new Promise( + function (resolve) { + window.requestAnimationFrame(resolve); + }); +})(); + +// Support of the new version of navigator.mozL10n -- in PDF.js older/custom +// version is used. +var mozL10n = { + get: function (id, args, fallback) { + var s = (navigator.mozL10n && navigator.mozL10n.get(id)) || fallback; + s = s.replace(/\{\{\s*(\w+)\s*\}\}/g, function (all, key) { + return args[key] || ''; + }); + return s; + }, + + translate: function (fragment) { + if (navigator.mozL10n) { + navigator.mozL10n.translateFragment(fragment); + } + } +}; + +window.navigator.mozSetMessageHandler('activity', function(activity) { + var blob = activity.source.data.blob; + var fileURL = activity.source.data.url || + activity.source.data.filename || + ' '; // if no url or filename, use a non-empty string + + var url = URL.createObjectURL(blob); + // We need to delay opening until all HTML is loaded. + PDFViewerApplication.animationStartedPromise.then(function () { + PDFViewerApplication.open({url: url, originalUrl: fileURL}); + + var header = document.getElementById('header'); + header.addEventListener('action', function() { + activity.postResult('close'); + }); + }); +}); diff --git a/make.js b/make.js index 0c8380c38d939..4073da4a5ecc2 100644 --- a/make.js +++ b/make.js @@ -70,7 +70,6 @@ var DEFINES = { GENERIC: false, FIREFOX: false, MOZCENTRAL: false, - B2G: false, CHROME: false, MINIFIED: false, SINGLE_FILE: false, @@ -979,36 +978,45 @@ target.mozcentral = function() { }; target.b2g = function() { - target.locale(); + target.generic(); + target.components(); echo(); echo('### Building B2G (Firefox OS App)'); var B2G_BUILD_CONTENT_DIR = B2G_BUILD_DIR + '/content/'; - var defines = builder.merge(DEFINES, { B2G: true }); - target.bundle({ defines: defines }); + target.bundle(); // Clear out everything in the b2g build directory cd(ROOT_DIR); rm('-Rf', B2G_BUILD_DIR); mkdir('-p', B2G_BUILD_CONTENT_DIR); - mkdir('-p', B2G_BUILD_CONTENT_DIR + BUILD_DIR); mkdir('-p', B2G_BUILD_CONTENT_DIR + '/web'); - mkdir('-p', B2G_BUILD_CONTENT_DIR + '/web/cmaps'); + // Simulating pdfjs-dist structure in the pdfjs-components folder. + mkdir('-p', B2G_BUILD_CONTENT_DIR + '/pdfjs-components/web'); + mkdir('-p', B2G_BUILD_CONTENT_DIR + '/pdfjs-components/build'); + mkdir('-p', B2G_BUILD_CONTENT_DIR + '/pdfjs-components/cmaps'); var setup = { - defines: defines, + defines: DEFINES, copy: [ ['extensions/b2g/images', B2G_BUILD_CONTENT_DIR + '/web'], ['extensions/b2g/viewer.html', B2G_BUILD_CONTENT_DIR + '/web'], ['extensions/b2g/viewer.css', B2G_BUILD_CONTENT_DIR + '/web'], + ['extensions/b2g/viewer.js', B2G_BUILD_CONTENT_DIR + '/web'], ['web/locale', B2G_BUILD_CONTENT_DIR + '/web'], - ['external/bcmaps/*', B2G_BUILD_CONTENT_DIR + '/web/cmaps'], - ['external/webL10n/l10n.js', B2G_BUILD_CONTENT_DIR + '/web'] + ['build/generic/build/pdf.js', + B2G_BUILD_CONTENT_DIR + '/pdfjs-components/build'], + ['build/generic/build/pdf.worker.js', + B2G_BUILD_CONTENT_DIR + '/pdfjs-components/build'], + ['build/components/pdf_viewer.js', + B2G_BUILD_CONTENT_DIR + '/pdfjs-components/web'], + ['build/components/pdf_viewer.css', + B2G_BUILD_CONTENT_DIR + '/pdfjs-components/web'], + ['build/components/images', + B2G_BUILD_CONTENT_DIR + '/pdfjs-components/web'], + ['external/bcmaps/*', B2G_BUILD_CONTENT_DIR + '/pdfjs-components/cmaps'] ], - preprocess: [ - ['web/viewer.js', B2G_BUILD_CONTENT_DIR + '/web'], - [BUILD_TARGETS, B2G_BUILD_CONTENT_DIR + BUILD_DIR] - ] + preprocess: [] }; builder.build(setup); diff --git a/src/core/chunked_stream.js b/src/core/chunked_stream.js index 427673c4ea7e5..5b6b2ddfec1f0 100644 --- a/src/core/chunked_stream.js +++ b/src/core/chunked_stream.js @@ -287,11 +287,7 @@ var ChunkedStreamManager = (function ChunkedStreamManagerClosure() { } else { var getXhr = function getXhr() { -//#if B2G -// return new XMLHttpRequest({ mozSystem: true }); -//#else return new XMLHttpRequest(); -//#endif }; this.networkManager = new NetworkManager(this.url, { getXhr: getXhr, diff --git a/src/core/murmurhash3.js b/src/core/murmurhash3.js index cdc3500f0f7bd..deaba73a700a6 100644 --- a/src/core/murmurhash3.js +++ b/src/core/murmurhash3.js @@ -35,7 +35,7 @@ var MurmurHash3_64 = (function MurmurHash3_64Closure (seed) { } var alwaysUseUint32ArrayView = false; -//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME) +//#if !(FIREFOX || MOZCENTRAL || CHROME) // old webkits have issues with non-aligned arrays try { new Uint32Array(new Uint8Array(5).buffer, 0, 1); diff --git a/src/core/network.js b/src/core/network.js index c030f71a1ca69..2ae407424e792 100644 --- a/src/core/network.js +++ b/src/core/network.js @@ -50,11 +50,7 @@ var NetworkManager = (function NetworkManagerClosure() { this.withCredentials = args.withCredentials || false; this.getXhr = args.getXhr || function NetworkManager_getXhr() { -//#if B2G -// return new XMLHttpRequest({ mozSystem: true }); -//#else return new XMLHttpRequest(); -//#endif }; this.currXhrId = 0; diff --git a/src/shared/util.js b/src/shared/util.js index 382f6437fc28c..ee38bea39580c 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -503,8 +503,8 @@ Object.defineProperty(PDFJS, 'isLittleEndian', { } }); -//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME) -//// Lazy test if the userAgant support CanvasTypedArrays +//#if !(FIREFOX || MOZCENTRAL || CHROME) +//// Lazy test if the userAgent support CanvasTypedArrays function hasCanvasTypedArrays() { var canvas = document.createElement('canvas'); canvas.width = canvas.height = 1; diff --git a/web/default_preferences.js b/web/default_preferences.js index 57fe8b9ddbe47..10474144a7dec 100644 --- a/web/default_preferences.js +++ b/web/default_preferences.js @@ -31,11 +31,6 @@ var DEFAULT_PREFERENCES = { disableStream: false, disableAutoFetch: false, disableFontFace: false, -//#if B2G -//disableTextLayer: true, -//useOnlyCssZoom: true -//#else disableTextLayer: false, useOnlyCssZoom: false -//#endif }; diff --git a/web/pdf_viewer.component.js b/web/pdf_viewer.component.js index c59e98233d89c..cb3dbad99b4a6 100644 --- a/web/pdf_viewer.component.js +++ b/web/pdf_viewer.component.js @@ -17,7 +17,7 @@ /*jshint globalstrict: false */ /* globals PDFJS, PDFViewer, PDFPageView, TextLayerBuilder, PDFLinkService, DefaultTextLayerFactory, AnnotationsLayerBuilder, PDFHistory, - DefaultAnnotationsLayerFactory, getFileName */ + DefaultAnnotationsLayerFactory, getFileName, ProgressBar */ // Initializing PDFJS global object (if still undefined) if (typeof PDFJS === 'undefined') { @@ -42,4 +42,5 @@ if (typeof PDFJS === 'undefined') { PDFJS.PDFHistory = PDFHistory; PDFJS.getFileName = getFileName; + PDFJS.ProgressBar = ProgressBar; }).call((typeof window === 'undefined') ? this : window); diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 75dcf32a14930..a719d62019bf7 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -18,7 +18,7 @@ SCROLLBAR_PADDING, VERTICAL_PADDING, MAX_AUTO_SCALE, CSS_UNITS, DEFAULT_SCALE, scrollIntoView, getVisibleElements, RenderingStates, PDFJS, Promise, TextLayerBuilder, PDFRenderingQueue, - AnnotationsLayerBuilder */ + AnnotationsLayerBuilder, DEFAULT_SCALE_VALUE */ 'use strict'; @@ -149,7 +149,8 @@ var PDFViewer = (function pdfViewer() { * @returns {number} */ get currentScale() { - return this._currentScale; + return this._currentScale !== UNKNOWN_SCALE ? this._currentScale : + DEFAULT_SCALE; }, /** @@ -161,7 +162,7 @@ var PDFViewer = (function pdfViewer() { } if (!this.pdfDocument) { this._currentScale = val; - this._currentScaleValue = val.toString(); + this._currentScaleValue = val !== UNKNOWN_SCALE ? val.toString() : null; return; } this._setScale(val, false); @@ -265,7 +266,7 @@ var PDFViewer = (function pdfViewer() { // Fetch a single page so we can get a viewport that will be the default // viewport for all pages return firstPagePromise.then(function(pdfPage) { - var scale = this._currentScale || 1.0; + var scale = this.currentScale; var viewport = pdfPage.getViewport(scale * CSS_UNITS); for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { var textLayerFactory = null; @@ -523,10 +524,10 @@ var PDFViewer = (function pdfViewer() { return; } - if (scale && scale !== this.currentScale) { + if (scale && scale !== this._currentScale) { this.currentScaleValue = scale; - } else if (this.currentScale === UNKNOWN_SCALE) { - this.currentScaleValue = DEFAULT_SCALE; + } else if (this._currentScale === UNKNOWN_SCALE) { + this.currentScaleValue = DEFAULT_SCALE_VALUE; } if (scale === 'page-fit' && !dest[4]) { diff --git a/web/preferences.js b/web/preferences.js index 88feabce2c79c..967101d7f7e79 100644 --- a/web/preferences.js +++ b/web/preferences.js @@ -160,24 +160,6 @@ var Preferences = { } }; -//#if B2G -//Preferences._writeToStorage = function (prefObj) { -// return new Promise(function (resolve) { -// asyncStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj), -// resolve); -// }); -//}; -// -//Preferences._readFromStorage = function (prefObj) { -// return new Promise(function (resolve) { -// asyncStorage.getItem('pdfjs.preferences', function (prefStr) { -// var readPrefs = JSON.parse(prefStr); -// resolve(readPrefs); -// }); -// }); -//}; -//#endif - //#if CHROME //Preferences._writeToStorage = function (prefObj) { // return new Promise(function (resolve) { @@ -221,7 +203,7 @@ var Preferences = { //}; //#endif -//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME) +//#if !(FIREFOX || MOZCENTRAL || CHROME) Preferences._writeToStorage = function (prefObj) { return new Promise(function (resolve) { localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj)); diff --git a/web/ui_utils.js b/web/ui_utils.js index b8128f21233bb..e58b77106ee44 100644 --- a/web/ui_utils.js +++ b/web/ui_utils.js @@ -17,7 +17,8 @@ 'use strict'; var CSS_UNITS = 96.0 / 72.0; -var DEFAULT_SCALE = 'auto'; +var DEFAULT_SCALE_VALUE = 'auto'; +var DEFAULT_SCALE = 1.0; var UNKNOWN_SCALE = 0; var MAX_AUTO_SCALE = 1.25; var SCROLLBAR_PADDING = 40; diff --git a/web/view_history.js b/web/view_history.js index 6f2cce48c1deb..cb21153b66a6f 100644 --- a/web/view_history.js +++ b/web/view_history.js @@ -25,7 +25,6 @@ * The way that the view parameters are stored depends on how PDF.js is built, * for 'node make ' the following cases exist: * - FIREFOX or MOZCENTRAL - uses sessionStorage. - * - B2G - uses asyncStorage. * - GENERIC or CHROME - uses localStorage, if it is available. */ var ViewHistory = (function ViewHistoryClosure() { @@ -64,16 +63,12 @@ var ViewHistory = (function ViewHistoryClosure() { return new Promise(function (resolve) { var databaseStr = JSON.stringify(this.database); -//#if B2G -// asyncStorage.setItem('database', databaseStr, resolve); -//#endif - //#if FIREFOX || MOZCENTRAL // sessionStorage.setItem('pdfjsHistory', databaseStr); // resolve(); //#endif -//#if !(FIREFOX || MOZCENTRAL || B2G) +//#if !(FIREFOX || MOZCENTRAL) localStorage.setItem('database', databaseStr); resolve(); //#endif @@ -82,15 +77,11 @@ var ViewHistory = (function ViewHistoryClosure() { _readFromStorage: function ViewHistory_readFromStorage() { return new Promise(function (resolve) { -//#if B2G -// asyncStorage.getItem('database', resolve); -//#endif - //#if FIREFOX || MOZCENTRAL // resolve(sessionStorage.getItem('pdfjsHistory')); //#endif -//#if !(FIREFOX || MOZCENTRAL || B2G) +//#if !(FIREFOX || MOZCENTRAL) resolve(localStorage.getItem('database')); //#endif }); diff --git a/web/viewer.js b/web/viewer.js index ea09d868a9926..1588ad6059871 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -22,8 +22,8 @@ Promise, PDFLinkService, PDFOutlineView, PDFAttachmentView, OverlayManager, PDFFindController, PDFFindBar, getVisibleElements, watchScroll, PDFViewer, PDFRenderingQueue, PresentationModeState, - parseQueryString, RenderingStates, DEFAULT_SCALE, UNKNOWN_SCALE, - IGNORE_CURRENT_POSITION_ON_ZOOM: true */ + parseQueryString, RenderingStates, UNKNOWN_SCALE, + DEFAULT_SCALE_VALUE, IGNORE_CURRENT_POSITION_ON_ZOOM: true */ 'use strict'; @@ -36,13 +36,9 @@ var SCALE_SELECT_CONTAINER_PADDING = 8; var SCALE_SELECT_PADDING = 22; var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading'; var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; -//#if B2G -//PDFJS.useOnlyCssZoom = true; -//PDFJS.disableTextLayer = true; -//#endif PDFJS.imageResourcesPath = './images/'; -//#if (FIREFOX || MOZCENTRAL || B2G || GENERIC || CHROME) +//#if (FIREFOX || MOZCENTRAL || GENERIC || CHROME) //PDFJS.workerSrc = '../build/pdf.worker.js'; //#endif //#if !PRODUCTION @@ -58,18 +54,13 @@ var mozL10n = document.mozL10n || document.webL10n; //#include ui_utils.js //#include preferences.js -//#if !(FIREFOX || MOZCENTRAL || B2G) +//#if !(FIREFOX || MOZCENTRAL) //#include mozPrintCallback_polyfill.js //#endif //#if GENERIC || CHROME //#include download_manager.js //#endif -//#if B2G -//var DownloadManager = (function DownloadManagerClosure() { -// return function DownloadManager() {}; -//})(); -//#endif //#if FIREFOX || MOZCENTRAL //#include firefoxcom.js @@ -475,9 +466,6 @@ var PDFViewerApplication = { return; } document.title = title; -//#if B2G -// document.getElementById('activityTitle').textContent = title; -//#endif }, close: function pdfViewClose() { @@ -560,10 +548,6 @@ var PDFViewerApplication = { loadingErrorMessage = mozL10n.get('unexpected_response_error', null, 'Unexpected server response.'); } -//#if B2G -// window.alert(loadingErrorMessage); -// return window.close(); -//#endif var moreInfo = { message: message @@ -757,7 +741,7 @@ var PDFViewerApplication = { var id = this.documentFingerprint = pdfDocument.fingerprint; var store = this.store = new ViewHistory(id); -//#if (GENERIC || B2G) +//#if GENERIC var baseDocumentUrl = null; //#endif //#if (FIREFOX || MOZCENTRAL) @@ -994,10 +978,10 @@ var PDFViewerApplication = { this.page = 1; } - if (this.pdfViewer.currentScale === UNKNOWN_SCALE) { + if (!this.pdfViewer.currentScaleValue) { // Scale was not initialized: invalid bookmark or scale was not specified. // Setting the default one. - this.setScale(DEFAULT_SCALE, true); + this.setScale(DEFAULT_SCALE_VALUE, true); } }, @@ -1253,7 +1237,7 @@ function webViewerLoad(evt) { } function webViewerInitialized() { -//#if (GENERIC || B2G) +//#if GENERIC var queryString = document.location.search.substring(1); var params = parseQueryString(queryString); var file = 'file' in params ? params.file : DEFAULT_URL; @@ -1903,7 +1887,7 @@ window.addEventListener('keydown', function keydown(evt) { // keeping it unhandled (to restore page zoom to 100%) setTimeout(function () { // ... and resetting the scale after browser adjusts its scale - PDFViewerApplication.setScale(DEFAULT_SCALE, true); + PDFViewerApplication.setScale(DEFAULT_SCALE_VALUE, true); }); handled = false; } @@ -2106,24 +2090,3 @@ window.addEventListener('afterprint', function afterPrint(evt) { window.requestAnimationFrame(resolve); }); })(); - -//#if B2G -//window.navigator.mozSetMessageHandler('activity', function(activity) { -// var blob = activity.source.data.blob; -// PDFJS.maxImageSize = 1024 * 1024; -// var fileURL = activity.source.data.url || -// activity.source.data.filename || -// " "; // if no url or filename, use a non-empty string -// -// var url = URL.createObjectURL(blob); -// // We need to delay opening until all HTML is loaded. -// PDFViewerApplication.animationStartedPromise.then(function () { -// PDFViewerApplication.open({url : url, originalUrl: fileURL}); -// -// var header = document.getElementById('header'); -// header.addEventListener('action', function() { -// activity.postResult('close'); -// }); -// }); -//}); -//#endif