Skip to content

Instantly share code, notes, and snippets.

@Snuffleupagus
Created June 12, 2018 12:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Snuffleupagus/7a8673b9b2f37c841a2d4a4f76a3cb0c to your computer and use it in GitHub Desktop.
Save Snuffleupagus/7a8673b9b2f37c841a2d4a4f76a3cb0c to your computer and use it in GitHub Desktop.
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
# 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