Created
June 12, 2018 12:21
-
-
Save Snuffleupagus/7a8673b9b2f37c841a2d4a4f76a3cb0c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From dff7e1e3e3e6856268fbca1dcc7bf7cf65773c16 Mon Sep 17 00:00:00 2001 | |
From: Jonas Jenwald <jonas.jenwald@gmail.com> | |
Date: Wed, 25 Apr 2018 11:40:28 +0200 | |
Subject: [PATCH] createDefaultPrefsFile | |
--- | |
.../firefox/content/PdfJsDefaultPreferences.jsm | 21 ---------- | |
gulpfile.js | 47 ++++++++++++++++------ | |
2 files changed, 35 insertions(+), 33 deletions(-) | |
delete mode 100644 extensions/firefox/content/PdfJsDefaultPreferences.jsm | |
diff --git a/extensions/firefox/content/PdfJsDefaultPreferences.jsm b/extensions/firefox/content/PdfJsDefaultPreferences.jsm | |
deleted file mode 100644 | |
index fb640c74..00000000 | |
--- a/extensions/firefox/content/PdfJsDefaultPreferences.jsm | |
+++ /dev/null | |
@@ -1,21 +0,0 @@ | |
-/* Copyright 2018 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. | |
- */ | |
- | |
-"use strict"; | |
- | |
-var EXPORTED_SYMBOLS = ["PdfJsDefaultPreferences"]; | |
- | |
-var PdfJsDefaultPreferences = | |
- Object.freeze(PDFJSDev.json("$ROOT/web/default_preferences.json")); | |
diff --git a/gulpfile.js b/gulpfile.js | |
index a0bc0eb5..011fbaca 100644 | |
--- a/gulpfile.js | |
+++ b/gulpfile.js | |
@@ -693,19 +693,41 @@ gulp.task('minified-post', ['minified-pre'], function () { | |
gulp.task('minified', ['minified-post']); | |
-function preprocessDefaultPreferences(content) { | |
- var preprocessor2 = require('./external/builder/preprocessor2.js'); | |
+function createDefaultPrefsFile(prefsFile) { | |
var licenseHeader = fs.readFileSync('./src/license_header.js').toString(); | |
var MODIFICATION_WARNING = | |
- '//\n// THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT MANUALLY!\n//\n'; | |
+ '/**\n' + | |
+ ' * THIS FILE IS GENERATED AUTOMATICALLY, DO NOT EDIT MANUALLY!\n' + | |
+ ' *\n' + | |
+ ' * See `createDefaultPrefsFile` in https://github.com/mozilla/pdf.js/blob/master/gulpfile.js\n' + | |
+ ' */\n'; | |
- content = preprocessor2.preprocessPDFJSCode({ | |
- rootPath: __dirname, | |
- defines: DEFINES, | |
- }, content); | |
+ var PREF_PREFIX = 'pdfjs.'; | |
+ | |
+ var prefs = JSON.parse(prefsFile); | |
+ var prefBuf = []; | |
+ for (var name in prefs) { | |
+ var prefValue = prefs[name]; | |
- return licenseHeader + '\n' + MODIFICATION_WARNING + '\n' + content + '\n'; | |
+ switch (typeof prefValue) { | |
+ case 'boolean': | |
+ break; | |
+ case 'number': | |
+ prefValue = prefValue | 0; | |
+ break; | |
+ case 'string': | |
+ prefValue = '"' + prefValue + '"'; | |
+ break; | |
+ default: | |
+ throw new Error('createDefaultPrefsFile - preference "' + name + | |
+ '" has invalid type (' + typeof prefValue + ').'); | |
+ } | |
+ prefBuf.push('pref("' + PREF_PREFIX + name + '", ' + prefValue + ');'); | |
+ } | |
+ | |
+ return licenseHeader + '\n' + MODIFICATION_WARNING + '\n' + | |
+ prefBuf.join('\n') + '\n'; | |
} | |
gulp.task('mozcentral-pre', ['buildnumber', 'locale'], function () { | |
@@ -717,8 +739,7 @@ gulp.task('mozcentral-pre', ['buildnumber', 'locale'], function () { | |
MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + 'browser/extensions/pdfjs/', | |
MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_EXTENSION_DIR + 'content/', | |
FIREFOX_EXTENSION_DIR = 'extensions/firefox/', | |
- MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + 'browser/locales/en-US/pdfviewer/', | |
- FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/'; | |
+ MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + 'browser/locales/en-US/pdfviewer/'; | |
// Clear out everything in the firefox extension build directory | |
rimraf.sync(MOZCENTRAL_DIR); | |
@@ -750,8 +771,10 @@ gulp.task('mozcentral-pre', ['buildnumber', 'locale'], function () { | |
.pipe(replace(/\bPDFJSSCRIPT_COMMIT\b/g, commit)) | |
.pipe(gulp.dest(MOZCENTRAL_EXTENSION_DIR)), | |
gulp.src('LICENSE').pipe(gulp.dest(MOZCENTRAL_EXTENSION_DIR)), | |
- gulp.src(FIREFOX_CONTENT_DIR + 'PdfJsDefaultPreferences.jsm') | |
- .pipe(transform('utf8', preprocessDefaultPreferences)) | |
+ | |
+ gulp.src('web/default_preferences.json') | |
+ .pipe(transform('utf8', createDefaultPrefsFile)) | |
+ .pipe(rename('pdfjs-viewer-prefs.js')) | |
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)), | |
]); | |
}); | |
-- | |
2.12.2.windows.2 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# HG changeset patch | |
# User Jonas Jenwald <jonas.jenwald@gmail.com> | |
# Date 1524649683 -7200 | |
# Wed Apr 25 11:48:03 2018 +0200 | |
# Node ID 534a8f7c07d6377105117b4a4d39f78017926b52 | |
# Parent ceac91dc08bef5d099c10dda632fc3651b23c897 | |
createDefaultPrefsFile | |
diff --git a/browser/extensions/pdfjs/content/PdfJs.jsm b/browser/extensions/pdfjs/content/PdfJs.jsm | |
--- a/browser/extensions/pdfjs/content/PdfJs.jsm | |
+++ b/browser/extensions/pdfjs/content/PdfJs.jsm | |
@@ -44,18 +44,16 @@ XPCOMUtils.defineLazyServiceGetter(Svc, | |
"nsIMIMEService"); | |
XPCOMUtils.defineLazyServiceGetter(Svc, "pluginHost", | |
"@mozilla.org/plugin/host;1", | |
"nsIPluginHost"); | |
ChromeUtils.defineModuleGetter(this, "PdfjsChromeUtils", | |
"resource://pdf.js/PdfjsChromeUtils.jsm"); | |
ChromeUtils.defineModuleGetter(this, "PdfjsContentUtils", | |
"resource://pdf.js/PdfjsContentUtils.jsm"); | |
-ChromeUtils.defineModuleGetter(this, "PdfJsDefaultPreferences", | |
- "resource://pdf.js/PdfJsDefaultPreferences.jsm"); | |
function getBoolPref(aPref, aDefaultValue) { | |
try { | |
return Services.prefs.getBoolPref(aPref); | |
} catch (ex) { | |
return aDefaultValue; | |
} | |
} | |
@@ -71,35 +69,16 @@ function getIntPref(aPref, aDefaultValue | |
function isDefaultHandler() { | |
if (Services.appinfo.processType !== Services.appinfo.PROCESS_TYPE_DEFAULT) { | |
throw new Error("isDefaultHandler should only get called in the parent " + | |
"process."); | |
} | |
return PdfjsChromeUtils.isDefaultHandlerApp(); | |
} | |
-function initializeDefaultPreferences() { | |
- var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + "."); | |
- var defaultValue; | |
- for (var key in PdfJsDefaultPreferences) { | |
- defaultValue = PdfJsDefaultPreferences[key]; | |
- switch (typeof defaultValue) { | |
- case "boolean": | |
- defaultBranch.setBoolPref(key, defaultValue); | |
- break; | |
- case "number": | |
- defaultBranch.setIntPref(key, defaultValue); | |
- break; | |
- case "string": | |
- defaultBranch.setCharPref(key, defaultValue); | |
- break; | |
- } | |
- } | |
-} | |
- | |
// Register/unregister a constructor as a factory. | |
function Factory() {} | |
Factory.prototype = { | |
register: function register(targetConstructor) { | |
var proto = targetConstructor.prototype; | |
this._classID = proto.classID; | |
var factory = XPCOMUtils._getFactory(targetConstructor); | |
@@ -157,18 +136,16 @@ var PdfJs = { | |
// Listen for when pdf.js is completely disabled or a different pdf handler | |
// is chosen. | |
Services.prefs.addObserver(PREF_DISABLED, this); | |
Services.prefs.addObserver(PREF_DISABLED_PLUGIN_TYPES, this); | |
Services.obs.addObserver(this, TOPIC_PDFJS_HANDLER_CHANGED); | |
Services.obs.addObserver(this, TOPIC_PLUGINS_LIST_UPDATED); | |
Services.obs.addObserver(this, TOPIC_PLUGIN_INFO_UPDATED); | |
- | |
- initializeDefaultPreferences(); | |
}, | |
updateRegistration: function updateRegistration() { | |
if (this.checkEnabled()) { | |
this.ensureRegistered(); | |
} else { | |
this.ensureUnregistered(); | |
} | |
diff --git a/browser/extensions/pdfjs/content/PdfJsDefaultPreferences.jsm b/browser/extensions/pdfjs/content/PdfJsDefaultPreferences.jsm | |
deleted file mode 100644 | |
--- a/browser/extensions/pdfjs/content/PdfJsDefaultPreferences.jsm | |
+++ /dev/null | |
@@ -1,41 +0,0 @@ | |
-/* Copyright 2017 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. | |
- */ | |
- | |
-// | |
-// THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT MANUALLY! | |
-// | |
- | |
-"use strict"; | |
-var EXPORTED_SYMBOLS = ["PdfJsDefaultPreferences"]; | |
-var PdfJsDefaultPreferences = Object.freeze({ | |
- "showPreviousViewOnLoad": true, | |
- "defaultZoomValue": "", | |
- "sidebarViewOnLoad": 0, | |
- "cursorToolOnLoad": 0, | |
- "enableWebGL": false, | |
- "pdfBugEnabled": false, | |
- "disableRange": false, | |
- "disableStream": false, | |
- "disableAutoFetch": false, | |
- "disableFontFace": false, | |
- "textLayerMode": 1, | |
- "useOnlyCssZoom": false, | |
- "externalLinkTarget": 0, | |
- "renderer": "canvas", | |
- "renderInteractiveForms": false, | |
- "enablePrintAutoRotate": false, | |
- "disablePageMode": false, | |
- "disablePageLabels": false | |
-}); | |
diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm | |
--- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm | |
+++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm | |
@@ -441,25 +441,26 @@ class ChromeActions { | |
.getInterface(Ci.nsIDocShell) | |
.QueryInterface(Ci.nsIInterfaceRequestor) | |
.getInterface(Ci.nsIContentFrameMessageManager); | |
winmm.sendAsyncMessage("PDFJS:Parent:updateControlState", data); | |
} | |
setPreferences(prefs, sendResponse) { | |
- var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + "."); | |
+ const 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)) { | |
+ } else if (defaultBranch.getPrefType(key) === Services.prefs.PREF_INVALID) { | |
+ log("setPreferences - Cannot set preference not present in the default branch."); | |
continue; | |
} | |
prefValue = prefs[key]; | |
prefName = (PREF_PREFIX + "." + key); | |
switch (typeof prefValue) { | |
case "boolean": | |
PdfjsContentUtils.setBoolPref(prefName, prefValue); | |
break; | |
diff --git a/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm b/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm | |
--- a/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm | |
+++ b/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm | |
@@ -18,28 +18,22 @@ | |
var EXPORTED_SYMBOLS = ["PdfjsChromeUtils"]; | |
const PREF_PREFIX = "pdfjs"; | |
const PDF_CONTENT_TYPE = "application/pdf"; | |
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); | |
ChromeUtils.import("resource://gre/modules/Services.jsm"); | |
-ChromeUtils.defineModuleGetter(this, "PdfJsDefaultPreferences", | |
- "resource://pdf.js/PdfJsDefaultPreferences.jsm"); | |
- | |
var Svc = {}; | |
XPCOMUtils.defineLazyServiceGetter(Svc, "mime", | |
"@mozilla.org/mime;1", | |
"nsIMIMEService"); | |
var PdfjsChromeUtils = { | |
- // For security purposes when running remote, we restrict preferences | |
- // content can access. | |
- _allowedPrefNames: Object.keys(PdfJsDefaultPreferences), | |
_ppmm: null, | |
_mmg: null, | |
/* | |
* Public API | |
*/ | |
init() { | |
@@ -257,23 +251,26 @@ var PdfjsChromeUtils = { | |
for (var i = 0; i < this._types.length; i++) { | |
var type = this._types[i]; | |
findbar.removeEventListener(type, this, true); | |
} | |
} | |
}, | |
_ensurePreferenceAllowed(aPrefName) { | |
- let unPrefixedName = aPrefName.split(PREF_PREFIX + "."); | |
- if (unPrefixedName[0] !== "" || | |
- !this._allowedPrefNames.includes(unPrefixedName[1])) { | |
- let msg = "\"" + aPrefName + "\" " + | |
- "can't be accessed from content. See PdfjsChromeUtils."; | |
- throw new Error(msg); | |
+ // For security purposes when running remote, we restrict preferences | |
+ // content can access. | |
+ const defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + "."); | |
+ const [prefix, name, ...other] = aPrefName.split("."); | |
+ | |
+ if (other.length === 0 && prefix === PREF_PREFIX && | |
+ defaultBranch.getPrefType(name) !== Services.prefs.PREF_INVALID) { | |
+ return; | |
} | |
+ throw new Error(`"${aPrefName}" can't be accessed from content. See PdfjsChromeUtils.`); | |
}, | |
_clearUserPref(aPrefName) { | |
this._ensurePreferenceAllowed(aPrefName); | |
Services.prefs.clearUserPref(aPrefName); | |
}, | |
_setIntPref(aPrefName, aPrefValue) { | |
diff --git a/browser/extensions/pdfjs/content/pdfjs-viewer-prefs.js b/browser/extensions/pdfjs/content/pdfjs-viewer-prefs.js | |
new file mode 100644 | |
--- /dev/null | |
+++ b/browser/extensions/pdfjs/content/pdfjs-viewer-prefs.js | |
@@ -0,0 +1,39 @@ | |
+/* Copyright 2017 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. | |
+ */ | |
+ | |
+/** | |
+ * THIS FILE IS GENERATED AUTOMATICALLY, DO NOT EDIT MANUALLY! | |
+ * | |
+ * See `createDefaultPrefsFile` in https://github.com/mozilla/pdf.js/blob/master/gulpfile.js | |
+ */ | |
+ | |
+pref("pdfjs.showPreviousViewOnLoad", true); | |
+pref("pdfjs.defaultZoomValue", ""); | |
+pref("pdfjs.sidebarViewOnLoad", 0); | |
+pref("pdfjs.cursorToolOnLoad", 0); | |
+pref("pdfjs.enableWebGL", false); | |
+pref("pdfjs.pdfBugEnabled", false); | |
+pref("pdfjs.disableRange", false); | |
+pref("pdfjs.disableStream", false); | |
+pref("pdfjs.disableAutoFetch", false); | |
+pref("pdfjs.disableFontFace", false); | |
+pref("pdfjs.textLayerMode", 1); | |
+pref("pdfjs.useOnlyCssZoom", false); | |
+pref("pdfjs.externalLinkTarget", 0); | |
+pref("pdfjs.renderer", "canvas"); | |
+pref("pdfjs.renderInteractiveForms", false); | |
+pref("pdfjs.enablePrintAutoRotate", false); | |
+pref("pdfjs.disablePageMode", false); | |
+pref("pdfjs.disablePageLabels", false); | |
diff --git a/modules/libpref/greprefs.js b/modules/libpref/greprefs.js | |
--- a/modules/libpref/greprefs.js | |
+++ b/modules/libpref/greprefs.js | |
@@ -1,11 +1,12 @@ | |
#include ../../security/manager/ssl/security-prefs.js | |
#include init/all.js | |
#include ../../devtools/shared/preferences/devtools-shared.js | |
+#include ../../browser/extensions/pdfjs/content/pdfjs-viewer-prefs.js | |
#ifdef MOZ_DATA_REPORTING | |
#include ../../toolkit/components/telemetry/datareporting-prefs.js | |
#endif | |
#ifdef MOZ_SERVICES_HEALTHREPORT | |
#if MOZ_WIDGET_TOOLKIT != android | |
#include ../../toolkit/components/telemetry/healthreport-prefs.js | |
#endif | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment