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() {
} 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;
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;
}
};