Changeset 73865 in webkit


Ignore:
Timestamp:
Dec 11, 2010 7:21:51 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2010-12-11 Jan Erik Hanssen <jhanssen@sencha.com>

Reviewed by Andreas Kling.

[Qt] QWebFrame does not support QNetworkRequest::CacheLoadControl
https://bugs.webkit.org/show_bug.cgi?id=35671

Make QWebFrame respect the QNetworkRequest::CacheLoadControl attribute
set on the request, if any.

  • Api/qwebframe.cpp: (cacheLoadControlToCachePolicy): (QWebFrame::load):
  • tests/qwebframe/tst_qwebframe.cpp:
Location:
trunk/WebKit/qt
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/qt/Api/qwebframe.cpp

    r73584 r73865  
    202202}
    203203
     204static inline ResourceRequestCachePolicy cacheLoadControlToCachePolicy(uint cacheLoadControl)
     205{
     206    switch (cacheLoadControl) {
     207    case QNetworkRequest::AlwaysNetwork:
     208        return WebCore::ReloadIgnoringCacheData;
     209    case QNetworkRequest::PreferCache:
     210        return WebCore::ReturnCacheDataElseLoad;
     211    case QNetworkRequest::AlwaysCache:
     212        return WebCore::ReturnCacheDataDontLoad;
     213    default:
     214        break;
     215    }
     216    return WebCore::UseProtocolCachePolicy;
     217}
     218
    204219QWebFrameData::QWebFrameData(WebCore::Page* parentPage, WebCore::Frame* parentFrame,
    205220                             WebCore::HTMLFrameOwnerElement* ownerFrameElement,
     
    884899    }
    885900
     901    QVariant cacheLoad = req.attribute(QNetworkRequest::CacheLoadControlAttribute);
     902    if (cacheLoad.isValid()) {
     903        bool ok;
     904        uint cacheLoadValue = cacheLoad.toUInt(&ok);
     905        if (ok)
     906            request.setCachePolicy(cacheLoadControlToCachePolicy(cacheLoadValue));
     907    }
     908
    886909    QList<QByteArray> httpHeaders = req.rawHeaderList();
    887910    for (int i = 0; i < httpHeaders.size(); ++i) {
  • trunk/WebKit/qt/ChangeLog

    r73862 r73865  
     12010-12-11  Jan Erik Hanssen  <jhanssen@sencha.com>
     2
     3        Reviewed by Andreas Kling.
     4
     5        [Qt] QWebFrame does not support QNetworkRequest::CacheLoadControl
     6        https://bugs.webkit.org/show_bug.cgi?id=35671
     7
     8        Make QWebFrame respect the QNetworkRequest::CacheLoadControl attribute
     9        set on the request, if any.
     10
     11        * Api/qwebframe.cpp:
     12        (cacheLoadControlToCachePolicy):
     13        (QWebFrame::load):
     14        * tests/qwebframe/tst_qwebframe.cpp:
     15
    1162010-10-11  Diego Gonzalez  <diegohcg@webkit.org>
    217
  • trunk/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp

    r72368 r73865  
    626626    void setContent_data();
    627627    void setContent();
     628    void setCacheLoadControlAttribute();
    628629
    629630private:
     
    30693070}
    30703071
     3072class CacheNetworkAccessManager : public QNetworkAccessManager {
     3073public:
     3074    CacheNetworkAccessManager(QObject* parent = 0)
     3075        : QNetworkAccessManager(parent)
     3076        , m_lastCacheLoad(QNetworkRequest::PreferNetwork)
     3077    {
     3078    }
     3079
     3080    virtual QNetworkReply* createRequest(Operation, const QNetworkRequest& request, QIODevice*)
     3081    {
     3082        QVariant cacheLoad = request.attribute(QNetworkRequest::CacheLoadControlAttribute);
     3083        if (cacheLoad.isValid())
     3084            m_lastCacheLoad = static_cast<QNetworkRequest::CacheLoadControl>(cacheLoad.toUInt());
     3085        else
     3086            m_lastCacheLoad = QNetworkRequest::PreferNetwork; // default value
     3087        return new FakeReply(request, this);
     3088    }
     3089
     3090    QNetworkRequest::CacheLoadControl lastCacheLoad() const
     3091    {
     3092        return m_lastCacheLoad;
     3093    }
     3094
     3095private:
     3096    QNetworkRequest::CacheLoadControl m_lastCacheLoad;
     3097};
     3098
     3099void tst_QWebFrame::setCacheLoadControlAttribute()
     3100{
     3101    QWebPage page;
     3102    CacheNetworkAccessManager* manager = new CacheNetworkAccessManager(&page);
     3103    page.setNetworkAccessManager(manager);
     3104    QWebFrame* frame = page.mainFrame();
     3105
     3106    QNetworkRequest request(QUrl("http://abcdef.abcdef/"));
     3107
     3108    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
     3109    frame->load(request);
     3110    QCOMPARE(manager->lastCacheLoad(), QNetworkRequest::AlwaysCache);
     3111
     3112    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
     3113    frame->load(request);
     3114    QCOMPARE(manager->lastCacheLoad(), QNetworkRequest::PreferCache);
     3115
     3116    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
     3117    frame->load(request);
     3118    QCOMPARE(manager->lastCacheLoad(), QNetworkRequest::AlwaysNetwork);
     3119
     3120    request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork);
     3121    frame->load(request);
     3122    QCOMPARE(manager->lastCacheLoad(), QNetworkRequest::PreferNetwork);
     3123}
     3124
    30713125QTEST_MAIN(tst_QWebFrame)
    30723126#include "tst_qwebframe.moc"
Note: See TracChangeset for help on using the changeset viewer.