Title: [106355] trunk/Source/WebKit2
Revision
106355
Author
[email protected]
Date
2012-01-31 05:47:59 -0800 (Tue, 31 Jan 2012)

Log Message

[Qt][WK2] Make UIProcess decide about encoding of input data for application URL schemes.
https://bugs.webkit.org/show_bug.cgi?id=77417

Make the UIProcess decide about the encoding and display
a warning in case no encoding was defined.
Make the QQuickNetworkReply store a QWeakPointer to the
QQuickWebViewExperimental to get rid of hackish chain of parental queries.

Reviewed by Simon Hausmann.

* UIProcess/API/qt/qquicknetworkreply.cpp:
(QQuickNetworkReply::send):
(QQuickNetworkReply::setWebViewExperimental):
* UIProcess/API/qt/qquicknetworkreply_p.h:
* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewExperimental::schemeDelegates_Append):
* WebProcess/qt/QtNetworkReply.cpp:
(WebKit::QtNetworkReply::QtNetworkReply):
(WebKit::QtNetworkReply::setReplyData):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (106354 => 106355)


--- trunk/Source/WebKit2/ChangeLog	2012-01-31 12:11:35 UTC (rev 106354)
+++ trunk/Source/WebKit2/ChangeLog	2012-01-31 13:47:59 UTC (rev 106355)
@@ -1,3 +1,25 @@
+2012-01-31  Zeno Albisser  <[email protected]>
+
+        [Qt][WK2] Make UIProcess decide about encoding of input data for application URL schemes.
+        https://bugs.webkit.org/show_bug.cgi?id=77417
+
+        Make the UIProcess decide about the encoding and display
+        a warning in case no encoding was defined.
+        Make the QQuickNetworkReply store a QWeakPointer to the
+        QQuickWebViewExperimental to get rid of hackish chain of parental queries.
+
+        Reviewed by Simon Hausmann.
+
+        * UIProcess/API/qt/qquicknetworkreply.cpp:
+        (QQuickNetworkReply::send):
+        (QQuickNetworkReply::setWebViewExperimental):
+        * UIProcess/API/qt/qquicknetworkreply_p.h:
+        * UIProcess/API/qt/qquickwebview.cpp:
+        (QQuickWebViewExperimental::schemeDelegates_Append):
+        * WebProcess/qt/QtNetworkReply.cpp:
+        (WebKit::QtNetworkReply::QtNetworkReply):
+        (WebKit::QtNetworkReply::setReplyData):
+
 2012-01-30  Jocelyn Turcotte  <[email protected]>
 
         [Qt] Disconnect the LayerTreeHost from layers when they get removed from their parent.

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquicknetworkreply.cpp (106354 => 106355)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquicknetworkreply.cpp	2012-01-31 12:11:35 UTC (rev 106354)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquicknetworkreply.cpp	2012-01-31 13:47:59 UTC (rev 106355)
@@ -68,6 +68,7 @@
         stringData = m_data.toString();
         ptrData = reinterpret_cast<const void*>(stringData.constData());
         smLength = sizeof(QChar) * stringData.length();
+        setContentType(QLatin1String("text/html; charset=utf-16"));
     } else {
         if (!m_data.canConvert<QByteArray>())
             return;
@@ -76,6 +77,11 @@
         smLength = byteArrayData.size();
     }
 
+    if (contentType().isEmpty()) {
+        qWarning("QQuickNetworkReply::send - Cannot send raw data without a content type being specified!");
+        return;
+    }
+
     WTF::RefPtr<WebKit::SharedMemory> sharedMemory = SharedMemory::create(smLength);
     if (!sharedMemory)
         return;
@@ -85,13 +91,8 @@
 
     if (sharedMemory->createHandle(m_networkReplyData->data().m_dataHandle, SharedMemory::ReadOnly)) {
         m_networkReplyData->data().m_contentLength = smLength;
-
-        QObject* schemeParent = parent()->parent();
-        if (schemeParent) {
-            QQuickWebViewExperimental* webViewExperimental = qobject_cast<QQuickWebViewExperimental*>(schemeParent->parent());
-            if (webViewExperimental)
-                webViewExperimental->sendApplicationSchemeReply(this);
-        }
+        if (m_webViewExperimental)
+            m_webViewExperimental.data()->sendApplicationSchemeReply(this);
     }
 
     // After sending the reply data, we have to reinitialize the m_networkReplyData,
