Browse Source

Merge pull request #8653 from Rob--W/crx-migrate-pref-enableHandToolOnLoad-to-cursorToolOnLoad

Add UI for the cursorToolOnLoad pref in the Chrome extension + migration logic
Tim van der Meij 8 years ago committed by GitHub
parent
commit
4a74cc418c
  1. 29
      extensions/chromium/options/migration.js
  2. 12
      extensions/chromium/options/options.html
  3. 19
      extensions/chromium/options/options.js
  4. 1
      extensions/chromium/preferences_schema.json
  5. 13
      web/chromecom.js

29
extensions/chromium/options/migration.js

@ -29,6 +29,8 @@ limitations under the License. @@ -29,6 +29,8 @@ limitations under the License.
storageLocal.get(storageKeys, function(values) {
if (!values || !Object.keys(values).length) {
// No local storage - nothing to migrate.
// ... except possibly for a renamed preference name.
migrateRenamedStorage();
return;
}
migrateToSyncStorage(values);
@ -63,7 +65,34 @@ limitations under the License. @@ -63,7 +65,34 @@ limitations under the License.
// the migration successful.
console.log(
'Successfully migrated preferences from local to sync storage.');
migrateRenamedStorage();
});
});
}
// TODO: Remove this migration code somewhere in the future, when most users
// have had their chance of migrating to the new preference format.
// Note: We cannot modify managed preferences, so the migration logic is
// duplicated in web/chromecom.js too.
function migrateRenamedStorage() {
storageSync.get([
'enableHandToolOnLoad',
'cursorToolOnLoad',
], function(items) {
// Migration code for https://github.com/mozilla/pdf.js/pull/7635.
if (typeof items.enableHandToolOnLoad === 'boolean') {
if (items.enableHandToolOnLoad) {
storageSync.set({
cursorToolOnLoad: 1,
}, function() {
if (!chrome.runtime.lastError) {
storageSync.remove('enableHandToolOnLoad');
}
});
} else {
storageSync.remove('enableHandToolOnLoad');
}
}
});
}
})();

12
extensions/chromium/options/options.html

@ -80,6 +80,18 @@ body { @@ -80,6 +80,18 @@ body {
</div>
</template>
<template id="cursorToolOnLoad-template">
<div class="settings-row">
<label>
<span></span>
<select>
<option value="0">Text selection tool</option>
<option value="1">Hand tool</option>
</select>
</label>
</div>
</template>
<template id="externalLinkTarget-template">
<div class="settings-row">
<label>

19
extensions/chromium/options/options.js

@ -79,6 +79,8 @@ Promise.all([ @@ -79,6 +79,8 @@ Promise.all([
renderPreference = renderDefaultZoomValue(prefSchema.title);
} else if (prefName === 'sidebarViewOnLoad') {
renderPreference = renderSidebarViewOnLoad(prefSchema.title);
} else if (prefName === 'cursorToolOnLoad') {
renderPreference = renderCursorToolOnLoad(prefSchema.title);
} else if (prefName === 'externalLinkTarget') {
renderPreference = renderExternalLinkTarget(prefSchema.title);
} else {
@ -198,6 +200,23 @@ function renderSidebarViewOnLoad(shortDescription) { @@ -198,6 +200,23 @@ function renderSidebarViewOnLoad(shortDescription) {
return renderPreference;
}
function renderCursorToolOnLoad(shortDescription) {
var wrapper = importTemplate('cursorToolOnLoad-template');
var select = wrapper.querySelector('select');
select.onchange = function() {
storageArea.set({
cursorToolOnLoad: 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) {
var wrapper = importTemplate('externalLinkTarget-template');
var select = wrapper.querySelector('select');

1
extensions/chromium/preferences_schema.json

@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
"default": 0
},
"enableHandToolOnLoad": {
"description": "Deprecated. Set cursorToolOnLoad to 1 to enable the hand tool by default.",
"type": "boolean",
"default": false
},

13
web/chromecom.js

@ -328,7 +328,18 @@ class ChromePreferences extends BasePreferences { @@ -328,7 +328,18 @@ class ChromePreferences extends BasePreferences {
// Get preferences as set by the system administrator.
// See extensions/chromium/preferences_schema.json for more information.
// These preferences can be overridden by the user.
chrome.storage.managed.get(this.defaults, getPreferences);
chrome.storage.managed.get(this.defaults, function(items) {
// Migration code for https://github.com/mozilla/pdf.js/pull/7635.
// Never remove this, because we have no means of modifying managed
// preferences.
if (items && items.enableHandToolOnLoad && !items.cursorToolOnLoad) {
// if the old enableHandToolOnLoad has a non-default value,
// and cursorToolOnLoad has a default value, migrate.
items.enableHandToolOnLoad = false;
items.cursorToolOnLoad = 1;
}
getPreferences(items);
});
} else {
// Managed storage not supported, e.g. in old Chromium versions.
getPreferences(this.defaults);

Loading…
Cancel
Save