1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-09-10 12:03:18 +02:00

messagewebview: add support for pasting and drafting js special characters

Note: it will also prevent potential js template literal

Gitlab: #250
Gitlab: #246
Change-Id: Ic925a18ae768d168b8e340f9e05ef6ddd0260c84
This commit is contained in:
Ming Rui Zhang 2021-01-04 15:39:10 -05:00
parent 08236cf5e7
commit 44ebb170ff
2 changed files with 14 additions and 4 deletions

View file

@ -43,6 +43,10 @@ Rectangle {
signal messagesCleared signal messagesCleared
signal messagesLoaded signal messagesLoaded
function setSendMessageContent(content) {
jsBridgeObject.setSendMessageContentRequest(content)
}
function focusMessageWebView() { function focusMessageWebView() {
messageWebView.forceActiveFocus() messageWebView.forceActiveFocus()
} }
@ -140,6 +144,10 @@ Rectangle {
// ID, under which this object will be known at chatview.js side. // ID, under which this object will be known at chatview.js side.
WebChannel.id: "jsbridge" WebChannel.id: "jsbridge"
// signals to trigger functions in chatview.js
// mainly used to avoid input arg string escape
signal setSendMessageContentRequest(string content)
// Functions that are exposed, return code can be derived from js side // Functions that are exposed, return code can be derived from js side
// by setting callback function. // by setting callback function.
function deleteInteraction(arg) { function deleteInteraction(arg) {
@ -240,6 +248,8 @@ Rectangle {
settings.javascriptEnabled: true settings.javascriptEnabled: true
settings.javascriptCanOpenWindows: true settings.javascriptCanOpenWindows: true
settings.javascriptCanAccessClipboard: true
settings.javascriptCanPaste: true
settings.fullScreenSupportEnabled: true settings.fullScreenSupportEnabled: true
settings.allowRunningInsecureContent: true settings.allowRunningInsecureContent: true
settings.localContentCanAccessRemoteUrls: true settings.localContentCanAccessRemoteUrls: true

View file

@ -421,10 +421,11 @@ MessagesAdapter::pasteKeyDetected()
} }
} }
} else { } else {
// Treat as text content, make chatview.js handle in order to
// avoid string escape problems
QMetaObject::invokeMethod(qmlObj_, QMetaObject::invokeMethod(qmlObj_,
"webViewRunJavaScript", "webViewRunJavaScript",
Q_ARG(QVariant, Q_ARG(QVariant, QStringLiteral("replaceText()")));
QStringLiteral("replaceText(`%1`)").arg(mimeData->text())));
} }
} }
@ -640,8 +641,7 @@ MessagesAdapter::removeInteraction(uint64_t interactionId)
void void
MessagesAdapter::setSendMessageContent(const QString& content) MessagesAdapter::setSendMessageContent(const QString& content)
{ {
QString s = QString::fromLatin1("setSendMessageContent(`%1`);").arg(content); QMetaObject::invokeMethod(qmlObj_, "setSendMessageContent", Q_ARG(QVariant, content));
QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s));
} }
void void