Changeset 122478 in webkit


Ignore:
Timestamp:
Jul 12, 2012 10:21:06 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

[Qt][WK2] Implement web notifications support
https://bugs.webkit.org/show_bug.cgi?id=80702

Patch by Adenilson Cavalcanti <cavalcantii@gmail.com> on 2012-07-12
Reviewed by Noam Rosenthal.

Adding a new type of permission request for Desktop Notifications (plus required code
to register the handle for this requests).

  • UIProcess/API/qt/qwebpermissionrequest.cpp:

(QWebPermissionRequestPrivate::QWebPermissionRequestPrivate):
(QWebPermissionRequestPrivate):
(QWebPermissionRequest::create):
(QWebPermissionRequest::QWebPermissionRequest):
(QWebPermissionRequest::setAllow):

  • UIProcess/API/qt/qwebpermissionrequest_p.h:
  • UIProcess/API/qt/tests/qmltests/WebView/tst_notification.qml: Added.
  • UIProcess/API/qt/tests/qmltests/common/notification.html: Added.
  • UIProcess/qt/QtWebPageUIClient.cpp:

(WebKit::QtWebPageUIClient::QtWebPageUIClient):
(WebKit::QtWebPageUIClient::policyForNotificationPermissionRequest):
(WebKit):

  • UIProcess/qt/QtWebPageUIClient.h:
Location:
trunk/Source/WebKit2
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r122453 r122478  
     12012-07-12  Adenilson Cavalcanti  <cavalcantii@gmail.com>
     2
     3        [Qt][WK2] Implement web notifications support
     4        https://bugs.webkit.org/show_bug.cgi?id=80702
     5
     6        Reviewed by Noam Rosenthal.
     7
     8        Adding a new type of permission request for Desktop Notifications (plus required code
     9        to register the handle for this requests).
     10
     11        * UIProcess/API/qt/qwebpermissionrequest.cpp:
     12        (QWebPermissionRequestPrivate::QWebPermissionRequestPrivate):
     13        (QWebPermissionRequestPrivate):
     14        (QWebPermissionRequest::create):
     15        (QWebPermissionRequest::QWebPermissionRequest):
     16        (QWebPermissionRequest::setAllow):
     17        * UIProcess/API/qt/qwebpermissionrequest_p.h:
     18        * UIProcess/API/qt/tests/qmltests/WebView/tst_notification.qml: Added.
     19        * UIProcess/API/qt/tests/qmltests/common/notification.html: Added.
     20        * UIProcess/qt/QtWebPageUIClient.cpp:
     21        (WebKit::QtWebPageUIClient::QtWebPageUIClient):
     22        (WebKit::QtWebPageUIClient::policyForNotificationPermissionRequest):
     23        (WebKit):
     24        * UIProcess/qt/QtWebPageUIClient.h:
     25
    1262012-07-12  Sudarsana Nagineni  <sudarsana.nagineni@linux.intel.com>
    227
  • trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp

    r107914 r122478  
    2626#include <WebKit2/WKRetainPtr.h>
    2727
    28 
    2928class QWebPermissionRequestPrivate : public QSharedData {
    3029public:
    31     QWebPermissionRequestPrivate(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef permissionRequest)
     30    QWebPermissionRequestPrivate(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef geo = 0, WKNotificationPermissionRequestRef notify = 0, QWebPermissionRequest::RequestType reqType = QWebPermissionRequest::Geolocation)
    3231        : origin(securityOrigin)
    33         , type(QWebPermissionRequest::Geolocation)
    34         , request(permissionRequest)
     32        , geolocationRequest(geo)
     33        , notificationRequest(notify)
     34        , type(reqType)
    3535        , allow(false)
    3636    {
     
    4949
    5050    WKRetainPtr<WKSecurityOriginRef> origin;
     51    WKRetainPtr<WKGeolocationPermissionRequestRef> geolocationRequest;
     52    WKRetainPtr<WKNotificationPermissionRequestRef> notificationRequest;
    5153    QWebPermissionRequest::RequestType type;
    52     WKRetainPtr<WKGeolocationPermissionRequestRef> request;
    5354    QtWebSecurityOrigin securityInfo;
    5455    bool allow;
     
    6061}
    6162
    62 QWebPermissionRequest::QWebPermissionRequest(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef permissionRequest, QObject* parent)
     63QWebPermissionRequest* QWebPermissionRequest::create(WKSecurityOriginRef origin, WKNotificationPermissionRequestRef request)
     64{
     65    return new QWebPermissionRequest(origin, 0, request, QWebPermissionRequest::Notification);
     66}
     67
     68QWebPermissionRequest::QWebPermissionRequest(WKSecurityOriginRef securityOrigin
     69                                             , WKGeolocationPermissionRequestRef geo
     70                                             , WKNotificationPermissionRequestRef notify
     71                                             , QWebPermissionRequest::RequestType type
     72                                             , QObject* parent)
    6373    : QObject(parent)
    64     , d(new QWebPermissionRequestPrivate(securityOrigin, permissionRequest))
     74    , d(new QWebPermissionRequestPrivate(securityOrigin, geo, notify, type))
    6575{
    6676}
     
    8191    case Geolocation: {
    8292        if (accepted)
    83             WKGeolocationPermissionRequestAllow(d->request.get());
     93            WKGeolocationPermissionRequestAllow(d->geolocationRequest.get());
    8494        else
    85             WKGeolocationPermissionRequestDeny(d->request.get());
     95            WKGeolocationPermissionRequestDeny(d->geolocationRequest.get());
     96        break;
     97    }
     98    case Notification: {
     99        if (accepted)
     100            WKNotificationPermissionRequestAllow(d->notificationRequest.get());
     101        else
     102            WKNotificationPermissionRequestDeny(d->notificationRequest.get());
    86103        break;
    87104    }
  • trunk/Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h

    r107914 r122478  
    2727#include <QtCore/qshareddata.h>
    2828#include <WebKit2/WKGeolocationPermissionRequest.h>
     29#include <WebKit2/WKNotificationPermissionRequest.h>
    2930#include <WebKit2/WKSecurityOrigin.h>
    3031
     
    4041public:
    4142    enum RequestType {
    42         Geolocation
     43        Geolocation,
     44        Notification
    4345    };
    4446
    4547    static QWebPermissionRequest* create(WKSecurityOriginRef, WKGeolocationPermissionRequestRef);
     48    static QWebPermissionRequest* create(WKSecurityOriginRef, WKNotificationPermissionRequestRef);
    4649    virtual ~QWebPermissionRequest();
    4750
     
    5558private:
    5659    friend class QWebPermissionRequestPrivate;
    57     QWebPermissionRequest(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef permissionRequest, QObject* parent = 0);
     60    QWebPermissionRequest(WKSecurityOriginRef securityOrigin
     61                          , WKGeolocationPermissionRequestRef geo = 0
     62                          , WKNotificationPermissionRequestRef notify = 0
     63                          , QWebPermissionRequest::RequestType type = Geolocation
     64                          , QObject* parent = 0);
    5865
    5966private:
  • trunk/Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp

    r114897 r122478  
    4949    uiClient.exceededDatabaseQuota = exceededDatabaseQuota;
    5050    uiClient.decidePolicyForGeolocationPermissionRequest = policyForGeolocationPermissionRequest;
     51    uiClient.decidePolicyForNotificationPermissionRequest = policyForNotificationPermissionRequest;
    5152    WKPageSetPageUIClient(pageRef, &uiClient);
    5253}
     
    162163}
    163164
     165void QtWebPageUIClient::policyForNotificationPermissionRequest(WKPageRef page, WKSecurityOriginRef origin, WKNotificationPermissionRequestRef request, const void *clientInfo)
     166{
     167    if (!request)
     168        return;
     169
     170    QWebPermissionRequest* req = QWebPermissionRequest::create(origin, request);
     171    toQtWebPageUIClient(clientInfo)->permissionRequest(req);
     172}
     173
    164174} // namespace WebKit
     175
  • trunk/Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h

    r114897 r122478  
    6060    static unsigned long long exceededDatabaseQuota(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKStringRef databaseName, WKStringRef displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage, const void *clientInfo);
    6161    static void policyForGeolocationPermissionRequest(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKGeolocationPermissionRequestRef, const void*);
     62    static void policyForNotificationPermissionRequest(WKPageRef, WKSecurityOriginRef, WKNotificationPermissionRequestRef, const void*);
    6263
    6364    QQuickWebView* m_webView;
Note: See TracChangeset for help on using the changeset viewer.