From d5320c71a6b2219039d9e3d7c7fd4381f1c6b31d Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Tue, 13 Jul 2021 20:19:48 -0400 Subject: [PATCH] Throw an error when _getProfile doesn't have a matching profile (#1826) --- ext/js/background/backend.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index af847610..623f3612 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -996,14 +996,27 @@ class Backend { _getProfile(optionsContext, useSchema=false) { const options = this._getOptionsFull(useSchema); const profiles = options.profiles; - if (optionsContext.current) { - return profiles[options.profileCurrent]; + if (!optionsContext.current) { + // Specific index + const {index} = optionsContext; + if (typeof index === 'number') { + if (index < 0 || index >= profiles.length) { + throw this._createDataError(`Invalid profile index: ${index}`, optionsContext); + } + return profiles[index]; + } + // From context + const profile = this._getProfileFromContext(options, optionsContext); + if (profile !== null) { + return profile; + } } - if (typeof optionsContext.index === 'number') { - return profiles[optionsContext.index]; + // Default + const {profileCurrent} = options; + if (profileCurrent < 0 || profileCurrent >= profiles.length) { + throw this._createDataError(`Invalid current profile index: ${profileCurrent}`, optionsContext); } - const profile = this._getProfileFromContext(options, optionsContext); - return profile !== null ? profile : profiles[options.profileCurrent]; + return profiles[profileCurrent]; } _getProfileFromContext(options, optionsContext) { @@ -1030,6 +1043,12 @@ class Backend { return null; } + _createDataError(message, data) { + const error = new Error(message); + error.data = data; + return error; + } + _clearProfileConditionsSchemaCache() { this._profileConditionsSchemaCache = []; }