From: Artur Adib Date: Wed, 1 Feb 2012 17:08:40 +0000 (-0500) Subject: Merge branch 'refs/heads/master' into localStorage-fix X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=6aa02d286ec9a549cee99e10c555cc7277f8c5f8;p=pdf.js.git Merge branch 'refs/heads/master' into localStorage-fix Conflicts: web/viewer.js --- 6aa02d286ec9a549cee99e10c555cc7277f8c5f8 diff --cc web/viewer.js index 11c0769,04339ca..cc279cf --- a/web/viewer.js +++ b/web/viewer.js @@@ -61,8 -62,33 +62,33 @@@ var RenderingQueue = (function Renderin return RenderingQueue; })(); + var FirefoxCom = (function FirefoxComClosure() { + return { + /** + * Creates an event that hopefully the extension is listening for and will + * synchronously respond to. + * @param {String} action The action to trigger. + * @param {String} data Optional data to send. + * @return {*} The response. + */ + request: function(action, data) { + var request = document.createTextNode(''); + request.setUserData('action', action, null); + request.setUserData('data', data, null); + document.documentElement.appendChild(request); + + var sender = document.createEvent('Events'); + sender.initEvent('pdf.js.message', true, false); + request.dispatchEvent(sender); + var response = request.getUserData('response'); + document.documentElement.removeChild(request); + return response; + } + }; + })(); + // Settings Manager - This is a utility for saving settings -// First we see if localStorage is available, FF bug #495747 +// First we see if localStorage is available // If not, we use FUEL in FF var Settings = (function SettingsClosure() { var isLocalStorageEnabled = (function localStorageEnabledTest() { @@@ -75,15 -97,10 +101,9 @@@ } catch (e) { return false; } - return true; })(); - var extPrefix = 'extensions.uriloader@pdf.js'; - var isExtension = location.protocol == 'chrome:' && !isLocalStorageEnabled; - var inPrivateBrowsing = false; - if (isExtension) { - var pbs = Components.classes['@mozilla.org/privatebrowsing;1'] - .getService(Components.interfaces.nsIPrivateBrowsingService); - inPrivateBrowsing = pbs.privateBrowsingEnabled; - } + + var isFirefoxExtension = PDFJS.isFirefoxExtension; function Settings(fingerprint) { var database = null; @@@ -122,22 -134,16 +137,22 @@@ Settings.prototype = { set: function settingsSet(name, val) { - if (inPrivateBrowsing || !('file' in this)) ++ if (!('file' in this)) + return false; + var file = this.file; file[name] = val; - if (isExtension) - Application.prefs.setValue(extPrefix + '.database', - JSON.stringify(this.database)); + var database = JSON.stringify(this.database); + if (isFirefoxExtension) + FirefoxCom.request('setDatabase', database); else if (isLocalStorageEnabled) - localStorage.setItem('database', JSON.stringify(this.database)); + localStorage.setItem('database', database); }, get: function settingsGet(name, defaultValue) { - if (inPrivateBrowsing || !('file' in this)) ++ if (!('file' in this)) + return defaultValue; + return this.file[name] || defaultValue; } };