Skip to content
Snippets Groups Projects
Commit 44ebb170 authored by Ming Rui Zhang's avatar Ming Rui Zhang
Browse files

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
parent 08236cf5
No related branches found
No related tags found
No related merge requests found
...@@ -43,6 +43,10 @@ Rectangle { ...@@ -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 { ...@@ -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 { ...@@ -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
......
...@@ -421,10 +421,11 @@ MessagesAdapter::pasteKeyDetected() ...@@ -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) ...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment