Merge pull request #9490 from Rob--W/crx-migrate-pref-to-textLayerMode
Fix regressions in preferences in Chrome
This commit is contained in:
commit
a8a7d815e7
@ -78,6 +78,9 @@ limitations under the License.
|
|||||||
storageSync.get([
|
storageSync.get([
|
||||||
'enableHandToolOnLoad',
|
'enableHandToolOnLoad',
|
||||||
'cursorToolOnLoad',
|
'cursorToolOnLoad',
|
||||||
|
'disableTextLayer',
|
||||||
|
'enhanceTextSelection',
|
||||||
|
'textLayerMode',
|
||||||
], function(items) {
|
], function(items) {
|
||||||
// Migration code for https://github.com/mozilla/pdf.js/pull/7635.
|
// Migration code for https://github.com/mozilla/pdf.js/pull/7635.
|
||||||
if (typeof items.enableHandToolOnLoad === 'boolean') {
|
if (typeof items.enableHandToolOnLoad === 'boolean') {
|
||||||
@ -93,6 +96,23 @@ limitations under the License.
|
|||||||
storageSync.remove('enableHandToolOnLoad');
|
storageSync.remove('enableHandToolOnLoad');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Migration code for https://github.com/mozilla/pdf.js/pull/9479.
|
||||||
|
if (typeof items.disableTextLayer === 'boolean') {
|
||||||
|
var textLayerMode = items.disableTextLayer ? 0 :
|
||||||
|
items.enhanceTextSelection ? 2 : 1;
|
||||||
|
if (textLayerMode !== 1) {
|
||||||
|
// Overwrite if computed textLayerMode is not the default value (1).
|
||||||
|
storageSync.set({
|
||||||
|
textLayerMode: textLayerMode,
|
||||||
|
}, function() {
|
||||||
|
if (!chrome.runtime.lastError) {
|
||||||
|
storageSync.remove(['disableTextLayer', 'enhanceTextSelection']);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
storageSync.remove(['disableTextLayer', 'enhanceTextSelection']);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
@ -92,6 +92,19 @@ body {
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template id="textLayerMode-template">
|
||||||
|
<div class="settings-row">
|
||||||
|
<label>
|
||||||
|
<span></span>
|
||||||
|
<select>
|
||||||
|
<option value="0">Disable text selection</option>
|
||||||
|
<option value="1">Enable text selection</option>
|
||||||
|
<option value="2">Enable enhanced mode (experimental)</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template id="externalLinkTarget-template">
|
<template id="externalLinkTarget-template">
|
||||||
<div class="settings-row">
|
<div class="settings-row">
|
||||||
<label>
|
<label>
|
||||||
|
@ -81,6 +81,8 @@ Promise.all([
|
|||||||
renderPreference = renderSidebarViewOnLoad(prefSchema.title);
|
renderPreference = renderSidebarViewOnLoad(prefSchema.title);
|
||||||
} else if (prefName === 'cursorToolOnLoad') {
|
} else if (prefName === 'cursorToolOnLoad') {
|
||||||
renderPreference = renderCursorToolOnLoad(prefSchema.title);
|
renderPreference = renderCursorToolOnLoad(prefSchema.title);
|
||||||
|
} else if (prefName === 'textLayerMode') {
|
||||||
|
renderPreference = renderTextLayerMode(prefSchema.title);
|
||||||
} else if (prefName === 'externalLinkTarget') {
|
} else if (prefName === 'externalLinkTarget') {
|
||||||
renderPreference = renderExternalLinkTarget(prefSchema.title);
|
renderPreference = renderExternalLinkTarget(prefSchema.title);
|
||||||
} else {
|
} else {
|
||||||
@ -217,6 +219,23 @@ function renderCursorToolOnLoad(shortDescription) {
|
|||||||
return renderPreference;
|
return renderPreference;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderTextLayerMode(shortDescription) {
|
||||||
|
var wrapper = importTemplate('textLayerMode-template');
|
||||||
|
var select = wrapper.querySelector('select');
|
||||||
|
select.onchange = function() {
|
||||||
|
storageArea.set({
|
||||||
|
textLayerMode: parseInt(this.value),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
wrapper.querySelector('span').textContent = shortDescription;
|
||||||
|
document.getElementById('settings-boxes').appendChild(wrapper);
|
||||||
|
|
||||||
|
function renderPreference(value) {
|
||||||
|
select.value = value;
|
||||||
|
}
|
||||||
|
return renderPreference;
|
||||||
|
}
|
||||||
|
|
||||||
function renderExternalLinkTarget(shortDescription) {
|
function renderExternalLinkTarget(shortDescription) {
|
||||||
var wrapper = importTemplate('externalLinkTarget-template');
|
var wrapper = importTemplate('externalLinkTarget-template');
|
||||||
var select = wrapper.querySelector('select');
|
var select = wrapper.querySelector('select');
|
||||||
|
@ -26,6 +26,11 @@
|
|||||||
],
|
],
|
||||||
"default": 0
|
"default": 0
|
||||||
},
|
},
|
||||||
|
"enableHandToolOnLoad": {
|
||||||
|
"description": "DEPRECATED. Set cursorToolOnLoad to 1 to enable the hand tool by default.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
"cursorToolOnLoad": {
|
"cursorToolOnLoad": {
|
||||||
"title": "Cursor tool on load",
|
"title": "Cursor tool on load",
|
||||||
"description": "The cursor tool that is enabled upon load.\n 0 = Text selection tool.\n 1 = Hand tool.",
|
"description": "The cursor tool that is enabled upon load.\n 0 = Text selection tool.\n 1 = Hand tool.",
|
||||||
@ -70,6 +75,16 @@
|
|||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
},
|
},
|
||||||
|
"disableTextLayer": {
|
||||||
|
"description": "DEPRECATED. Set textLayerMode to 0 to disable the text selection layer by default.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"enhanceTextSelection": {
|
||||||
|
"description": "DEPRECATED. Set textLayerMode to 2 to use the enhanced text selection layer by default.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
"textLayerMode": {
|
"textLayerMode": {
|
||||||
"title": "Text layer mode",
|
"title": "Text layer mode",
|
||||||
"description": "Controls if the text layer is enabled, and the selection mode that is used.\n 0 = Disabled.\n 1 = Enabled.\n 2 = (Experimental) Enabled, with enhanced text selection.",
|
"description": "Controls if the text layer is enabled, and the selection mode that is used.\n 0 = Disabled.\n 1 = Enabled.\n 2 = (Experimental) Enabled, with enhanced text selection.",
|
||||||
|
@ -192,6 +192,13 @@ function getVersionJSON() {
|
|||||||
function checkChromePreferencesFile(chromePrefsPath, webPrefsPath) {
|
function checkChromePreferencesFile(chromePrefsPath, webPrefsPath) {
|
||||||
var chromePrefs = JSON.parse(fs.readFileSync(chromePrefsPath).toString());
|
var chromePrefs = JSON.parse(fs.readFileSync(chromePrefsPath).toString());
|
||||||
var chromePrefsKeys = Object.keys(chromePrefs.properties);
|
var chromePrefsKeys = Object.keys(chromePrefs.properties);
|
||||||
|
chromePrefsKeys = chromePrefsKeys.filter(function (key) {
|
||||||
|
var description = chromePrefs.properties[key].description;
|
||||||
|
// Deprecated keys are allowed in the managed preferences file.
|
||||||
|
// The code maintained is responsible for adding migration logic to
|
||||||
|
// extensions/chromium/options/migration.js and web/chromecom.js .
|
||||||
|
return !description || !description.startsWith('DEPRECATED.');
|
||||||
|
});
|
||||||
chromePrefsKeys.sort();
|
chromePrefsKeys.sort();
|
||||||
var webPrefs = JSON.parse(fs.readFileSync(webPrefsPath).toString());
|
var webPrefs = JSON.parse(fs.readFileSync(webPrefsPath).toString());
|
||||||
var webPrefsKeys = Object.keys(webPrefs);
|
var webPrefsKeys = Object.keys(webPrefs);
|
||||||
|
@ -308,16 +308,43 @@ class ChromePreferences extends BasePreferences {
|
|||||||
// Get preferences as set by the system administrator.
|
// Get preferences as set by the system administrator.
|
||||||
// See extensions/chromium/preferences_schema.json for more information.
|
// See extensions/chromium/preferences_schema.json for more information.
|
||||||
// These preferences can be overridden by the user.
|
// These preferences can be overridden by the user.
|
||||||
chrome.storage.managed.get(this.defaults, function(items) {
|
|
||||||
// Migration code for https://github.com/mozilla/pdf.js/pull/7635.
|
// Deprecated preferences are removed from web/default_preferences.json,
|
||||||
|
// but kept in extensions/chromium/preferences_schema.json for backwards
|
||||||
|
// compatibility with managed preferences.
|
||||||
|
let defaultManagedPrefs = Object.assign({
|
||||||
|
enableHandToolOnLoad: false,
|
||||||
|
disableTextLayer: false,
|
||||||
|
enhanceTextSelection: false,
|
||||||
|
}, this.defaults);
|
||||||
|
|
||||||
|
chrome.storage.managed.get(defaultManagedPrefs, function(items) {
|
||||||
|
items = items || defaultManagedPrefs;
|
||||||
|
// Migration logic for deprecated preferences: If the new preference
|
||||||
|
// is not defined by an administrator (i.e. the value is the same as
|
||||||
|
// the default value), and a deprecated preference is set with a
|
||||||
|
// non-default value, migrate the deprecated preference value to the
|
||||||
|
// new preference value.
|
||||||
// Never remove this, because we have no means of modifying managed
|
// Never remove this, because we have no means of modifying managed
|
||||||
// preferences.
|
// preferences.
|
||||||
if (items && items.enableHandToolOnLoad && !items.cursorToolOnLoad) {
|
|
||||||
// if the old enableHandToolOnLoad has a non-default value,
|
// Migration code for https://github.com/mozilla/pdf.js/pull/7635.
|
||||||
// and cursorToolOnLoad has a default value, migrate.
|
if (items.enableHandToolOnLoad && !items.cursorToolOnLoad) {
|
||||||
items.enableHandToolOnLoad = false;
|
|
||||||
items.cursorToolOnLoad = 1;
|
items.cursorToolOnLoad = 1;
|
||||||
}
|
}
|
||||||
|
delete items.enableHandToolOnLoad;
|
||||||
|
|
||||||
|
// Migration code for https://github.com/mozilla/pdf.js/pull/9479.
|
||||||
|
if (items.textLayerMode !== 1) {
|
||||||
|
if (items.disableTextLayer) {
|
||||||
|
items.textLayerMode = 0;
|
||||||
|
} else if (items.enhanceTextSelection) {
|
||||||
|
items.textLayerMode = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete items.disableTextLayer;
|
||||||
|
delete items.enhanceTextSelection;
|
||||||
|
|
||||||
getPreferences(items);
|
getPreferences(items);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user