From d454b52a18127f782fafdf71534ea2c41f20ef44 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Tue, 23 Nov 2021 22:08:30 -0500 Subject: Google Docs accessibility refactor (#2023) * Skip urlRegex if it's used as a filter * Add getRequiredContentScriptRegistrationPermissions function * Add a reentrant check to google-docs.js * Remove script node * Move forceGoogleDocsHtmlRendering check into google-docs.js * Replace document-start.js usage with google-docs.js * Remove documentStart handling * Add missing parameter descriptions --- ext/js/accessibility/google-docs.js | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'ext/js/accessibility/google-docs.js') diff --git a/ext/js/accessibility/google-docs.js b/ext/js/accessibility/google-docs.js index f9ba0f7f..e45743ab 100644 --- a/ext/js/accessibility/google-docs.js +++ b/ext/js/accessibility/google-docs.js @@ -15,7 +15,36 @@ * along with this program. If not, see . */ -(() => { +(async () => { + // Reentrant check + if (self.googleDocsAccessibilitySetup) { return; } + self.googleDocsAccessibilitySetup = true; + + const invokeApi = (action, params) => { + return new Promise((resolve, reject) => { + chrome.runtime.sendMessage({action, params}, (response) => { + void chrome.runtime.lastError; + if (typeof response !== 'object' || response === null) { + reject(new Error('Unexpected response')); + } else if (typeof response.error !== 'undefined') { + reject(new Error('Invalid response')); + } else { + resolve(response.result); + } + }); + }); + }; + + const optionsContext = {depth: 0, url: location.href}; + let options; + try { + options = await invokeApi('optionsGet', {optionsContext}); + } catch (e) { + return; + } + + if (!options.accessibility.forceGoogleDocsHtmlRendering) { return; } + let parent = document.head; if (parent === null) { parent = document.documentElement; @@ -24,4 +53,5 @@ const script = document.createElement('script'); script.textContent = 'window._docs_force_html_by_ext = true;'; parent.appendChild(script); + parent.removeChild(script); })(); -- cgit v1.2.3