@@ -99,6 +100,11 @@
     m_networkReplyData = adoptRef(new WebKit::QtRefCountedNetworkReplyData);
 }
 
+void QQuickNetworkReply::setWebViewExperimental(QQuickWebViewExperimental* webViewExperimental)
+{
+    m_webViewExperimental = webViewExperimental;
+}
+
 WebKit::QtRefCountedNetworkRequestData* QQuickNetworkReply::networkRequestData() const
 {
     return m_networkRequestData.get();

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquicknetworkreply_p.h (106354 => 106355)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquicknetworkreply_p.h	2012-01-31 12:11:35 UTC (rev 106354)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquicknetworkreply_p.h	2012-01-31 13:47:59 UTC (rev 106355)
@@ -23,10 +23,12 @@
 
 #include "QtNetworkReplyData.h"
 #include "QtNetworkRequestData.h"
+#include "qquickwebview_p.h"
 #include "SharedMemory.h"
 #include "qwebkitglobal.h"
 #include <QNetworkAccessManager>
 #include <QObject>
+#include <QWeakPointer>
 #include <QtDeclarative/qdeclarativelist.h>
 #include <QtQuick/qquickitem.h>
 
@@ -44,6 +46,7 @@
     QVariant data() const;
     void setData(const QVariant& data);
 
+    void setWebViewExperimental(QQuickWebViewExperimental*);
     WebKit::QtRefCountedNetworkRequestData* networkRequestData() const;
     void setNetworkRequestData(WTF::PassRefPtr<WebKit::QtRefCountedNetworkRequestData> data);
     WebKit::QtRefCountedNetworkReplyData* networkReplyData() const;
@@ -55,6 +58,7 @@
     WTF::RefPtr<WebKit::QtRefCountedNetworkRequestData> m_networkRequestData;
     WTF::RefPtr<WebKit::QtRefCountedNetworkReplyData> m_networkReplyData;
     QVariant m_data;
+    QWeakPointer<QQuickWebViewExperimental> m_webViewExperimental;
 };
 
 QML_DECLARE_TYPE(QQuickNetworkReply)

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp (106354 => 106355)


--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp	2012-01-31 12:11:35 UTC (rev 106354)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp	2012-01-31 13:47:59 UTC (rev 106355)
@@ -824,6 +824,7 @@
     QQuickWebViewExperimental* webViewExperimental = qobject_cast<QQuickWebViewExperimental*>(property->object->parent());
     if (!webViewExperimental)
         return;
+    scheme->reply()->setWebViewExperimental(webViewExperimental);
     QQuickWebViewPrivate* d = webViewExperimental->d_func();
     d->webPageProxy->registerApplicationScheme(scheme->scheme());
 }

Modified: trunk/Source/WebKit2/WebProcess/qt/QtNetworkReply.cpp (106354 => 106355)


--- trunk/Source/WebKit2/WebProcess/qt/QtNetworkReply.cpp	2012-01-31 12:11:35 UTC (rev 106354)
+++ trunk/Source/WebKit2/WebProcess/qt/QtNetworkReply.cpp	2012-01-31 13:47:59 UTC (rev 106355)
@@ -45,7 +45,6 @@
     setOperation(QNetworkAccessManager::GetOperation);
     setUrl(req.url());
     setOpenMode(QIODevice::ReadOnly);
-    setHeader(QNetworkRequest::ContentTypeHeader, QVariant(QString::fromLocal8Bit("text/html; charset=UTF-16")));
 }
 
 void QtNetworkReply::setData(const SharedMemory::Handle& handle, qint64 dataSize)
@@ -62,7 +61,7 @@
 
 void QtNetworkReply::setReplyData(const QtNetworkReplyData& replyData)
 {
-    if (!replyData.m_contentType.isNull())
+    if (!replyData.m_contentType.isEmpty())
         setHeader(QNetworkRequest::ContentTypeHeader, QString(replyData.m_contentType));
     setHeader(QNetworkRequest::ContentLengthHeader, QVariant::fromValue(replyData.m_contentLength));
     setData(replyData.m_dataHandle, replyData.m_contentLength);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to