mirror of
https://github.com/finos/SymphonyElectron.git
synced 2024-12-26 08:51:22 -06:00
SDA-3377 Processing multiple chrome flags provided as installation parameters
This commit is contained in:
parent
e3a5cedd22
commit
071cb939ef
@ -57,4 +57,6 @@ position:
|
||||
- openExternal: This allows users to control if the SDA can open an external app. If set to "false", SDA won't be able to open external apps. For example, opening a link from within the SDA in a browser tab.
|
||||
- autoLaunchPath: This allows administrators to set a custom launch path for an app that can bootstrap the SDA. Typically used by administrators who have their own bootstrapped to open other apps like the SDA.
|
||||
- Example can be C:\Program Files\My Bootstrapper\start.exe
|
||||
- chromeFlags: This allows users to set Chromium flags.
|
||||
- Example can be "--enable-logging --log-file=C:\\Users\\YOUR_USER\\Desktop\\chrome_debug.log"
|
||||
|
||||
|
@ -26,6 +26,11 @@ jest.mock('../src/app/config-handler', () => {
|
||||
disableThrottling: 'DISABLED',
|
||||
};
|
||||
}),
|
||||
getGlobalConfigFields: jest.fn(() => {
|
||||
return {
|
||||
disableThrottling: 'DISABLED',
|
||||
};
|
||||
}),
|
||||
},
|
||||
};
|
||||
});
|
||||
|
@ -3,6 +3,8 @@ import { app, session } from 'electron';
|
||||
import { logger } from '../common/logger';
|
||||
import { CloudConfigDataTypes, config, IConfig } from './config-handler';
|
||||
|
||||
const CHROME_FLAG_PREFIX = '--';
|
||||
|
||||
// Set default flags
|
||||
logger.info(`chrome-flags: Setting mandatory chrome flags`, {
|
||||
flag: { 'ssl-version-fallback-min': 'tls1.2' },
|
||||
@ -63,39 +65,45 @@ export const setChromeFlags = () => {
|
||||
app.commandLine.appendSwitch(key, val);
|
||||
}
|
||||
}
|
||||
|
||||
const cmdArgs = process.argv;
|
||||
let cmdArgs = process.argv;
|
||||
const { chromeFlags } = config.getGlobalConfigFields(['chromeFlags']) as any;
|
||||
if (chromeFlags?.length) {
|
||||
logger.info(
|
||||
`chrome-flags: found chrome flags in config file: ${chromeFlags}`,
|
||||
);
|
||||
const splittedChromeFlags = chromeFlagsSplitter(chromeFlags);
|
||||
cmdArgs = cmdArgs.concat(splittedChromeFlags);
|
||||
}
|
||||
cmdArgs.forEach((arg) => {
|
||||
// We need to check if the argument key matches the one
|
||||
// in the special args array and return if it does match
|
||||
const argSplit = arg.split('=');
|
||||
const argKey = argSplit[0];
|
||||
const argValue = argSplit[1] && arg.substring(arg.indexOf('=') + 1);
|
||||
if (arg.startsWith('--') && specialArgs.includes(argKey)) {
|
||||
if (arg.startsWith(CHROME_FLAG_PREFIX) && specialArgs.includes(argKey)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// All the chrome flags starts with --
|
||||
// So, any other arg (like 'electron' or '.')
|
||||
// need to be skipped
|
||||
if (arg.startsWith('--')) {
|
||||
if (arg.startsWith(CHROME_FLAG_PREFIX)) {
|
||||
// Since chrome takes values after an equals
|
||||
// We split the arg and set it either as
|
||||
// just a key, or as a key-value pair
|
||||
if (argKey && argValue) {
|
||||
app.commandLine.appendSwitch(argKey.substr(2), argValue);
|
||||
logger.info(
|
||||
`chrome-flags: Appended chrome command line switch ${argKey} with value ${argValue}`,
|
||||
);
|
||||
} else {
|
||||
app.commandLine.appendSwitch(argKey);
|
||||
logger.info(
|
||||
`chrome-flags: Appended chrome command line switch ${argKey}`,
|
||||
);
|
||||
}
|
||||
logger.info(
|
||||
`Appended chrome command line switch ${argKey} with value ${argValue}`,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
const { chromeFlags } = config.getConfigFields(['chromeFlags']) as any;
|
||||
app.commandLine.appendSwitch(chromeFlags);
|
||||
logger.info(`chrome-flags: Appended chrome command line with ${chromeFlags}`);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -116,3 +124,21 @@ export const setSessionProperties = () => {
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Splits a string of concatenated chrome flags into an array of chrome flags.
|
||||
* @param flags Chrome flags provided as a string
|
||||
* @returns An array of chrome flags
|
||||
*/
|
||||
const chromeFlagsSplitter = (flags: string) => {
|
||||
logger.info('chrome-flags: Parsing flags', flags);
|
||||
const splittedFlags = flags
|
||||
.split(CHROME_FLAG_PREFIX)
|
||||
.filter((chromeFlag: string) => chromeFlag.length)
|
||||
.map(
|
||||
(filteredFlag: string) =>
|
||||
`${CHROME_FLAG_PREFIX}${filteredFlag.trimEnd()}`,
|
||||
);
|
||||
logger.info('chrome-flags: Parsed flags', splittedFlags);
|
||||
return splittedFlags;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user