From fdfaa43f5ea9d9e2fef6b9c1645d9a690e3c10f9 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Wed, 25 May 2016 00:32:32 +0200 Subject: [PATCH] Resolve a regression in the Chromium extension's preferences handling Commit https://github.com/mozilla/pdf.js/commit/df10513e103cc165352fb1ee2e2cf5122a73eee1 unfortunately broke the options dialog of the Chromium extension because the logic required to work with the preference was not added. This patch adds the required logic to show the preference in the options dialog and to persist it to the preferences storage. Verified using Chromium 50 on Arch Linux. --- extensions/chromium/options/options.html | 15 +++++++++++++++ extensions/chromium/options/options.js | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/extensions/chromium/options/options.html b/extensions/chromium/options/options.html index 94ea0b45a..0e406a8fc 100644 --- a/extensions/chromium/options/options.html +++ b/extensions/chromium/options/options.html @@ -80,6 +80,21 @@ body { + + diff --git a/extensions/chromium/options/options.js b/extensions/chromium/options/options.js index 214ede9cb..1d8ec12d8 100644 --- a/extensions/chromium/options/options.js +++ b/extensions/chromium/options/options.js @@ -74,6 +74,8 @@ Promise.all([ renderPreference = renderDefaultZoomValue(prefSchema.title); } else if (prefName === 'sidebarViewOnLoad') { renderPreference = renderSidebarViewOnLoad(prefSchema.title); + } else if (prefName === 'externalLinkTarget') { + renderPreference = renderExternalLinkTarget(prefSchema.title); } else { // Should NEVER be reached. Only happens if a new type of preference is // added to the storage manifest. @@ -190,3 +192,20 @@ function renderSidebarViewOnLoad(shortDescription) { } return renderPreference; } + +function renderExternalLinkTarget(shortDescription) { + var wrapper = importTemplate('externalLinkTarget-template'); + var select = wrapper.querySelector('select'); + select.onchange = function() { + chrome.storage.local.set({ + externalLinkTarget: parseInt(this.value) + }); + }; + wrapper.querySelector('span').textContent = shortDescription; + document.getElementById('settings-boxes').appendChild(wrapper); + + function renderPreference(value) { + select.value = value; + } + return renderPreference; +}