=== modified file 'qt/quick/api/oxideqquickwebcontextdelegateworker.cc'
--- qt/quick/api/oxideqquickwebcontextdelegateworker.cc	2014-10-16 19:14:06 +0000
+++ qt/quick/api/oxideqquickwebcontextdelegateworker.cc	2015-02-05 14:08:26 +0000
@@ -116,13 +116,17 @@
       controller_(controller) {}
    
 void Api::sendMessage(const QVariant& message) {
-  if (message.type() != QVariant::Map &&
-      message.type() != QVariant::List &&
-      message.type() != QVariant::StringList) {
+  QVariant aux = message;
+  if (aux.userType() == qMetaTypeId<QJSValue>()) {
+    aux = aux.value<QJSValue>().toVariant();
+  }
+  if (aux.type() != QVariant::Map &&
+      aux.type() != QVariant::List &&
+      aux.type() != QVariant::StringList) {
     return;
   }
 
-  Q_EMIT controller_->sendMessage(message);
+  Q_EMIT controller_->sendMessage(aux);
 }
 
 void IOThreadControllerImpl::CallEntryPointInWorker(
@@ -300,16 +304,21 @@
 void OxideQQuickWebContextDelegateWorker::sendMessage(const QVariant& message) {
   Q_D(OxideQQuickWebContextDelegateWorker);
 
-  if (message.type() != QVariant::Map &&
-      message.type() != QVariant::List &&
-      message.type() != QVariant::StringList) {
-    qWarning() << "Called WebContextDelegateWorker.sendMessage with an invalid argument";
+  QVariant aux = message;
+  if (aux.userType() == qMetaTypeId<QJSValue>()) {
+    aux = aux.value<QJSValue>().toVariant();
+  }
+
+  if (aux.type() != QVariant::Map &&
+      aux.type() != QVariant::List &&
+      aux.type() != QVariant::StringList) {
+    qWarning() << "Called WebContextDelegateWorker.sendMessage with an invalid argument" << aux;
     return;
   }
 
   QMetaObject::invokeMethod(d->io_thread_controller_.data(),
                             "receiveMessage",
-                            Q_ARG(QVariant, message));
+                            Q_ARG(QVariant, aux));
 }
 
 #include "oxideqquickwebcontextdelegateworker.moc"

=== modified file 'qt/quick/api/oxideqquickwebframe.cc'
--- qt/quick/api/oxideqquickwebframe.cc	2015-01-16 22:46:17 +0000
+++ qt/quick/api/oxideqquickwebframe.cc	2015-02-05 14:08:26 +0000
@@ -193,7 +193,12 @@
   OxideQQuickScriptMessageRequest* request =
       new OxideQQuickScriptMessageRequest();
 
-  if (!d->sendMessage(context, msg_id, args,
+  QVariant aux = args;
+  if (aux.userType() == qMetaTypeId<QJSValue>()) {
+    aux = aux.value<QJSValue>().toVariant();
+  }
+
+  if (!d->sendMessage(context, msg_id, aux,
                       OxideQQuickScriptMessageRequestPrivate::get(request))) {
     delete request;
     return nullptr;
@@ -207,5 +212,10 @@
                                              const QVariant& args) {
   Q_D(OxideQQuickWebFrame);
 
-  d->sendMessageNoReply(context, msg_id, args);
+  QVariant aux = args;
+  if (aux.userType() == qMetaTypeId<QJSValue>()) {
+    aux = aux.value<QJSValue>().toVariant();
+  }
+
+  d->sendMessageNoReply(context, msg_id, aux);
 }

