|
|
|
@ -16,7 +16,7 @@
@@ -16,7 +16,7 @@
|
|
|
|
|
*/ |
|
|
|
|
/* jshint esnext:true */ |
|
|
|
|
/* globals Components, Services, XPCOMUtils, NetUtil, PrivateBrowsingUtils, |
|
|
|
|
dump, NetworkManager, PdfJsTelemetry, DEFAULT_PREFERENCES */ |
|
|
|
|
dump, NetworkManager, PdfJsTelemetry */ |
|
|
|
|
|
|
|
|
|
'use strict'; |
|
|
|
|
|
|
|
|
@ -33,16 +33,14 @@ const PDF_CONTENT_TYPE = 'application/pdf';
@@ -33,16 +33,14 @@ const PDF_CONTENT_TYPE = 'application/pdf';
|
|
|
|
|
const PREF_PREFIX = 'PDFJSSCRIPT_PREF_PREFIX'; |
|
|
|
|
const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html'; |
|
|
|
|
const MAX_DATABASE_LENGTH = 4096; |
|
|
|
|
const MAX_STRING_PREF_LENGTH = 4096; |
|
|
|
|
const MAX_NUMBER_OF_PREFS = 50; |
|
|
|
|
const MAX_STRING_PREF_LENGTH = 128; |
|
|
|
|
|
|
|
|
|
Cu.import('resource://gre/modules/XPCOMUtils.jsm'); |
|
|
|
|
Cu.import('resource://gre/modules/Services.jsm'); |
|
|
|
|
Cu.import('resource://gre/modules/NetUtil.jsm'); |
|
|
|
|
Cu.import('resource://pdf.js/network.js'); |
|
|
|
|
|
|
|
|
|
// Load the default preferences.
|
|
|
|
|
Cu.import('resource://pdf.js/default_preferences.js'); |
|
|
|
|
|
|
|
|
|
XPCOMUtils.defineLazyModuleGetter(this, 'PrivateBrowsingUtils', |
|
|
|
|
'resource://gre/modules/PrivateBrowsingUtils.jsm'); |
|
|
|
|
|
|
|
|
@ -453,23 +451,20 @@ ChromeActions.prototype = {
@@ -453,23 +451,20 @@ ChromeActions.prototype = {
|
|
|
|
|
.updateControlState(result, findPrevious); |
|
|
|
|
}, |
|
|
|
|
setPreferences: function(prefs) { |
|
|
|
|
var prefValue, defaultValue, prefName, prefType, defaultType; |
|
|
|
|
|
|
|
|
|
for (var key in DEFAULT_PREFERENCES) { |
|
|
|
|
prefValue = prefs[key]; |
|
|
|
|
defaultValue = DEFAULT_PREFERENCES[key]; |
|
|
|
|
prefName = (PREF_PREFIX + '.' + key); |
|
|
|
|
|
|
|
|
|
if (prefValue === undefined || prefValue === defaultValue) { |
|
|
|
|
Services.prefs.clearUserPref(prefName); |
|
|
|
|
} else { |
|
|
|
|
prefType = typeof prefValue; |
|
|
|
|
defaultType = typeof defaultValue; |
|
|
|
|
|
|
|
|
|
if (prefType !== defaultType) { |
|
|
|
|
var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + '.'); |
|
|
|
|
var numberOfPrefs = 0; |
|
|
|
|
var prefValue, prefName; |
|
|
|
|
for (var key in prefs) { |
|
|
|
|
if (++numberOfPrefs > MAX_NUMBER_OF_PREFS) { |
|
|
|
|
log('setPreferences - Exceeded the maximum number of preferences ' + |
|
|
|
|
'that is allowed to be set at once.'); |
|
|
|
|
break; |
|
|
|
|
} else if (!defaultBranch.getPrefType(key)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
switch (defaultType) { |
|
|
|
|
prefValue = prefs[key]; |
|
|
|
|
prefName = (PREF_PREFIX + '.' + key); |
|
|
|
|
switch (typeof prefValue) { |
|
|
|
|
case 'boolean': |
|
|
|
|
setBoolPref(prefName, prefValue); |
|
|
|
|
break; |
|
|
|
@ -477,32 +472,39 @@ ChromeActions.prototype = {
@@ -477,32 +472,39 @@ ChromeActions.prototype = {
|
|
|
|
|
setIntPref(prefName, prefValue); |
|
|
|
|
break; |
|
|
|
|
case 'string': |
|
|
|
|
// Protect against adding arbitrarily long strings in about:config.
|
|
|
|
|
if (prefValue.length <= MAX_STRING_PREF_LENGTH) { |
|
|
|
|
if (prefValue.length > MAX_STRING_PREF_LENGTH) { |
|
|
|
|
log('setPreferences - Exceeded the maximum allowed length ' + |
|
|
|
|
'for a string preference.'); |
|
|
|
|
} else { |
|
|
|
|
setStringPref(prefName, prefValue); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
getPreferences: function() { |
|
|
|
|
var currentPrefs = {}; |
|
|
|
|
var defaultValue, prefName; |
|
|
|
|
|
|
|
|
|
for (var key in DEFAULT_PREFERENCES) { |
|
|
|
|
defaultValue = DEFAULT_PREFERENCES[key]; |
|
|
|
|
getPreferences: function(prefs) { |
|
|
|
|
var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + '.'); |
|
|
|
|
var currentPrefs = {}, numberOfPrefs = 0; |
|
|
|
|
var prefValue, prefName; |
|
|
|
|
for (var key in prefs) { |
|
|
|
|
if (++numberOfPrefs > MAX_NUMBER_OF_PREFS) { |
|
|
|
|
log('getPreferences - Exceeded the maximum number of preferences ' + |
|
|
|
|
'that is allowed to be fetched at once.'); |
|
|
|
|
break; |
|
|
|
|
} else if (!defaultBranch.getPrefType(key)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
prefValue = prefs[key]; |
|
|
|
|
prefName = (PREF_PREFIX + '.' + key); |
|
|
|
|
|
|
|
|
|
switch (typeof defaultValue) { |
|
|
|
|
switch (typeof prefValue) { |
|
|
|
|
case 'boolean': |
|
|
|
|
currentPrefs[key] = getBoolPref(prefName, defaultValue); |
|
|
|
|
currentPrefs[key] = getBoolPref(prefName, prefValue); |
|
|
|
|
break; |
|
|
|
|
case 'number': |
|
|
|
|
currentPrefs[key] = getIntPref(prefName, defaultValue); |
|
|
|
|
currentPrefs[key] = getIntPref(prefName, prefValue); |
|
|
|
|
break; |
|
|
|
|
case 'string': |
|
|
|
|
currentPrefs[key] = getStringPref(prefName, defaultValue); |
|
|
|
|
currentPrefs[key] = getStringPref(prefName, prefValue); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|