diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml index 5a98bf3a3422d355628f26b0adeba380e5c2dbd4..0c9acd039ab2c827031c07fbd45abc0a9b7e9b43 100644 --- a/src/constant/JamiStrings.qml +++ b/src/constant/JamiStrings.qml @@ -24,7 +24,9 @@ import QtQuick 2.14 import net.jami.Helpers 1.0 Item { - readonly property string appTitle: "Jami" + (UpdateManager.isCurrentVersionBeta() ? " (BETA)" : "") + readonly property string appTitle: "Jami" + (UpdateManager.isCurrentVersionBeta() + ? " (BETA)" : "") + readonly property string httpUserAgentName: "jami-qt" // Misc property string accept: qsTr("Accept") diff --git a/src/main.cpp b/src/main.cpp index f0e3cd9732ce1b00ed8e9af25a1202ae8d5df162..c08f72b85bb09b3b17ecbd0b336fb49c6a7e8b80 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,26 +31,36 @@ #ifndef ENABLE_TESTS static char** -parseInputArgument(int& argc, char* argv[], char* argToParse) +parseInputArgument(int& argc, char* argv[], QList<char*> argsToParse) { /* - * Forcefully append argToParse. + * Forcefully append argsToParse. */ int oldArgc = argc; - argc = argc + 1 + 1; + argc += argsToParse.size(); char** newArgv = new char*[argc]; for (int i = 0; i < oldArgc; i++) { newArgv[i] = argv[i]; } - newArgv[oldArgc] = argToParse; - newArgv[oldArgc + 1] = nullptr; + + for (int i = oldArgc; i < argc; i++) { + newArgv[i] = argsToParse.at(i - oldArgc); + } return newArgv; } +// Qt WebEngine Chromium Flags +static char noSandbox[] {"--no-sandbox"}; +static char disableWebSecurity[] {"--disable-web-security"}; +static char singleProcess[] {"--single-process"}; + int main(int argc, char* argv[]) { setlocale(LC_ALL, "en_US.utf8"); + + QList<char*> qtWebEngineChromiumFlags; + #ifdef Q_OS_LINUX setenv("QT_QPA_PLATFORMTHEME", "gtk3", true); #ifdef __GLIBC__ @@ -59,9 +69,12 @@ main(int argc, char* argv[]) // As I prefer to not use custom patched Qt, just wait for a // new version with this bug fixed if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 33)) - setenv("QTWEBENGINE_CHROMIUM_FLAGS", "--no-sandbox", true); + qtWebEngineChromiumFlags << noSandbox; #endif #endif + qtWebEngineChromiumFlags << disableWebSecurity; + qtWebEngineChromiumFlags << singleProcess; + QApplication::setApplicationName("Jami"); QApplication::setOrganizationDomain("jami.net"); QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true); @@ -75,8 +88,8 @@ main(int argc, char* argv[]) #endif QtWebEngine::initialize(); - char ARG_DISABLE_WEB_SECURITY[] = "--disable-web-security"; - auto newArgv = parseInputArgument(argc, argv, ARG_DISABLE_WEB_SECURITY); + auto newArgv = parseInputArgument(argc, argv, qtWebEngineChromiumFlags); + MainApplication app(argc, newArgv); /* diff --git a/src/mainapplication.cpp b/src/mainapplication.cpp index a2049b12a102da13c0ddb750b57fb7d65702bc43..7426fc4e93a65adb4cafa292ca1044cca5fc20a8 100644 --- a/src/mainapplication.cpp +++ b/src/mainapplication.cpp @@ -365,10 +365,16 @@ MainApplication::parseArguments() parser.addHelpOption(); parser.addVersionOption(); - // This option is forced into the arg list. + // These options are potentially forced into the arg list. QCommandLineOption webSecurityDisableOption(QStringList() << "disable-web-security"); parser.addOption(webSecurityDisableOption); + QCommandLineOption noSandboxOption(QStringList() << "no-sandbox"); + parser.addOption(noSandboxOption); + + QCommandLineOption singleProcessOption(QStringList() << "single-process"); + parser.addOption(singleProcessOption); + QCommandLineOption webDebugOption(QStringList() << "remote-debugging-port", "Web debugging port.", "port"); diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml index 767710b09e7a46b536f166b9779e4e387e32911c..ab653969af7b2d746437b11803b44f8a257fef67 100644 --- a/src/mainview/components/MessageWebView.qml +++ b/src/mainview/components/MessageWebView.qml @@ -287,7 +287,6 @@ Rectangle { settings.localStorageEnabled: true webChannel: messageWebViewChannel - profile: messageWebViewProfile DropArea{ anchors.fill: parent @@ -319,6 +318,8 @@ Rectangle { ":/linkify-string.js")) messageWebView.runJavaScript(UtilsAdapter.qStringFromFile( ":/qwebchannel.js")) + messageWebView.runJavaScript(UtilsAdapter.qStringFromFile( + ":/jed.js")) messageWebView.runJavaScript(UtilsAdapter.qStringFromFile( ":/emoji.js")) messageWebView.runJavaScript(UtilsAdapter.qStringFromFile( @@ -342,24 +343,18 @@ Rectangle { } Component.onCompleted: { + profile.cachePath = UtilsAdapter.getCachePath() + profile.persistentStoragePath = UtilsAdapter.getCachePath() + profile.persistentCookiesPolicy = WebEngineProfile.NoPersistentCookies + profile.httpCacheType = WebEngineProfile.NoCache + profile.httpUserAgent = JamiStrings.httpUserAgentName + messageWebView.loadHtml(UtilsAdapter.qStringFromFile( ":/chatview.html"), ":/chatview.html") messageWebView.url = "qrc:/chatview.html" } } - // Provide WebEngineProfile. - WebEngineProfile { - id: messageWebViewProfile - - cachePath: UtilsAdapter.getCachePath() - persistentStoragePath: UtilsAdapter.getCachePath() - persistentCookiesPolicy: WebEngineProfile.NoPersistentCookies - httpCacheType: WebEngineProfile.NoCache - httpUserAgent: "jami-windows" - } - - // Provide WebChannel by registering jsBridgeObject. WebChannel { id: messageWebViewChannel