Changeset 102352 in webkit


Ignore:
Timestamp:
Dec 8, 2011 11:06:59 AM (12 years ago)
Author:
jonlee@apple.com
Message:

[WK2] Add permissions support (73960)
https://bugs.webkit.org/show_bug.cgi?id=73960
<rdar://problem/10357008>

Reviewed by Darin Adler.

Source/WebKit2:

  • DerivedSources.make: Moved notification files to its own directory. Need to add that path.
  • WebKit2.xcodeproj/project.pbxproj: New header and impl files.
  • Target.pri: Ditto.
  • GNUmakefile.am: Ditto.
  • win/WebKit2.vcproj: Ditto.
  • win/WebKit2Common.vsprops: Add path to Notifications directory.

Implement permission functions, which go through permission request manager.

  • WebProcess/WebCoreSupport/WebNotificationClient.cpp:

(WebKit::WebNotificationClient::requestPermission):
(WebKit::WebNotificationClient::cancelRequestsForPermission):
(WebKit::WebNotificationClient::checkPermission):

New NotificationPermissionRequestManager to make and cancel permission requests, and to retrieve current
policy.

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp: Added.

(WebKit::generateRequestID):
(WebKit::NotificationPermissionRequestManager::create):
(WebKit::NotificationPermissionRequestManager::NotificationPermissionRequestManager):
(WebKit::NotificationPermissionRequestManager::startRequest): Keep track of the provided callback once
policy decision is made.
(WebKit::NotificationPermissionRequestManager::cancelRequest):
(WebKit::NotificationPermissionRequestManager::permissionLevel): Retrieve level through a synchronous
message to the proxy.
(WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision): Invoke the callback.

  • WebProcess/Notifications/NotificationPermissionRequestManager.h: Added.

(WebKit::isRequestIDValid): Make sure any provided request IDs are valid.

Added new NotificationPermissionRequest class.

  • UIProcess/Notifications/NotificationPermissionRequest.cpp: Added.

(WebKit::NotificationPermissionRequest::create):
(WebKit::NotificationPermissionRequest::NotificationPermissionRequest):
(WebKit::NotificationPermissionRequest::allow): Notify manager of decision.
(WebKit::NotificationPermissionRequest::deny): Ditto.
(WebKit::NotificationPermissionRequest::invalidate): Disassociate with manager.
(WebKit::NotificationPermissionRequest::type):

  • UIProcess/Notifications/NotificationPermissionRequest.h: Added.

WKAPI support for NotificationPermissionRequest:

  • Shared/API/c/WKBase.h:
  • Shared/APIObject.h:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKNotificationPermissionRequest.cpp: Added.

(WKNotificationPermissionRequestGetTypeID):
(WKNotificationPermissionRequestAllow):
(WKNotificationPermissionRequestDeny):

  • UIProcess/API/C/WKNotificationPermissionRequest.h: Added.

Other additions to WK API:

  • UIProcess/API/C/WKNotificationProvider.h: Added new callback for WKNotificationProviders, to return policy

for a given security origin.

  • UIProcess/API/C/WKPage.h: Added new callback to WKPageUIClient to ask user to decide on policy.

New NotificationPermissionRequestManagerProxy to create requests.

  • UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: Added.

(WebKit::NotificationPermissionRequestManagerProxy::NotificationPermissionRequestManagerProxy):
(WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests):
(WebKit::NotificationPermissionRequestManagerProxy::createRequest):
(WebKit::NotificationPermissionRequestManagerProxy::didReceiveNotificationPermissionDecision):

  • UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h: Added.

Added new message to notification manager: NotificationPermissionLevel, to retrieve policy. The current
JS API retrieves the permission synchronously, so the message needs to be sent synchronously also.

  • UIProcess/Notifications/WebNotificationManagerProxy.messages.in: Moved from Source/WebKit2/UIProcess/WebNotificationManagerProxy.messages.in.
  • UIProcess/Notifications/WebNotificationProvider.cpp: Moved from Source/WebKit2/UIProcess/WebNotificationProvider.cpp.

(WebKit::WebNotificationProvider::policyForNotificationPermissionAtOrigin): Added.

  • UIProcess/Notifications/WebNotificationProvider.h: Moved from Source/WebKit2/UIProcess/WebNotificationProvider.h.
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didReceiveSyncMessage): Boilerplate to forward messages to notification manager.

  • UIProcess/Notifications/WebNotificationManagerProxy.cpp: Moved from Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp.

(WebKit::WebNotificationManagerProxy::create):
(WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy):
(WebKit::WebNotificationManagerProxy::invalidate):
(WebKit::WebNotificationManagerProxy::initializeProvider):
(WebKit::WebNotificationManagerProxy::didReceiveMessage):
(WebKit::WebNotificationManagerProxy::didReceiveSyncMessage):
(WebKit::WebNotificationManagerProxy::show):
(WebKit::WebNotificationManagerProxy::cancel):
(WebKit::WebNotificationManagerProxy::didDestroyNotification):
(WebKit::WebNotificationManagerProxy::notificationPermissionLevel): Retrieve the policy from the provider.
(WebKit::WebNotificationManagerProxy::providerDidShowNotification):
(WebKit::WebNotificationManagerProxy::providerDidClickNotification):
(WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):

  • UIProcess/Notifications/WebNotificationManagerProxy.h: Moved from Source/WebKit2/UIProcess/WebNotificationManagerProxy.h.

(WebKit::WebNotificationManagerProxy::clearContext):
(WebKit::WebNotificationManagerProxy::type):

Added NotificationPermissionRequestManagerProxy to WebPageProxy, to allow a request for permission to
go through to the UI client. Added new message to WebPageProxy, RequestNotificationPermission.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::close): Invalidate pending requests.
(WebKit::WebPageProxy::processDidCrash): Ditto.
(WebKit::WebPageProxy::requestNotificationPermission): Forward request to UI client.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebUIClient.cpp:

(WebKit::WebUIClient::decidePolicyForNotificationPermissionRequest):

  • UIProcess/WebUIClient.h:

Added new message DidReceiveNotificationPermissionDecision. The WebPage forwards the message to the
permission request manager.

  • WebProcess/WebPage/WebPage.messages.in: Added new message DidReceiveNotificationPermissionDecision
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::notificationPermissionRequestManager): Create manager on request.
(WebKit::WebPage::didReceiveNotificationPermissionDecision):

  • WebProcess/WebPage/WebPage.h:

Moving files to Notifications/ subdirectory.

  • UIProcess/Notifications/WebNotification.cpp: Moved from Source/WebKit2/UIProcess/WebNotification.cpp.
  • UIProcess/Notifications/WebNotification.h: Moved from Source/WebKit2/UIProcess/WebNotification.h.

Tools:

Add null function item to comply with added callback to WKPageUIClient.

  • MiniBrowser/mac/BrowserWindowController.m:

(-[BrowserWindowController awakeFromNib]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::initialize):

Location:
trunk
Files:
2 added
26 edited
7 copied
7 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r102346 r102352  
     12011-12-06  Jon Lee  <jonlee@apple.com>
     2
     3        [WK2] Add permissions support (73960)
     4        https://bugs.webkit.org/show_bug.cgi?id=73960
     5        <rdar://problem/10357008>
     6
     7        Reviewed by Darin Adler.
     8
     9        * DerivedSources.make: Moved notification files to its own directory. Need to add that path.
     10        * WebKit2.xcodeproj/project.pbxproj: New header and impl files.
     11        * Target.pri: Ditto.
     12        * GNUmakefile.am: Ditto.
     13        * win/WebKit2.vcproj: Ditto.
     14        * win/WebKit2Common.vsprops: Add path to Notifications directory.
     15
     16        Implement permission functions, which go through permission request manager.
     17
     18        * WebProcess/WebCoreSupport/WebNotificationClient.cpp:
     19        (WebKit::WebNotificationClient::requestPermission):
     20        (WebKit::WebNotificationClient::cancelRequestsForPermission):
     21        (WebKit::WebNotificationClient::checkPermission):
     22
     23        New NotificationPermissionRequestManager to make and cancel permission requests, and to retrieve current
     24        policy.
     25
     26        * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: Added.
     27        (WebKit::generateRequestID):
     28        (WebKit::NotificationPermissionRequestManager::create):
     29        (WebKit::NotificationPermissionRequestManager::NotificationPermissionRequestManager):
     30        (WebKit::NotificationPermissionRequestManager::startRequest): Keep track of the provided callback once
     31        policy decision is made.
     32        (WebKit::NotificationPermissionRequestManager::cancelRequest):
     33        (WebKit::NotificationPermissionRequestManager::permissionLevel): Retrieve level through a synchronous
     34        message to the proxy.
     35        (WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision): Invoke the callback.
     36        * WebProcess/Notifications/NotificationPermissionRequestManager.h: Added.
     37        (WebKit::isRequestIDValid): Make sure any provided request IDs are valid.
     38
     39        Added new NotificationPermissionRequest class.
     40
     41        * UIProcess/Notifications/NotificationPermissionRequest.cpp: Added.
     42        (WebKit::NotificationPermissionRequest::create):
     43        (WebKit::NotificationPermissionRequest::NotificationPermissionRequest):
     44        (WebKit::NotificationPermissionRequest::allow): Notify manager of decision.
     45        (WebKit::NotificationPermissionRequest::deny): Ditto.
     46        (WebKit::NotificationPermissionRequest::invalidate): Disassociate with manager.
     47        (WebKit::NotificationPermissionRequest::type):
     48        * UIProcess/Notifications/NotificationPermissionRequest.h: Added.
     49
     50        WKAPI support for NotificationPermissionRequest:
     51
     52        * Shared/API/c/WKBase.h:
     53        * Shared/APIObject.h:
     54        * UIProcess/API/C/WKAPICast.h:
     55        * UIProcess/API/C/WKNotificationPermissionRequest.cpp: Added.
     56        (WKNotificationPermissionRequestGetTypeID):
     57        (WKNotificationPermissionRequestAllow):
     58        (WKNotificationPermissionRequestDeny):
     59        * UIProcess/API/C/WKNotificationPermissionRequest.h: Added.
     60
     61        Other additions to WK API:
     62
     63        * UIProcess/API/C/WKNotificationProvider.h: Added new callback for WKNotificationProviders, to return policy
     64        for a given security origin.
     65        * UIProcess/API/C/WKPage.h: Added new callback to WKPageUIClient to ask user to decide on policy.
     66
     67        New NotificationPermissionRequestManagerProxy to create requests.
     68
     69        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: Added.
     70        (WebKit::NotificationPermissionRequestManagerProxy::NotificationPermissionRequestManagerProxy):
     71        (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests):
     72        (WebKit::NotificationPermissionRequestManagerProxy::createRequest):
     73        (WebKit::NotificationPermissionRequestManagerProxy::didReceiveNotificationPermissionDecision):
     74        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h: Added.
     75
     76        Added new message to notification manager: NotificationPermissionLevel, to retrieve policy. The current
     77        JS API retrieves the permission synchronously, so the message needs to be sent synchronously also.
     78
     79        * UIProcess/Notifications/WebNotificationManagerProxy.messages.in: Moved from Source/WebKit2/UIProcess/WebNotificationManagerProxy.messages.in.
     80        * UIProcess/Notifications/WebNotificationProvider.cpp: Moved from Source/WebKit2/UIProcess/WebNotificationProvider.cpp.
     81        (WebKit::WebNotificationProvider::policyForNotificationPermissionAtOrigin): Added.
     82        * UIProcess/Notifications/WebNotificationProvider.h: Moved from Source/WebKit2/UIProcess/WebNotificationProvider.h.
     83        * UIProcess/WebProcessProxy.cpp:
     84        (WebKit::WebProcessProxy::didReceiveSyncMessage): Boilerplate to forward messages to notification manager.
     85
     86        * UIProcess/Notifications/WebNotificationManagerProxy.cpp: Moved from Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp.
     87        (WebKit::WebNotificationManagerProxy::create):
     88        (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy):
     89        (WebKit::WebNotificationManagerProxy::invalidate):
     90        (WebKit::WebNotificationManagerProxy::initializeProvider):
     91        (WebKit::WebNotificationManagerProxy::didReceiveMessage):
     92        (WebKit::WebNotificationManagerProxy::didReceiveSyncMessage):
     93        (WebKit::WebNotificationManagerProxy::show):
     94        (WebKit::WebNotificationManagerProxy::cancel):
     95        (WebKit::WebNotificationManagerProxy::didDestroyNotification):
     96        (WebKit::WebNotificationManagerProxy::notificationPermissionLevel): Retrieve the policy from the provider.
     97        (WebKit::WebNotificationManagerProxy::providerDidShowNotification):
     98        (WebKit::WebNotificationManagerProxy::providerDidClickNotification):
     99        (WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):
     100        * UIProcess/Notifications/WebNotificationManagerProxy.h: Moved from Source/WebKit2/UIProcess/WebNotificationManagerProxy.h.
     101        (WebKit::WebNotificationManagerProxy::clearContext):
     102        (WebKit::WebNotificationManagerProxy::type):
     103
     104        Added NotificationPermissionRequestManagerProxy to WebPageProxy, to allow a request for permission to
     105        go through to the UI client. Added new message to WebPageProxy, RequestNotificationPermission.
     106
     107        * UIProcess/WebPageProxy.cpp:
     108        (WebKit::WebPageProxy::WebPageProxy):
     109        (WebKit::WebPageProxy::close): Invalidate pending requests.
     110        (WebKit::WebPageProxy::processDidCrash): Ditto.
     111        (WebKit::WebPageProxy::requestNotificationPermission): Forward request to UI client.
     112        * UIProcess/WebPageProxy.h:
     113        * UIProcess/WebPageProxy.messages.in:
     114
     115        * UIProcess/WebUIClient.cpp:
     116        (WebKit::WebUIClient::decidePolicyForNotificationPermissionRequest):
     117        * UIProcess/WebUIClient.h:
     118
     119        Added new message DidReceiveNotificationPermissionDecision. The WebPage forwards the message to the
     120        permission request manager.
     121
     122        * WebProcess/WebPage/WebPage.messages.in: Added new message DidReceiveNotificationPermissionDecision
     123        * WebProcess/WebPage/WebPage.cpp:
     124        (WebKit::WebPage::notificationPermissionRequestManager): Create manager on request.
     125        (WebKit::WebPage::didReceiveNotificationPermissionDecision):
     126        * WebProcess/WebPage/WebPage.h:
     127
     128        Moving files to Notifications/ subdirectory.
     129
     130        * UIProcess/Notifications/WebNotification.cpp: Moved from Source/WebKit2/UIProcess/WebNotification.cpp.
     131        * UIProcess/Notifications/WebNotification.h: Moved from Source/WebKit2/UIProcess/WebNotification.h.
     132
    11332011-12-08  Nayan Kumar K  <nayankk@motorola.com>
    2134
  • trunk/Source/WebKit2/DerivedSources.make

    r101750 r102352  
    4141    $(WebKit2)/UIProcess \
    4242    $(WebKit2)/UIProcess/Downloads \
     43    $(WebKit2)/UIProcess/Notifications \
    4344    $(WebKit2)/UIProcess/Plugins \
    4445#
  • trunk/Source/WebKit2/GNUmakefile.am

    r102346 r102352  
    5858        $(WebKit2)/UIProcess/API/C/WKKeyValueStorageManager.h \
    5959        $(WebKit2)/UIProcess/API/C/WKMediaCacheManager.h \
     60        $(WebKit2)/UIProcess/API/C/WKNativeEvent.h \
     61        $(WebKit2)/UIProcess/API/C/WKNavigationData.h \
    6062        $(WebKit2)/UIProcess/API/C/WKNotification.h \
    6163        $(WebKit2)/UIProcess/API/C/WKNotificationManager.h \
     64        $(WebKit2)/UIProcess/API/C/WKNotificationPermissionRequest.h \
    6265        $(WebKit2)/UIProcess/API/C/WKNotificationProvider.h \
    63         $(WebKit2)/UIProcess/API/C/WKNativeEvent.h \
    64         $(WebKit2)/UIProcess/API/C/WKNavigationData.h \
    6566        $(WebKit2)/UIProcess/API/C/WKOpenPanelParameters.h \
    6667        $(WebKit2)/UIProcess/API/C/WKOpenPanelResultListener.h \
     
    486487        Source/WebKit2/UIProcess/API/C/WKNotificationManager.cpp \
    487488        Source/WebKit2/UIProcess/API/C/WKNotificationManager.h \
     489        Source/WebKit2/UIProcess/API/C/WKNotificationPermissionRequest.cpp \
     490        Source/WebKit2/UIProcess/API/C/WKNotificationPermissionRequest.h \
    488491        Source/WebKit2/UIProcess/API/C/WKNotificationProvider.h \
    489492        Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp \
     
    582585        Source/WebKit2/UIProcess/Launcher/ThreadLauncher.cpp \
    583586        Source/WebKit2/UIProcess/Launcher/ThreadLauncher.h \
     587        Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp \
     588        Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h \
     589        Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp \
     590        Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h \
     591        Source/WebKit2/UIProcess/Notifications/WebNotification.cpp \
     592        Source/WebKit2/UIProcess/Notifications/WebNotification.h \
     593        Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp \
     594        Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h \
     595        Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp \
     596        Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h \
    584597        Source/WebKit2/UIProcess/PageClient.h \
    585598        Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp \
     
    660673        Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp \
    661674        Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h \
    662         Source/WebKit2/UIProcess/WebNotification.cpp \
    663         Source/WebKit2/UIProcess/WebNotification.h \
    664         Source/WebKit2/UIProcess/WebNotificationManagerProxy.cpp \
    665         Source/WebKit2/UIProcess/WebNotificationManagerProxy.h \
    666         Source/WebKit2/UIProcess/WebNotificationProvider.cpp \
    667         Source/WebKit2/UIProcess/WebNotificationProvider.h \
    668675        Source/WebKit2/UIProcess/WebLoaderClient.cpp \
    669676        Source/WebKit2/UIProcess/WebLoaderClient.h \
     
    796803        Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp \
    797804        Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.h \
     805        Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp \
     806        Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h \
    798807        Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp \
    799808        Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h \
     
    934943        -I$(srcdir)/Source/WebKit2/UIProcess/Launcher \
    935944        -I$(srcdir)/Source/WebKit2/UIProcess/Launcher/gtk \
     945        -I$(srcdir)/Source/WebKit2/UIProcess/Notifications \
    936946        -I$(srcdir)/Source/WebKit2/UIProcess/Plugins \
    937947        -I$(srcdir)/Source/WebKit2/UIProcess/Plugins/gtk \
     
    10601070        $(WebKit2)/UIProcess/Downloads \
    10611071        $(WebKit2)/UIProcess/Geolocation \
     1072        $(WebKit2)/UIProcess/Notifications \
    10621073        $(WebKit2)/UIProcess/Plugins \
    10631074        $(WebKit2)/UIProcess/ResourceCache \
     
    14541465        $(shell ls $(WebKit2)/UIProcess/*.in) \
    14551466        $(shell ls $(WebKit2)/UIProcess/Downloads/*.in) \
     1467        $(shell ls $(WebKit2)/UIProcess/Notifications/*.in) \
    14561468        $(shell ls $(WebKit2)/UIProcess/Plugins/*.in) \
    14571469        $(shell ls $(WebKit2)/WebProcess/*.in) \
     
    14641476        $(shell ls $(WebKit2)/WebProcess/KeyValueStorage/*.in) \
    14651477        $(shell ls $(WebKit2)/WebProcess/MediaCache/*.in) \
     1478        $(shell ls $(WebKit2)/WebProcess/Notifications/*.in) \
    14661479        $(shell ls $(WebKit2)/WebProcess/Plugins/*.in) \
    14671480        $(shell ls $(WebKit2)/WebProcess/ResourceCache/*.in) \
  • trunk/Source/WebKit2/Shared/API/c/WKBase.h

    r101307 r102352  
    9898typedef const struct OpaqueWKNotification* WKNotificationRef;
    9999typedef const struct OpaqueWKNotificationManager* WKNotificationManagerRef;
     100typedef const struct OpaqueWKNotificationPermissionRequest* WKNotificationPermissionRequestRef;
    100101typedef const struct OpaqueWKNotificationProvider* WKNotificationProviderRef;
    101102typedef const struct OpaqueWKOpenPanelParameters* WKOpenPanelParametersRef;
  • trunk/Source/WebKit2/Shared/APIObject.h

    r102346 r102352  
    9292        TypeNotification,
    9393        TypeNotificationManager,
     94        TypeNotificationPermissionRequest,
    9495        TypeOpenPanelParameters,
    9596        TypeOpenPanelResultListener,
  • trunk/Source/WebKit2/Target.pri

    r102346 r102352  
    158158    UIProcess/API/C/WKNotification.h \
    159159    UIProcess/API/C/WKNotificationManager.h \
     160    UIProcess/API/C/WKNotificationPermissionRequest.h \
    160161    UIProcess/API/C/WKNotificationProvider.h \
    161162    UIProcess/API/C/WKPage.h \
     
    195196    UIProcess/Launcher/ProcessLauncher.h \
    196197    UIProcess/Launcher/ThreadLauncher.h \
     198    UIProcess/Notifications/NotificationPermissionRequest.h \
     199    UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h \
     200    UIProcess/Notifications/WebNotification.h \
     201    UIProcess/Notifications/WebNotificationManagerProxy.h \
     202    UIProcess/Notifications/WebNotificationProvider.h \
    197203    UIProcess/PageClient.h \
    198204    UIProcess/Plugins/PluginInfoStore.h \
     
    233239    UIProcess/WebMediaCacheManagerProxy.h \
    234240    UIProcess/WebNavigationData.h \
    235     UIProcess/WebNotification.h \
    236     UIProcess/WebNotificationManagerProxy.h \
    237     UIProcess/WebNotificationProvider.h \
    238241    UIProcess/WebOpenPanelResultListenerProxy.h \
    239242    UIProcess/WebPageContextMenuClient.h \
     
    305308    WebProcess/KeyValueStorage/WebKeyValueStorageManager.h \
    306309    WebProcess/MediaCache/WebMediaCacheManager.h \
     310    WebProcess/Notifications/NotificationPermissionRequestManager.h \
    307311    WebProcess/Notifications/WebNotificationManager.h \
    308312    WebProcess/ResourceCache/WebResourceCacheManager.h \
     
    478482    UIProcess/API/C/WKNotification.cpp \
    479483    UIProcess/API/C/WKNotificationManager.cpp \
     484    UIProcess/API/C/WKNotificationPermissionRequest.cpp \
    480485    UIProcess/API/C/WKOpenPanelParameters.cpp \
    481486    UIProcess/API/C/WKOpenPanelResultListener.cpp \
     
    511516    UIProcess/Launcher/qt/ProcessLauncherQt.cpp \
    512517    UIProcess/Launcher/qt/ThreadLauncherQt.cpp \
     518    UIProcess/Notifications/NotificationPermissionRequest.cpp \
     519    UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp \
     520    UIProcess/Notifications/WebNotification.cpp \
     521    UIProcess/Notifications/WebNotificationManagerProxy.cpp \
     522    UIProcess/Notifications/WebNotificationProvider.cpp \
    513523    UIProcess/Plugins/PluginInfoStore.cpp \
    514524    UIProcess/Plugins/PluginProcessProxy.cpp \
     
    549559    UIProcess/WebMediaCacheManagerProxy.cpp \
    550560    UIProcess/WebNavigationData.cpp \
    551     UIProcess/WebNotification.cpp \
    552     UIProcess/WebNotificationManagerProxy.cpp \
    553     UIProcess/WebNotificationProvider.cpp \
    554561    UIProcess/WebOpenPanelResultListenerProxy.cpp \
    555562    UIProcess/WebPageContextMenuClient.cpp \
     
    637644    WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp \
    638645    WebProcess/MediaCache/WebMediaCacheManager.cpp \
     646    WebProcess/Notifications/NotificationPermissionRequestManager.cpp \
    639647    WebProcess/Notifications/WebNotificationManager.cpp \
    640648    WebProcess/ResourceCache/WebResourceCacheManager.cpp \
  • trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h

    r101307 r102352  
    5353class DownloadProxy;
    5454class GeolocationPermissionRequestProxy;
     55class NotificationPermissionRequest;
    5556class WebApplicationCacheManagerProxy;
    5657class WebBackForwardList;
     
    109110WK_ADD_API_MAPPING(WKNavigationDataRef, WebNavigationData)
    110111WK_ADD_API_MAPPING(WKNotificationManagerRef, WebNotificationManagerProxy)
     112WK_ADD_API_MAPPING(WKNotificationPermissionRequestRef, NotificationPermissionRequest)
    111113WK_ADD_API_MAPPING(WKNotificationProviderRef, WebNotificationProvider)
    112114WK_ADD_API_MAPPING(WKNotificationRef, WebNotification)
  • trunk/Source/WebKit2/UIProcess/API/C/WKNotificationPermissionRequest.cpp

    r102351 r102352  
    2424 */
    2525
    26 #ifndef WebNotificationProvider_h
    27 #define WebNotificationProvider_h
     26#include "config.h"
     27#include "WKNotificationPermissionRequest.h"
    2828
    29 #include "APIClient.h"
    30 #include "WKNotificationProvider.h"
    31 #include <wtf/Forward.h>
     29#include "NotificationPermissionRequest.h"
     30#include "WKAPICast.h"
    3231
    33 namespace WebKit {
     32using namespace WebKit;
    3433
    35 class WebNotification;
    36 class WebNotificationManagerProxy;
    37    
    38 class WebNotificationProvider : public APIClient<WKNotificationProvider, kWKNotificationProviderCurrentVersion> {
    39 public:
    40     void show(WebNotification*);
    41     void cancel(WebNotification*);
    42     void didDestroyNotification(WebNotification*);
     34WKTypeID WKNotificationPermissionRequestGetTypeID()
     35{
     36    return toAPI(NotificationPermissionRequest::APIType);
     37}
    4338
    44     void addNotificationManager(WebNotificationManagerProxy*);
    45     void removeNotificationManager(WebNotificationManagerProxy*);
    46 };
     39void WKNotificationPermissionRequestAllow(WKNotificationPermissionRequestRef notificationPermissionRequest)
     40{
     41    return toImpl(notificationPermissionRequest)->allow();
     42}
    4743
    48 } // namespace WebKit
    49 
    50 #endif // WebNotificationProvider_h
     44void WKNotificationPermissionRequestDeny(WKNotificationPermissionRequestRef notificationPermissionRequest)
     45{
     46    return toImpl(notificationPermissionRequest)->deny();
     47}
  • trunk/Source/WebKit2/UIProcess/API/C/WKNotificationPermissionRequest.h

    r102351 r102352  
    2424 */
    2525
    26 #ifndef WebNotificationProvider_h
    27 #define WebNotificationProvider_h
     26#ifndef WKNotificationPermissionRequest_h
     27#define WKNotificationPermissionRequest_h
    2828
    29 #include "APIClient.h"
    30 #include "WKNotificationProvider.h"
    31 #include <wtf/Forward.h>
     29#include <WebKit2/WKBase.h>
    3230
    33 namespace WebKit {
     31#ifdef __cplusplus
     32extern "C" {
     33#endif
    3434
    35 class WebNotification;
    36 class WebNotificationManagerProxy;
    37    
    38 class WebNotificationProvider : public APIClient<WKNotificationProvider, kWKNotificationProviderCurrentVersion> {
    39 public:
    40     void show(WebNotification*);
    41     void cancel(WebNotification*);
    42     void didDestroyNotification(WebNotification*);
     35WK_EXPORT WKTypeID WKNotificationPermissionRequestGetTypeID();
    4336
    44     void addNotificationManager(WebNotificationManagerProxy*);
    45     void removeNotificationManager(WebNotificationManagerProxy*);
    46 };
     37WK_EXPORT void WKNotificationPermissionRequestAllow(WKNotificationPermissionRequestRef notificationPermissionRequest);
     38WK_EXPORT void WKNotificationPermissionRequestDeny(WKNotificationPermissionRequestRef notificationPermissionRequest);
    4739
    48 } // namespace WebKit
     40#ifdef __cplusplus
     41}
     42#endif
    4943
    50 #endif // WebNotificationProvider_h
     44#endif // WKNotificationPermissionRequest_h
  • trunk/Source/WebKit2/UIProcess/API/C/WKNotificationProvider.h

    r101750 r102352  
    3636typedef void (*WKNotificationProviderCancelCallback)(WKNotificationRef notification, const void* clientInfo);
    3737typedef void (*WKNotificationProviderDidDestroyNotificationCallback)(WKNotificationRef notification, const void* clientInfo);
     38typedef int (*WKNotificationProviderPolicyForNotificationPermissionAtOriginCallback)(WKSecurityOriginRef origin, const void *clientInfo);
    3839typedef void (*WKNotificationProviderAddNotificationManagerCallback)(WKNotificationManagerRef manager, const void* clientInfo);
    3940typedef void (*WKNotificationProviderRemoveNotificationManagerCallback)(WKNotificationManagerRef manager, const void* clientInfo);
    4041
    4142struct WKNotificationProvider {
    42     int                                                       version;
    43     const void*                                               clientInfo;
    44     WKNotificationProviderShowCallback                        show;
    45     WKNotificationProviderCancelCallback                      cancel;
    46     WKNotificationProviderDidDestroyNotificationCallback      didDestroyNotification;
    47     WKNotificationProviderAddNotificationManagerCallback      addNotificationManager;
    48     WKNotificationProviderRemoveNotificationManagerCallback   removeNotificationManager;
     43    int                                                                   version;
     44    const void*                                                           clientInfo;
     45    WKNotificationProviderShowCallback                                    show;
     46    WKNotificationProviderCancelCallback                                  cancel;
     47    WKNotificationProviderDidDestroyNotificationCallback                  didDestroyNotification;
     48    WKNotificationProviderPolicyForNotificationPermissionAtOriginCallback policyForNotificationPermissionAtOrigin;
     49    WKNotificationProviderAddNotificationManagerCallback                  addNotificationManager;
     50    WKNotificationProviderRemoveNotificationManagerCallback               removeNotificationManager;
    4951};
    5052typedef struct WKNotificationProvider WKNotificationProvider;
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.h

    r99102 r102352  
    198198typedef void (*WKPageSaveDataToFileInDownloadsFolderCallback)(WKPageRef page, WKStringRef suggestedFilename, WKStringRef mimeType, WKURLRef originatingURL, WKDataRef data, const void* clientInfo);
    199199typedef bool (*WKPageShouldInterruptJavaScriptCallback)(WKPageRef page, const void *clientInfo);
     200typedef void (*WKPageDecidePolicyForNotificationPermissionRequestCallback)(WKPageRef page, WKSecurityOriginRef origin, WKNotificationPermissionRequestRef permissionRequest, const void *clientInfo);
    200201
    201202// Deprecated   
     
    251252    WKPageCreateNewPageCallback                                         createNewPage;
    252253    WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
     254    WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
    253255};
    254256typedef struct WKPageUIClient WKPageUIClient;
  • trunk/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp

    r102351 r102352  
    2525
    2626#include "config.h"
    27 #include "WebNotification.h"
     27#include "NotificationPermissionRequest.h"
    2828
    29 #include "ArgumentCoders.h"
    30 #include "ArgumentDecoder.h"
    31 #include "ArgumentEncoder.h"
    32 #include "Arguments.h"
     29#include "NotificationPermissionRequestManagerProxy.h"
    3330
    3431namespace WebKit {
    35 
    36 WebNotification::WebNotification()
     32   
     33PassRefPtr<NotificationPermissionRequest> NotificationPermissionRequest::create(WebKit::NotificationPermissionRequestManagerProxy *manager, uint64_t notificationID)
    3734{
     35    return adoptRef(new NotificationPermissionRequest(manager, notificationID));
    3836}
    3937
    40 WebNotification::WebNotification(const String& title, const String& body, uint64_t notificationID)
    41     : m_title(title)
    42     , m_body(body)
     38NotificationPermissionRequest::NotificationPermissionRequest(NotificationPermissionRequestManagerProxy* manager, uint64_t notificationID)
     39    : m_manager(manager)
    4340    , m_notificationID(notificationID)
    4441{
    4542}
    4643
    47 WebNotification::~WebNotification()
     44void NotificationPermissionRequest::allow()
    4845{
     46    if (!m_manager)
     47        return;
     48   
     49    m_manager->didReceiveNotificationPermissionDecision(m_notificationID, true);
     50    m_manager = 0;
    4951}
    5052
    51 void WebNotification::encode(CoreIPC::ArgumentEncoder* encoder) const
     53void NotificationPermissionRequest::deny()
    5254{
    53     encoder->encode(CoreIPC::In(m_title, m_body, m_notificationID));
     55    if (!m_manager)
     56        return;
     57   
     58    m_manager->didReceiveNotificationPermissionDecision(m_notificationID, false);
     59    m_manager = 0;
    5460}
    5561
    56 bool WebNotification::decode(CoreIPC::ArgumentDecoder* decoder, WebNotification& notification)
     62void NotificationPermissionRequest::invalidate()
    5763{
    58     return decoder->decode(CoreIPC::Out(notification.m_title, notification.m_body, notification.m_notificationID));
     64    m_manager = 0;
    5965}
    6066
  • trunk/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h

    r102351 r102352  
    2424 */
    2525
    26 #ifndef WebNotificationProvider_h
    27 #define WebNotificationProvider_h
     26#ifndef NotificationPermissionRequest_h
     27#define NotificationPermissionRequest_h
    2828
    29 #include "APIClient.h"
    30 #include "WKNotificationProvider.h"
    31 #include <wtf/Forward.h>
     29#include "APIObject.h"
     30#include <wtf/PassRefPtr.h>
    3231
    3332namespace WebKit {
    3433
    35 class WebNotification;
    36 class WebNotificationManagerProxy;
     34class NotificationPermissionRequestManagerProxy;
     35
     36class NotificationPermissionRequest : public APIObject {
     37public:
     38    static const Type APIType = TypeNotificationPermissionRequest;
    3739   
    38 class WebNotificationProvider : public APIClient<WKNotificationProvider, kWKNotificationProviderCurrentVersion> {
    39 public:
    40     void show(WebNotification*);
    41     void cancel(WebNotification*);
    42     void didDestroyNotification(WebNotification*);
    43 
    44     void addNotificationManager(WebNotificationManagerProxy*);
    45     void removeNotificationManager(WebNotificationManagerProxy*);
     40    static PassRefPtr<NotificationPermissionRequest> create(NotificationPermissionRequestManagerProxy*, uint64_t notificationID);
     41   
     42    void allow();
     43    void deny();
     44   
     45    void invalidate();
     46   
     47private:
     48    NotificationPermissionRequest(NotificationPermissionRequestManagerProxy*, uint64_t notificationID);
     49   
     50    virtual Type type() const { return APIType; }
     51   
     52    NotificationPermissionRequestManagerProxy* m_manager;
     53    uint64_t m_notificationID;   
    4654};
    4755
    4856} // namespace WebKit
    4957
    50 #endif // WebNotificationProvider_h
     58#endif // NotificationPermissionRequestProxy_h
  • trunk/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp

    r102351 r102352  
    2525
    2626#include "config.h"
    27 #include "WebNotificationProvider.h"
     27#include "NotificationPermissionRequestManagerProxy.h"
    2828
    29 #include "WKAPICast.h"
    30 #include "WebNotification.h"
    31 #include "WebNotificationManagerProxy.h"
     29#include "NotificationPermissionRequest.h"
     30#include "WebPageMessages.h"
     31#include "WebPageProxy.h"
     32#include "WebProcessProxy.h"
    3233
    3334namespace WebKit {
    3435
    35 void WebNotificationProvider::show(WebNotification* notification)
     36NotificationPermissionRequestManagerProxy::NotificationPermissionRequestManagerProxy(WebPageProxy* page)
     37    : m_page(page)
    3638{
    37     if (!m_client.show)
     39}
     40
     41void NotificationPermissionRequestManagerProxy::invalidateRequests()
     42{
     43    PendingRequestMap::const_iterator it = m_pendingRequests.begin();
     44    PendingRequestMap::const_iterator end = m_pendingRequests.end();
     45    for (; it != end; ++it)
     46        it->second->invalidate();
     47   
     48    m_pendingRequests.clear();
     49}
     50
     51PassRefPtr<NotificationPermissionRequest> NotificationPermissionRequestManagerProxy::createRequest(uint64_t notificationID)
     52{
     53    RefPtr<NotificationPermissionRequest> request = NotificationPermissionRequest::create(this, notificationID);
     54    m_pendingRequests.add(notificationID, request.get());
     55    return request.release();
     56}
     57
     58void NotificationPermissionRequestManagerProxy::didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allow)
     59{
     60    if (!m_page->isValid())
    3861        return;
    3962   
    40     m_client.show(toAPI(notification), m_client.clientInfo);
    41 }
    42 
    43 void WebNotificationProvider::cancel(WebNotification* notification)
    44 {
    45     if (!m_client.cancel)
     63    RefPtr<NotificationPermissionRequest> request = m_pendingRequests.take(notificationID);
     64    if (!request)
    4665        return;
    4766   
    48     m_client.cancel(toAPI(notification), m_client.clientInfo);
    49 }
    50 
    51 void WebNotificationProvider::didDestroyNotification(WebNotification* notification)
    52 {
    53     if (!m_client.didDestroyNotification)
    54         return;
    55    
    56     m_client.didDestroyNotification(toAPI(notification), m_client.clientInfo);
    57 }
    58 
    59 void WebNotificationProvider::addNotificationManager(WebNotificationManagerProxy* manager)
    60 {
    61     if (!m_client.addNotificationManager)
    62         return;
    63    
    64     m_client.addNotificationManager(toAPI(manager), m_client.clientInfo);
    65 }
    66 
    67 void WebNotificationProvider::removeNotificationManager(WebNotificationManagerProxy* manager)
    68 {
    69     if (!m_client.removeNotificationManager)
    70         return;
    71    
    72     m_client.removeNotificationManager(toAPI(manager), m_client.clientInfo);
     67    m_page->process()->send(Messages::WebPage::DidReceiveNotificationPermissionDecision(notificationID, allow), m_page->pageID());
    7368}
    7469
  • trunk/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h

    r102351 r102352  
    2424 */
    2525
    26 #ifndef WebNotificationProvider_h
    27 #define WebNotificationProvider_h
     26#ifndef NotificationPermissionRequestManagerProxy_h
     27#define NotificationPermissionRequestManagerProxy_h
    2828
    29 #include "APIClient.h"
    30 #include "WKNotificationProvider.h"
    31 #include <wtf/Forward.h>
     29#include "NotificationPermissionRequest.h"
     30#include <wtf/HashMap.h>
     31#include <wtf/RefPtr.h>
    3232
    3333namespace WebKit {
    3434
    35 class WebNotification;
    36 class WebNotificationManagerProxy;
     35class GeolocationPermissionRequestProxy;
     36class WebPageProxy;
     37
     38class NotificationPermissionRequestManagerProxy {
     39public:
     40    explicit NotificationPermissionRequestManagerProxy(WebPageProxy*);
    3741   
    38 class WebNotificationProvider : public APIClient<WKNotificationProvider, kWKNotificationProviderCurrentVersion> {
    39 public:
    40     void show(WebNotification*);
    41     void cancel(WebNotification*);
    42     void didDestroyNotification(WebNotification*);
    43 
    44     void addNotificationManager(WebNotificationManagerProxy*);
    45     void removeNotificationManager(WebNotificationManagerProxy*);
     42    void invalidateRequests();
     43   
     44    // Create a request to be presented to the user.
     45    PassRefPtr<NotificationPermissionRequest> createRequest(uint64_t notificationID);
     46   
     47    // Called by NotificationPermissionRequest when a decision is made by the user.
     48    void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allow);
     49   
     50private:
     51    typedef HashMap<uint64_t, RefPtr<NotificationPermissionRequest> > PendingRequestMap;
     52    PendingRequestMap m_pendingRequests;
     53    WebPageProxy* m_page;
    4654};
    4755
    4856} // namespace WebKit
    4957
    50 #endif // WebNotificationProvider_h
     58
     59#endif // NotificationPermissionRequestManagerProxy_h
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotification.cpp

    r102351 r102352  
    3434namespace WebKit {
    3535
    36 WebNotification::WebNotification()
    37 {
    38 }
    39 
    4036WebNotification::WebNotification(const String& title, const String& body, uint64_t notificationID)
    4137    : m_title(title)
    4238    , m_body(body)
    4339    , m_notificationID(notificationID)
    44 {
    45 }
    46 
    47 WebNotification::~WebNotification()
    4840{
    4941}
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotification.h

    r102351 r102352  
    4444    static const Type APIType = TypeNotification;
    4545   
    46     WebNotification();
    4746    static PassRefPtr<WebNotification> create(const String& title, const String& body, uint64_t notificationID)
    4847    {
    4948        return adoptRef(new WebNotification(title, body, notificationID));
    5049    }
    51     virtual ~WebNotification();
    5250   
    5351    const String& title() const { return m_title; }
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp

    r102351 r102352  
    3131#include "WebNotification.h"
    3232#include "WebNotificationManagerMessages.h"
     33#include "WebSecurityOrigin.h"
    3334#include <WebCore/NotificationContents.h>
    3435
     
    4849}
    4950
    50 WebNotificationManagerProxy::~WebNotificationManagerProxy()
    51 {
    52 }
    53 
    5451void WebNotificationManagerProxy::invalidate()
    5552{
     
    6562{
    6663    didReceiveWebNotificationManagerProxyMessage(connection, messageID, arguments);
     64}
     65
     66void WebNotificationManagerProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply)
     67{
     68    didReceiveSyncWebNotificationManagerProxyMessage(connection, messageID, arguments, reply);
    6769}
    6870
     
    104106}
    105107
     108void WebNotificationManagerProxy::notificationPermissionLevel(const String& originIdentifier, uint64_t& permissionLevel)
     109{
     110    RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::create(originIdentifier);
     111    permissionLevel = m_provider.policyForNotificationPermissionAtOrigin(origin.get());
     112}
     113
    106114void WebNotificationManagerProxy::providerDidShowNotification(uint64_t notificationID)
    107115{
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h

    r102351 r102352  
    3131#include "WebNotificationProvider.h"
    3232#include <wtf/HashMap.h>
     33#include <wtf/OwnPtr.h>
    3334#include <wtf/PassRefPtr.h>
    3435
    3536namespace CoreIPC {
    3637class ArgumentDecoder;
     38class ArgumentEncoder;
    3739class Connection;
    3840}
     
    4850   
    4951    static PassRefPtr<WebNotificationManagerProxy> create(WebContext*);
    50     virtual ~WebNotificationManagerProxy();
    5152   
    5253    void invalidate();
     
    6061   
    6162    void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
     63    void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&);
    6264
    6365private:
     
    6769   
    6870    void didReceiveWebNotificationManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
     71    void didReceiveSyncWebNotificationManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&);
    6972   
    7073    // Message handlers
     
    7275    void cancel(uint64_t notificationID);
    7376    void didDestroyNotification(uint64_t notificationID);
    74    
     77    void notificationPermissionLevel(const WTF::String& originIdentifier, uint64_t& permissionLevel);
     78
    7579    typedef HashMap<uint64_t, RefPtr<WebNotification> > WebNotificationMap;
    7680   
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.messages.in

    r102351 r102352  
    2525    Cancel(uint64_t notificationID);
    2626    DidDestroyNotification(uint64_t notificationID);
     27
     28    NotificationPermissionLevel(WTF::String originIdentifier) -> (uint64_t policy)
    2729}
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp

    r102351 r102352  
    3030#include "WebNotification.h"
    3131#include "WebNotificationManagerProxy.h"
     32#include "WebSecurityOrigin.h"
    3233
    3334namespace WebKit {
     
    5758}
    5859
     60int WebNotificationProvider::policyForNotificationPermissionAtOrigin(WebSecurityOrigin* origin)
     61{
     62    if (!m_client.policyForNotificationPermissionAtOrigin)
     63        return INT_MIN;
     64   
     65    return m_client.policyForNotificationPermissionAtOrigin(toAPI(origin), m_client.clientInfo);
     66}
     67
    5968void WebNotificationProvider::addNotificationManager(WebNotificationManagerProxy* manager)
    6069{
  • trunk/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h

    r102351 r102352  
    3535class WebNotification;
    3636class WebNotificationManagerProxy;
     37class WebSecurityOrigin;
    3738   
    3839class WebNotificationProvider : public APIClient<WKNotificationProvider, kWKNotificationProviderCurrentVersion> {
     
    4142    void cancel(WebNotification*);
    4243    void didDestroyNotification(WebNotification*);
     44    int policyForNotificationPermissionAtOrigin(WebSecurityOrigin*);
    4345
    4446    void addNotificationManager(WebNotificationManagerProxy*);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r102136 r102352  
    3838#include "NativeWebMouseEvent.h"
    3939#include "NativeWebWheelEvent.h"
     40#include "NotificationPermissionRequest.h"
     41#include "NotificationPermissionRequestManager.h"
    4042#include "PageClient.h"
    4143#include "PrintInfo.h"
     
    147149    , m_userAgent(standardUserAgent())
    148150    , m_geolocationPermissionRequestManager(this)
     151    , m_notificationPermissionRequestManager(this)
    149152    , m_estimatedProgress(0)
    150153    , m_isInWindow(m_pageClient->isViewInWindow())
     
    365368
    366369    m_geolocationPermissionRequestManager.invalidateRequests();
     370    m_notificationPermissionRequestManager.invalidateRequests();
    367371
    368372    m_toolTip = String();
     
    31343138
    31353139    m_geolocationPermissionRequestManager.invalidateRequests();
     3140    m_notificationPermissionRequestManager.invalidateRequests();
    31363141
    31373142    m_toolTip = String();
     
    32963301}
    32973302
     3303void WebPageProxy::requestNotificationPermission(uint64_t requestID, const String& originIdentifier)
     3304{
     3305    if (!isRequestIDValid(requestID))
     3306        return;
     3307
     3308    RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::create(originIdentifier);
     3309    RefPtr<NotificationPermissionRequest> request = m_notificationPermissionRequestManager.createRequest(requestID);
     3310   
     3311    if (!m_uiClient.decidePolicyForNotificationPermissionRequest(this, origin.get(), request.get()))
     3312        request->deny();
     3313}
     3314
    32983315float WebPageProxy::headerHeight(WebFrameProxy* frame)
    32993316{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r102136 r102352  
    3737#include "NativeWebTouchEvent.h"
    3838#endif
     39#include "NotificationPermissionRequestManagerProxy.h"
    3940#include "PlatformProcessIdentifier.h"
    4041#include "SandboxExtension.h"
     
    686687    void reattachToWebProcessWithItem(WebBackForwardListItem*);
    687688
     689    void requestNotificationPermission(uint64_t notificationID, const String& originIdentifier);
     690   
    688691#if USE(TILED_BACKING_STORE)
    689692    void pageDidRequestScroll(const WebCore::IntPoint&);
     
    870873    RefPtr<WebOpenPanelResultListenerProxy> m_openPanelResultListener;
    871874    GeolocationPermissionRequestManagerProxy m_geolocationPermissionRequestManager;
     875    NotificationPermissionRequestManagerProxy m_notificationPermissionRequestManager;
    872876
    873877    double m_estimatedProgress;
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r102136 r102352  
    195195    # Geolocation messages
    196196    RequestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, WTF::String originIdentifier)
     197   
     198    # Notification messages
     199    RequestNotificationPermission(uint64_t requestID, WTF::String originIdentifier)
    197200
    198201    # Spelling and grammar messages
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r102014 r102352  
    3535#include "WebContext.h"
    3636#include "WebNavigationDataStore.h"
     37#include "WebNotificationManagerProxy.h"
    3738#include "WebPageProxy.h"
    3839#include "WebProcessMessages.h"
     
    333334    }
    334335
     336    if (messageID.is<CoreIPC::MessageClassWebNotificationManagerProxy>()) {
     337        m_context->notificationManagerProxy()->didReceiveSyncMessage(connection, messageID, arguments, reply);
     338        return;
     339    }
     340
    335341    uint64_t pageID = arguments->destinationID();
    336342    if (!pageID)
  • trunk/Source/WebKit2/UIProcess/WebUIClient.cpp

    r97337 r102352  
    3030#include "NativeWebKeyboardEvent.h"
    3131#include "NativeWebWheelEvent.h"
     32#include "NotificationPermissionRequest.h"
    3233#include "WKAPICast.h"
    3334#include "WebNumber.h"
     
    332333}
    333334
     335bool WebUIClient::decidePolicyForNotificationPermissionRequest(WebPageProxy* page, WebSecurityOrigin* origin, NotificationPermissionRequest* permissionRequest)
     336{
     337    if (!m_client.decidePolicyForNotificationPermissionRequest)
     338        return false;
     339   
     340    m_client.decidePolicyForNotificationPermissionRequest(toAPI(page), toAPI(origin), toAPI(permissionRequest), m_client.clientInfo);
     341    return true;
     342}
     343
    334344float WebUIClient::headerHeight(WebPageProxy* page, WebFrameProxy* frame)
    335345{
  • trunk/Source/WebKit2/UIProcess/WebUIClient.h

    r97337 r102352  
    4848class NativeWebKeyboardEvent;
    4949class NativeWebWheelEvent;
     50class NotificationPermissionRequest;
    5051class WebData;
    5152class WebFrameProxy;
     
    100101    bool runOpenPanel(WebPageProxy*, WebFrameProxy*, WebOpenPanelParameters*, WebOpenPanelResultListenerProxy*);
    101102    bool decidePolicyForGeolocationPermissionRequest(WebPageProxy*, WebFrameProxy*, WebSecurityOrigin*, GeolocationPermissionRequestProxy*);
     103    bool decidePolicyForNotificationPermissionRequest(WebPageProxy*, WebSecurityOrigin*, NotificationPermissionRequest*);
    102104
    103105    // Printing.
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r102346 r102352  
    247247                29CD55AA128E294F00133C85 /* WKAccessibilityWebPageObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 29CD55A8128E294F00133C85 /* WKAccessibilityWebPageObject.h */; };
    248248                29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29CD55A9128E294F00133C85 /* WKAccessibilityWebPageObject.mm */; };
    249                 3109996F146C741D0029DEB9 /* WebNotificationManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3109996A146C73920029DEB9 /* WebNotificationManagerProxy.h */; };
    250                 31099970146C74200029DEB9 /* WebNotificationManagerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3109996B146C73B10029DEB9 /* WebNotificationManagerProxy.cpp */; };
    251249                31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31099971146C759B0029DEB9 /* WebNotificationClient.cpp */; };
    252                 3109997A146C8B140029DEB9 /* WebNotificationManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31099978146C8B140029DEB9 /* WebNotificationManager.cpp */; };
    253                 3109997B146C8B140029DEB9 /* WebNotificationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 31099979146C8B140029DEB9 /* WebNotificationManager.h */; };
    254250                310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31099968146C71F50029DEB9 /* WebNotificationClient.h */; };
    255                 312C0C47146DDBBD0016C911 /* WebNotificationProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 312C0C46146DDBBC0016C911 /* WebNotificationProvider.cpp */; };
    256251                312C0C4A146DDC8A0016C911 /* WKNotificationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 312C0C49146DDC8A0016C911 /* WKNotificationProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
     252                3131261E148FF82C00BA2A39 /* NotificationPermissionRequestManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31312619148FF82B00BA2A39 /* NotificationPermissionRequestManager.cpp */; };
     253                3131261F148FF82C00BA2A39 /* NotificationPermissionRequestManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3131261A148FF82B00BA2A39 /* NotificationPermissionRequestManager.h */; };
     254                31312620148FF82C00BA2A39 /* WebNotificationManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3131261B148FF82B00BA2A39 /* WebNotificationManager.cpp */; };
     255                31312621148FF82C00BA2A39 /* WebNotificationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3131261C148FF82B00BA2A39 /* WebNotificationManager.h */; };
    257256                318BE1671473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 318BE1651473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp */; };
    258257                318BE1681473433700A8FBB2 /* WebNotificationManagerProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 318BE1661473433700A8FBB2 /* WebNotificationManagerProxyMessages.h */; };
     
    261260                318BE17714743E6000A8FBB2 /* WKNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 318BE17614743E6000A8FBB2 /* WKNotification.cpp */; };
    262261                318BE17914743E6F00A8FBB2 /* WKNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 318BE17814743E6A00A8FBB2 /* WKNotification.h */; settings = {ATTRIBUTES = (Private, ); }; };
     262                31A2EC48148997C200810D71 /* WebNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A2EC41148997BE00810D71 /* WebNotification.cpp */; };
     263                31A2EC49148997C200810D71 /* WebNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A2EC42148997BE00810D71 /* WebNotification.h */; };
     264                31A2EC4A148997C200810D71 /* WebNotificationManagerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A2EC43148997BE00810D71 /* WebNotificationManagerProxy.cpp */; };
     265                31A2EC4B148997C200810D71 /* WebNotificationManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A2EC44148997BF00810D71 /* WebNotificationManagerProxy.h */; };
     266                31A2EC4D148997C200810D71 /* WebNotificationProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A2EC46148997C000810D71 /* WebNotificationProvider.cpp */; };
     267                31A2EC4E148997C200810D71 /* WebNotificationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A2EC47148997C100810D71 /* WebNotificationProvider.h */; };
     268                31A2EC501489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A2EC4F1489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp */; };
     269                31A2EC521489981900810D71 /* NotificationPermissionRequestManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A2EC511489981500810D71 /* NotificationPermissionRequestManagerProxy.h */; };
     270                31A2EC551489982E00810D71 /* NotificationPermissionRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A2EC541489982E00810D71 /* NotificationPermissionRequest.cpp */; };
     271                31A2EC5614899C0900810D71 /* NotificationPermissionRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A2EC531489982500810D71 /* NotificationPermissionRequest.h */; };
     272                31A2EC74148D59CA00810D71 /* WKNotificationPermissionRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 31A2EC72148D59BB00810D71 /* WKNotificationPermissionRequest.h */; settings = {ATTRIBUTES = (Private, ); }; };
     273                31A2EC77148D662E00810D71 /* WKNotificationPermissionRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A2EC75148D65BB00810D71 /* WKNotificationPermissionRequest.cpp */; };
    263274                31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31BA9248148830810062EDB5 /* WebNotificationManagerMessageReceiver.cpp */; };
    264275                31BA924E148831260062EDB5 /* WebNotificationManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 31BA9249148830810062EDB5 /* WebNotificationManagerMessages.h */; };
    265                 31C11AB3148452E90049A4CC /* WebNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31C11AB1148452E90049A4CC /* WebNotification.cpp */; };
    266                 31C11AB4148452E90049A4CC /* WebNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C11AB2148452E90049A4CC /* WebNotification.h */; };
    267276                31EA25D2134F78C0005B1452 /* NativeWebMouseEventMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31EA25D0134F78B2005B1452 /* NativeWebMouseEventMac.mm */; };
    268277                330934471315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 330934431315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp */; };
     
    12281237                29CD55A9128E294F00133C85 /* WKAccessibilityWebPageObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKAccessibilityWebPageObject.mm; sourceTree = "<group>"; };
    12291238                31099968146C71F50029DEB9 /* WebNotificationClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationClient.h; sourceTree = "<group>"; };
    1230                 3109996A146C73920029DEB9 /* WebNotificationManagerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationManagerProxy.h; sourceTree = "<group>"; };
    1231                 3109996B146C73B10029DEB9 /* WebNotificationManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationManagerProxy.cpp; sourceTree = "<group>"; };
    1232                 3109996D146C73C40029DEB9 /* WebNotificationManagerProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebNotificationManagerProxy.messages.in; sourceTree = "<group>"; };
    12331239                31099971146C759B0029DEB9 /* WebNotificationClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationClient.cpp; sourceTree = "<group>"; };
    1234                 31099978146C8B140029DEB9 /* WebNotificationManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebNotificationManager.cpp; path = Notifications/WebNotificationManager.cpp; sourceTree = "<group>"; };
    1235                 31099979146C8B140029DEB9 /* WebNotificationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebNotificationManager.h; path = Notifications/WebNotificationManager.h; sourceTree = "<group>"; };
    1236                 312C0C46146DDBBC0016C911 /* WebNotificationProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationProvider.cpp; sourceTree = "<group>"; };
    1237                 312C0C48146DDBD30016C911 /* WebNotificationProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationProvider.h; sourceTree = "<group>"; };
    12381240                312C0C49146DDC8A0016C911 /* WKNotificationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNotificationProvider.h; sourceTree = "<group>"; };
     1241                31312619148FF82B00BA2A39 /* NotificationPermissionRequestManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NotificationPermissionRequestManager.cpp; sourceTree = "<group>"; };
     1242                3131261A148FF82B00BA2A39 /* NotificationPermissionRequestManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotificationPermissionRequestManager.h; sourceTree = "<group>"; };
     1243                3131261B148FF82B00BA2A39 /* WebNotificationManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationManager.cpp; sourceTree = "<group>"; };
     1244                3131261C148FF82B00BA2A39 /* WebNotificationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationManager.h; sourceTree = "<group>"; };
     1245                3131261D148FF82C00BA2A39 /* WebNotificationManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebNotificationManager.messages.in; sourceTree = "<group>"; };
    12391246                318BE1651473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationManagerProxyMessageReceiver.cpp; sourceTree = "<group>"; };
    12401247                318BE1661473433700A8FBB2 /* WebNotificationManagerProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationManagerProxyMessages.h; sourceTree = "<group>"; };
     
    12431250                318BE17614743E6000A8FBB2 /* WKNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNotification.cpp; sourceTree = "<group>"; };
    12441251                318BE17814743E6A00A8FBB2 /* WKNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKNotification.h; sourceTree = "<group>"; };
     1252                31A2EC41148997BE00810D71 /* WebNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotification.cpp; sourceTree = "<group>"; };
     1253                31A2EC42148997BE00810D71 /* WebNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotification.h; sourceTree = "<group>"; };
     1254                31A2EC43148997BE00810D71 /* WebNotificationManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationManagerProxy.cpp; sourceTree = "<group>"; };
     1255                31A2EC44148997BF00810D71 /* WebNotificationManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationManagerProxy.h; sourceTree = "<group>"; };
     1256                31A2EC45148997BF00810D71 /* WebNotificationManagerProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebNotificationManagerProxy.messages.in; sourceTree = "<group>"; };
     1257                31A2EC46148997C000810D71 /* WebNotificationProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationProvider.cpp; sourceTree = "<group>"; };
     1258                31A2EC47148997C100810D71 /* WebNotificationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationProvider.h; sourceTree = "<group>"; };
     1259                31A2EC4F1489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NotificationPermissionRequestManagerProxy.cpp; sourceTree = "<group>"; };
     1260                31A2EC511489981500810D71 /* NotificationPermissionRequestManagerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotificationPermissionRequestManagerProxy.h; sourceTree = "<group>"; };
     1261                31A2EC531489982500810D71 /* NotificationPermissionRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotificationPermissionRequest.h; sourceTree = "<group>"; };
     1262                31A2EC541489982E00810D71 /* NotificationPermissionRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NotificationPermissionRequest.cpp; sourceTree = "<group>"; };
     1263                31A2EC72148D59BB00810D71 /* WKNotificationPermissionRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKNotificationPermissionRequest.h; sourceTree = "<group>"; };
     1264                31A2EC75148D65BB00810D71 /* WKNotificationPermissionRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNotificationPermissionRequest.cpp; sourceTree = "<group>"; };
    12451265                31BA9248148830810062EDB5 /* WebNotificationManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationManagerMessageReceiver.cpp; sourceTree = "<group>"; };
    12461266                31BA9249148830810062EDB5 /* WebNotificationManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotificationManagerMessages.h; sourceTree = "<group>"; };
    1247                 31C11AB1148452E90049A4CC /* WebNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotification.cpp; sourceTree = "<group>"; };
    1248                 31C11AB2148452E90049A4CC /* WebNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNotification.h; sourceTree = "<group>"; };
    12491267                31EA25D0134F78B2005B1452 /* NativeWebMouseEventMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = NativeWebMouseEventMac.mm; sourceTree = "<group>"; };
    12501268                31EA25D3134F78D6005B1452 /* NativeWebMouseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeWebMouseEvent.h; sourceTree = "<group>"; };
     
    24872505                        isa = PBXGroup;
    24882506                        children = (
    2489                                 31099978146C8B140029DEB9 /* WebNotificationManager.cpp */,
    2490                                 31099979146C8B140029DEB9 /* WebNotificationManager.h */,
     2507                                31312619148FF82B00BA2A39 /* NotificationPermissionRequestManager.cpp */,
     2508                                3131261A148FF82B00BA2A39 /* NotificationPermissionRequestManager.h */,
     2509                                3131261B148FF82B00BA2A39 /* WebNotificationManager.cpp */,
     2510                                3131261C148FF82B00BA2A39 /* WebNotificationManager.h */,
     2511                                3131261D148FF82C00BA2A39 /* WebNotificationManager.messages.in */,
    24912512                        );
    24922513                        name = "Notifications (User)";
     2514                        path = Notifications;
     2515                        sourceTree = "<group>";
     2516                };
     2517                31A2EC401489973700810D71 /* Notifications */ = {
     2518                        isa = PBXGroup;
     2519                        children = (
     2520                                31A2EC4F1489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp */,
     2521                                31A2EC511489981500810D71 /* NotificationPermissionRequestManagerProxy.h */,
     2522                                31A2EC541489982E00810D71 /* NotificationPermissionRequest.cpp */,
     2523                                31A2EC531489982500810D71 /* NotificationPermissionRequest.h */,
     2524                                31A2EC41148997BE00810D71 /* WebNotification.cpp */,
     2525                                31A2EC42148997BE00810D71 /* WebNotification.h */,
     2526                                31A2EC43148997BE00810D71 /* WebNotificationManagerProxy.cpp */,
     2527                                31A2EC44148997BF00810D71 /* WebNotificationManagerProxy.h */,
     2528                                31A2EC45148997BF00810D71 /* WebNotificationManagerProxy.messages.in */,
     2529                                31A2EC46148997C000810D71 /* WebNotificationProvider.cpp */,
     2530                                31A2EC47148997C100810D71 /* WebNotificationProvider.h */,
     2531                        );
     2532                        path = Notifications;
    24932533                        sourceTree = "<group>";
    24942534                };
     
    27652805                                BC111B18112F5FB400337BAB /* Launcher */,
    27662806                                BCCF085C113F3B7500C650C5 /* mac */,
     2807                                31A2EC401489973700810D71 /* Notifications */,
    27672808                                1AEFCC0511D01F34008219D3 /* Plugins */,
    27682809                                1A64256712DE42EC00CAAE2C /* BackingStore.cpp */,
     
    28562897                                BCF69FA11176D01400471A52 /* WebNavigationData.cpp */,
    28572898                                BCF69FA01176D01400471A52 /* WebNavigationData.h */,
    2858                                 31C11AB1148452E90049A4CC /* WebNotification.cpp */,
    2859                                 31C11AB2148452E90049A4CC /* WebNotification.h */,
    2860                                 3109996B146C73B10029DEB9 /* WebNotificationManagerProxy.cpp */,
    2861                                 3109996A146C73920029DEB9 /* WebNotificationManagerProxy.h */,
    2862                                 3109996D146C73C40029DEB9 /* WebNotificationManagerProxy.messages.in */,
    2863                                 312C0C46146DDBBC0016C911 /* WebNotificationProvider.cpp */,
    2864                                 312C0C48146DDBD30016C911 /* WebNotificationProvider.h */,
    28652899                                BC1DFEA312B31F87005DF730 /* WebOpenPanelResultListenerProxy.cpp */,
    28662900                                BC1DFEA212B31F87005DF730 /* WebOpenPanelResultListenerProxy.h */,
     
    29833017                                33367638130C99DC006C9DE2 /* WKResourceCacheManager.cpp */,
    29843018                                33367639130C99DC006C9DE2 /* WKResourceCacheManager.h */,
     3019                                31A2EC72148D59BB00810D71 /* WKNotificationPermissionRequest.h */,
     3020                                31A2EC75148D65BB00810D71 /* WKNotificationPermissionRequest.cpp */,
    29853021                        );
    29863022                        path = C;
     
    40624098                                3788A05C14743C90006319E5 /* WKBrowsingContextControllerPrivate.h in Headers */,
    40634099                                BCE9C0B71484714700E33D61 /* WebConnectionMessageKinds.h in Headers */,
    4064                                 3109996F146C741D0029DEB9 /* WebNotificationManagerProxy.h in Headers */,
    4065                                 3109997B146C8B140029DEB9 /* WebNotificationManager.h in Headers */,
    40664100                                310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */,
    40674101                                312C0C4A146DDC8A0016C911 /* WKNotificationProvider.h in Headers */,
     
    40694103                                318BE17114743DB100A8FBB2 /* WKNotificationManager.h in Headers */,
    40704104                                318BE17914743E6F00A8FBB2 /* WKNotification.h in Headers */,
    4071                                 31C11AB4148452E90049A4CC /* WebNotification.h in Headers */,
    40724105                                31BA924E148831260062EDB5 /* WebNotificationManagerMessages.h in Headers */,
     4106                                31A2EC49148997C200810D71 /* WebNotification.h in Headers */,
     4107                                31A2EC4B148997C200810D71 /* WebNotificationManagerProxy.h in Headers */,
     4108                                31A2EC4E148997C200810D71 /* WebNotificationProvider.h in Headers */,
     4109                                31A2EC521489981900810D71 /* NotificationPermissionRequestManagerProxy.h in Headers */,
     4110                                31A2EC5614899C0900810D71 /* NotificationPermissionRequest.h in Headers */,
     4111                                31A2EC74148D59CA00810D71 /* WKNotificationPermissionRequest.h in Headers */,
     4112                                3131261F148FF82C00BA2A39 /* NotificationPermissionRequestManager.h in Headers */,
     4113                                31312621148FF82C00BA2A39 /* WebNotificationManager.h in Headers */,
    40734114                        );
    40744115                        runOnlyForDeploymentPostprocessing = 0;
     
    47734814                                BC4A62A714744EC7006C681A /* WebConnectionToWebProcess.cpp in Sources */,
    47744815                                BC09B8F8147460F7005F5625 /* WebContextConnectionClient.cpp in Sources */,
    4775                                 31099970146C74200029DEB9 /* WebNotificationManagerProxy.cpp in Sources */,
    47764816                                31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */,
    4777                                 3109997A146C8B140029DEB9 /* WebNotificationManager.cpp in Sources */,
    4778                                 312C0C47146DDBBD0016C911 /* WebNotificationProvider.cpp in Sources */,
    47794817                                318BE1671473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp in Sources */,
    47804818                                318BE17514743DD700A8FBB2 /* WKNotificationManager.cpp in Sources */,
    47814819                                318BE17714743E6000A8FBB2 /* WKNotification.cpp in Sources */,
    4782                                 31C11AB3148452E90049A4CC /* WebNotification.cpp in Sources */,
    47834820                                31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */,
    47844821                                BCD3675C148C26C000447E87 /* WebConnectionToUIProcess.cpp in Sources */,
    47854822                                8CFECE941490F140002AAA32 /* EditorState.cpp in Sources */,
    47864823                                B63403F914910D57001070B5 /* APIObject.cpp in Sources */,
     4824                                31A2EC48148997C200810D71 /* WebNotification.cpp in Sources */,
     4825                                31A2EC4A148997C200810D71 /* WebNotificationManagerProxy.cpp in Sources */,
     4826                                31A2EC4D148997C200810D71 /* WebNotificationProvider.cpp in Sources */,
     4827                                31A2EC501489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp in Sources */,
     4828                                31A2EC551489982E00810D71 /* NotificationPermissionRequest.cpp in Sources */,
     4829                                31A2EC77148D662E00810D71 /* WKNotificationPermissionRequest.cpp in Sources */,
     4830                                3131261E148FF82C00BA2A39 /* NotificationPermissionRequestManager.cpp in Sources */,
     4831                                31312620148FF82C00BA2A39 /* WebNotificationManager.cpp in Sources */,
    47874832                        );
    47884833                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.h

    r102351 r102352  
    2424 */
    2525
    26 #ifndef WebNotification_h
    27 #define WebNotification_h
     26#ifndef NotificationPermissionRequestManager_h
     27#define NotificationPermissionRequestManager_h
    2828
    29 #include "APIObject.h"
    30 #include <wtf/PassRefPtr.h>
    31 #include <wtf/text/WTFString.h>
     29#include <WebCore/NotificationPresenter.h>
     30#include <WebCore/VoidCallback.h>
     31#include <wtf/HashMap.h>
     32#include <wtf/RefCounted.h>
     33#include <wtf/RefPtr.h>
    3234
    33 namespace CoreIPC {
    34 
    35 class ArgumentDecoder;
    36 class ArgumentEncoder;
    37 
    38 } // namespace CoreIPC
     35namespace WebCore {
     36class Notification;   
     37class SecurityOrigin;
     38}
    3939
    4040namespace WebKit {
     41
     42class WebPage;
     43
     44/// FIXME: Need to keep a queue of pending notifications which permission is still being requested.
     45class NotificationPermissionRequestManager : public RefCounted<NotificationPermissionRequestManager> {
     46public:
     47    static PassRefPtr<NotificationPermissionRequestManager> create(WebPage*);
    4148   
    42 class WebNotification : public APIObject {
    43 public:
    44     static const Type APIType = TypeNotification;
     49    void startRequest(WebCore::SecurityOrigin*, PassRefPtr<WebCore::VoidCallback>);
     50    void cancelRequest(WebCore::SecurityOrigin*);
    4551   
    46     WebNotification();
    47     static PassRefPtr<WebNotification> create(const String& title, const String& body, uint64_t notificationID)
    48     {
    49         return adoptRef(new WebNotification(title, body, notificationID));
    50     }
    51     virtual ~WebNotification();
     52    // Synchronous call to retrieve permission level for given security origin
     53    WebCore::NotificationPresenter::Permission permissionLevel(WebCore::SecurityOrigin*);
    5254   
    53     const String& title() const { return m_title; }
     55    void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed);
    5456   
    55     const String& body() const { return m_body; }
     57private:
     58    NotificationPermissionRequestManager(WebPage*);
    5659   
    57     uint64_t notificationID() const { return m_notificationID; }
     60    HashMap<uint64_t, RefPtr<WebCore::VoidCallback> > m_idToCallbackMap;
     61    HashMap<RefPtr<WebCore::SecurityOrigin>, uint64_t> m_originToIDMap;
     62    HashMap<uint64_t, RefPtr<WebCore::SecurityOrigin> > m_idToOriginMap;
    5863
    59     void encode(CoreIPC::ArgumentEncoder*) const;
    60     static bool decode(CoreIPC::ArgumentDecoder*, WebNotification&);
    61 
    62 private:
    63     WebNotification(const String& title, const String& body, uint64_t notificationID);
    64 
    65     virtual Type type() const { return APIType; }
    66    
    67     String m_title;
    68     String m_body;
    69     uint64_t m_notificationID;
     64    WebPage* m_page;
    7065};
    7166
    72 inline bool isNotificationIDValid(uint64_t id)
     67inline bool isRequestIDValid(uint64_t id)
    7368{
    7469    // This check makes sure that the ID is not equal to values needed by
     
    7974} // namespace WebKit
    8075
    81 #endif // WebNotification_h
     76#endif // NotificationPermissionRequestManager_h
  • trunk/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.h

    r101750 r102352  
    3939
    4040namespace WebCore {
    41 class Notification;   
     41class Notification;
    4242}
    4343
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebNotificationClient.cpp

    r101750 r102352  
    2929#if ENABLE(NOTIFICATIONS)
    3030
     31#include "NotificationPermissionRequestManager.h"
    3132#include "WebNotificationManager.h"
     33#include "WebPage.h"
    3234#include "WebProcess.h"
    3335#include <WebCore/NotImplemented.h>
     36#include <WebCore/ScriptExecutionContext.h>
    3437
    3538using namespace WebCore;
     
    7578}
    7679
    77 void WebNotificationClient::requestPermission(ScriptExecutionContext*, PassRefPtr<VoidCallback>)
     80void WebNotificationClient::requestPermission(ScriptExecutionContext* context, PassRefPtr<VoidCallback> callback)
    7881{
    79     notImplemented();
     82    m_page->notificationPermissionRequestManager()->startRequest(context->securityOrigin(), callback);
    8083}
    8184
    82 void WebNotificationClient::cancelRequestsForPermission(ScriptExecutionContext*)
     85void WebNotificationClient::cancelRequestsForPermission(ScriptExecutionContext* context)
    8386{
    84     notImplemented();
     87    m_page->notificationPermissionRequestManager()->cancelRequest(context->securityOrigin());
    8588}
    8689
    87 NotificationPresenter::Permission WebNotificationClient::checkPermission(ScriptExecutionContext*)
     90NotificationPresenter::Permission WebNotificationClient::checkPermission(ScriptExecutionContext* context)
    8891{
    89     notImplemented();
    90     return NotificationPresenter::PermissionDenied;
     92    if (!context || !context->isDocument())
     93        return NotificationPresenter::PermissionDenied;
     94    return m_page->notificationPermissionRequestManager()->permissionLevel(context->securityOrigin());
    9195}
    9296
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r102341 r102352  
    3636#include "MessageID.h"
    3737#include "NetscapePlugin.h"
     38#include "NotificationPermissionRequestManager.h"
    3839#include "PageOverlay.h"
    3940#include "PluginProxy.h"
     
    18781879#endif
    18791880
     1881NotificationPermissionRequestManager* WebPage::notificationPermissionRequestManager()
     1882{
     1883    if (m_notificationPermissionRequestManager)
     1884        return m_notificationPermissionRequestManager.get();
     1885
     1886    m_notificationPermissionRequestManager = NotificationPermissionRequestManager::create(this);
     1887    return m_notificationPermissionRequestManager.get();
     1888}
     1889
    18801890#if !PLATFORM(GTK) && !PLATFORM(MAC)
    18811891bool WebPage::handleEditingKeyboardEvent(KeyboardEvent* evt)
     
    21542164}
    21552165
     2166void WebPage::didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed)
     2167{
     2168    notificationPermissionRequestManager()->didReceiveNotificationPermissionDecision(notificationID, allowed);
     2169}
     2170
    21562171void WebPage::advanceToNextMisspelling(bool startBeforeSelection)
    21572172{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r101678 r102352  
    103103class DrawingArea;
    104104class InjectedBundleBackForwardList;
     105class NotificationPermissionRequestManager;
    105106class PageOverlay;
    106107class PluginView;
     
    310311    FindController& findController() { return m_findController; }
    311312    GeolocationPermissionRequestManager& geolocationPermissionRequestManager() { return m_geolocationPermissionRequestManager; }
     313    NotificationPermissionRequestManager* notificationPermissionRequestManager();
    312314
    313315    void pageDidScroll();
     
    588590
    589591    void didReceiveGeolocationPermissionDecision(uint64_t geolocationID, bool allowed);
     592    void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed);
    590593
    591594    void advanceToNextMisspelling(bool startBeforeSelection);
     
    694697    RefPtr<WebOpenPanelResultListener> m_activeOpenPanelResultListener;
    695698    GeolocationPermissionRequestManager m_geolocationPermissionRequestManager;
     699    RefPtr<NotificationPermissionRequestManager> m_notificationPermissionRequestManager;
    696700
    697701    OwnPtr<WebCore::PrintContext> m_printContext;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r101678 r102352  
    173173    # Geolocation
    174174    DidReceiveGeolocationPermissionDecision(uint64_t geolocationID, bool allowed)
     175   
     176    # Notification
     177    DidReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed)
    175178
    176179    SetWindowResizerSize(WebCore::IntSize intersectsView)
  • trunk/Source/WebKit2/win/WebKit2.vcproj

    r102346 r102352  
    15641564                        >
    15651565                        <File
     1566                                RelativePath="..\WebProcess\WebConnectionToUIProcess.cpp"
     1567                                >
     1568                        </File>
     1569                        <File
     1570                                RelativePath="..\WebProcess\WebConnectionToUIProcess.h"
     1571                                >
     1572                        </File>
     1573                        <File
    15661574                                RelativePath="..\WebProcess\WebKitMain.cpp"
    1567                                 >
    1568                         </File>
    1569                         <File
    1570                                 RelativePath="..\WebProcess\WebConnectionToUIProcess.cpp"
    1571                                 >
    1572                         </File>
    1573                         <File
    1574                                 RelativePath="..\WebProcess\WebConnectionToUIProcess.h"
    15751575                                >
    15761576                        </File>
     
    27152715                                >
    27162716                                <File
     2717                                        RelativePath="..\WebProcess\Notifications\NotificationPermissionRequestManager.cpp"
     2718                                        >
     2719                                </File>
     2720                                <File
     2721                                        RelativePath="..\WebProcess\Notifications\NotificationPermissionRequestManager.h"
     2722                                        >
     2723                                </File>
     2724                                <File
    27172725                                        RelativePath="..\WebProcess\Notifications\WebNotificationManager.cpp"
    27182726                                        >
     
    30893097                        <File
    30903098                                RelativePath="..\UIProcess\WebNavigationData.h"
    3091                                 >
    3092                         </File>
    3093                         <File
    3094                                 RelativePath="..\UIProcess\WebNotification.cpp"
    3095                                 >
    3096                         </File>
    3097                         <File
    3098                                 RelativePath="..\UIProcess\WebNotification.h"
    3099                                 >
    3100                         </File>
    3101                         <File
    3102                                 RelativePath="..\UIProcess\WebNotificationManagerProxy.cpp"
    3103                                 >
    3104                         </File>
    3105                         <File
    3106                                 RelativePath="..\UIProcess\WebNotificationManagerProxy.h"
    3107                                 >
    3108                         </File>
    3109                         <File
    3110                                 RelativePath="..\UIProcess\WebNotificationManagerProxy.messages.in"
    3111                                 >
    3112                         </File>
    3113                         <File
    3114                                 RelativePath="..\UIProcess\WebNotificationProvider.cpp"
    3115                                 >
    3116                         </File>
    3117                         <File
    3118                                 RelativePath="..\UIProcess\WebNotificationProvider.h"
    31193099                                >
    31203100                        </File>
     
    38193799                                </Filter>
    38203800                        </Filter>
     3801                        <Filter
     3802                                Name="Notifications (User)"
     3803                                >
     3804                                <File
     3805                                        RelativePath="..\UIProcess\Notifications\NotificationPermissionRequest.cpp"
     3806                                        >
     3807                                </File>
     3808                                <File
     3809                                        RelativePath="..\UIProcess\Notifications\NotificationPermissionRequest.h"
     3810                                        >
     3811                                </File>
     3812                                <File
     3813                                        RelativePath="..\UIProcess\Notifications\NotificationPermissionRequestManagerProxy.cpp"
     3814                                        >
     3815                                </File>
     3816                                <File
     3817                                        RelativePath="..\UIProcess\Notifications\NotificationPermissionRequestManagerProxy.h"
     3818                                        >
     3819                                </File>
     3820                                <File
     3821                                        RelativePath="..\UIProcess\Notifications\WebNotification.cpp"
     3822                                        >
     3823                                </File>
     3824                                <File
     3825                                        RelativePath="..\UIProcess\Notifications\WebNotification.h"
     3826                                        >
     3827                                </File>
     3828                                <File
     3829                                        RelativePath="..\UIProcess\Notifications\WebNotificationManagerProxy.cpp"
     3830                                        >
     3831                                </File>
     3832                                <File
     3833                                        RelativePath="..\UIProcess\Notifications\WebNotificationManagerProxy.h"
     3834                                        >
     3835                                </File>
     3836                                <File
     3837                                        RelativePath="..\UIProcess\Notifications\WebNotificationManagerProxy.messages.in"
     3838                                        >
     3839                                </File>
     3840                                <File
     3841                                        RelativePath="..\UIProcess\Notifications\WebNotificationProvider.cpp"
     3842                                        >
     3843                                </File>
     3844                                <File
     3845                                        RelativePath="..\UIProcess\Notifications\WebNotificationProvider.h"
     3846                                        >
     3847                                </File>
     3848                        </Filter>
    38213849                </Filter>
    38223850                <Filter
  • trunk/Source/WebKit2/win/WebKit2Common.vsprops

    r101750 r102352  
    77        <Tool
    88                Name="VCCLCompilerTool"
    9                 AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)\..\Platform&quot;;&quot;$(ProjectDir)\..\Platform\cg&quot;;&quot;$(ProjectDir)\..\Platform\CoreIPC&quot;;&quot;$(ProjectDir)\..\PluginProcess&quot;;&quot;$(ProjectDir)\..\Shared&quot;;&quot;$(ProjectDir)\..\Shared\win&quot;;&quot;$(ProjectDir)\..\Shared\cf&quot;;&quot;$(ProjectDir)\..\Shared\API\c&quot;;&quot;$(ProjectDir)\..\Shared\API\c\cf&quot;;&quot;$(ProjectDir)\..\Shared\API\c\win&quot;;&quot;$(ProjectDir)\..\Shared\CoreIPCSupport&quot;;&quot;$(ProjectDir)\..\Shared\Plugins&quot;;&quot;$(ProjectDir)\..\Shared\Plugins\Netscape&quot;;&quot;$(ProjectDir)\..\UIProcess&quot;;&quot;$(ProjectDir)\..\UIProcess\API\C&quot;;&quot;$(ProjectDir)\..\UIProcess\API\C\win&quot;;&quot;$(ProjectDir)\..\UIProcess\API\cpp&quot;;&quot;$(ProjectDir)\..\UIProcess\API\win&quot;;&quot;$(ProjectDir)\..\UIProcess\Authentication&quot;;&quot;$(ProjectDir)\..\UIProcess\Downloads&quot;;&quot;$(ProjectDir)\..\UIProcess\Launcher&quot;;&quot;$(ProjectDir)\..\UIProcess\Plugins&quot;;&quot;$(ProjectDir)\..\UIProcess\win&quot;;&quot;$(ProjectDir)\..\WebProcess&quot;;&quot;$(ProjectDir)\..\WebProcess\WebCoreSupport&quot;;&quot;$(ProjectDir)\..\WebProcess\WebCoreSupport\win&quot;;&quot;$(ProjectDir)\..\WebProcess\WebPage&quot;;&quot;$(ProjectDir)\..\WebProcess\WebPage\win&quot;;&quot;$(ProjectDir)\..\WebProcess\IconDatabase&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle\API\c&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle\DOM&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle\win&quot;;&quot;$(ProjectDir)\..\WebProcess\Plugins&quot;;&quot;$(ProjectDir)\..\WebProcess\Plugins\Netscape&quot;;&quot;$(ProjectDir)\..\WebProcess\win&quot;;&quot;$(ProjectDir)\..\WebProcess\ApplicationCache&quot;;&quot;$(ProjectDir)\..\WebProcess\Authentication&quot;;&quot;$(ProjectDir)\..\WebProcess\Cookies&quot;;&quot;$(ProjectDir)\..\WebProcess\Cookies\cf&quot;;&quot;$(ProjectDir)\..\WebProcess\Downloads&quot;;&quot;$(ProjectDir)\..\WebProcess\Downloads\cf&quot;;&quot;$(ProjectDir)\..\WebProcess\FullScreen&quot;;&quot;$(ProjectDir)\..\WebProcess\Geolocation&quot;;&quot;$(ProjectDir)\..\WebProcess\KeyValueStorage&quot;;&quot;$(ProjectDir)\..\WebProcess\MediaCache&quot;;&quot;$(ProjectDir)\..\WebProcess\Notifications&quot;;&quot;$(ProjectDir)\..\WebProcess\ResourceCache&quot;;&quot;$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources&quot;;&quot;$(ConfigurationBuildDir)\Include&quot;;&quot;$(ConfigurationBuildDir)\Include\private&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\Include\private&quot;;&quot;$(WebKitLibrariesDir)\Include\pthreads&quot;;&quot;$(ConfigurationBuildDir)\Include\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\Include\private\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\private\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore\ForwardingHeaders&quot;"
     9                AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)\..\Platform&quot;;&quot;$(ProjectDir)\..\Platform\cg&quot;;&quot;$(ProjectDir)\..\Platform\CoreIPC&quot;;&quot;$(ProjectDir)\..\PluginProcess&quot;;&quot;$(ProjectDir)\..\Shared&quot;;&quot;$(ProjectDir)\..\Shared\win&quot;;&quot;$(ProjectDir)\..\Shared\cf&quot;;&quot;$(ProjectDir)\..\Shared\API\c&quot;;&quot;$(ProjectDir)\..\Shared\API\c\cf&quot;;&quot;$(ProjectDir)\..\Shared\API\c\win&quot;;&quot;$(ProjectDir)\..\Shared\CoreIPCSupport&quot;;&quot;$(ProjectDir)\..\Shared\Plugins&quot;;&quot;$(ProjectDir)\..\Shared\Plugins\Netscape&quot;;&quot;$(ProjectDir)\..\UIProcess&quot;;&quot;$(ProjectDir)\..\UIProcess\API\C&quot;;&quot;$(ProjectDir)\..\UIProcess\API\C\win&quot;;&quot;$(ProjectDir)\..\UIProcess\API\cpp&quot;;&quot;$(ProjectDir)\..\UIProcess\API\win&quot;;&quot;$(ProjectDir)\..\UIProcess\Authentication&quot;;&quot;$(ProjectDir)\..\UIProcess\Downloads&quot;;&quot;$(ProjectDir)\..\UIProcess\Launcher&quot;;&quot;$(ProjectDir)\..\UIProcess\Notifications&quot;;&quot;$(ProjectDir)\..\UIProcess\Plugins&quot;;&quot;$(ProjectDir)\..\UIProcess\win&quot;;&quot;$(ProjectDir)\..\WebProcess&quot;;&quot;$(ProjectDir)\..\WebProcess\WebCoreSupport&quot;;&quot;$(ProjectDir)\..\WebProcess\WebCoreSupport\win&quot;;&quot;$(ProjectDir)\..\WebProcess\WebPage&quot;;&quot;$(ProjectDir)\..\WebProcess\WebPage\win&quot;;&quot;$(ProjectDir)\..\WebProcess\IconDatabase&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle\API\c&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle\DOM&quot;;&quot;$(ProjectDir)\..\WebProcess\InjectedBundle\win&quot;;&quot;$(ProjectDir)\..\WebProcess\Plugins&quot;;&quot;$(ProjectDir)\..\WebProcess\Plugins\Netscape&quot;;&quot;$(ProjectDir)\..\WebProcess\win&quot;;&quot;$(ProjectDir)\..\WebProcess\ApplicationCache&quot;;&quot;$(ProjectDir)\..\WebProcess\Authentication&quot;;&quot;$(ProjectDir)\..\WebProcess\Cookies&quot;;&quot;$(ProjectDir)\..\WebProcess\Cookies\cf&quot;;&quot;$(ProjectDir)\..\WebProcess\Downloads&quot;;&quot;$(ProjectDir)\..\WebProcess\Downloads\cf&quot;;&quot;$(ProjectDir)\..\WebProcess\FullScreen&quot;;&quot;$(ProjectDir)\..\WebProcess\Geolocation&quot;;&quot;$(ProjectDir)\..\WebProcess\KeyValueStorage&quot;;&quot;$(ProjectDir)\..\WebProcess\MediaCache&quot;;&quot;$(ProjectDir)\..\WebProcess\Notifications&quot;;&quot;$(ProjectDir)\..\WebProcess\ResourceCache&quot;;&quot;$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources&quot;;&quot;$(ConfigurationBuildDir)\Include&quot;;&quot;$(ConfigurationBuildDir)\Include\private&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\Include\private&quot;;&quot;$(WebKitLibrariesDir)\Include\pthreads&quot;;&quot;$(ConfigurationBuildDir)\Include\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\Include\private\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\private\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore\ForwardingHeaders&quot;"
    1010                PreprocessorDefinitions="_USRDLL;WEBKIT_EXPORTS;FRAMEWORK_NAME=WebKit;BUILDING_WEBKIT"
    1111                UsePrecompiledHeader="2"
  • trunk/Tools/ChangeLog

    r102348 r102352  
     12011-12-06  Jon Lee  <jonlee@apple.com>
     2
     3        [WK2] Add permissions support (73960)
     4        https://bugs.webkit.org/show_bug.cgi?id=73960
     5        <rdar://problem/10357008>
     6
     7        Reviewed by Darin Adler.
     8
     9        Add null function item to comply with added callback to WKPageUIClient.
     10
     11        * MiniBrowser/mac/BrowserWindowController.m:
     12        (-[BrowserWindowController awakeFromNib]):
     13        * WebKitTestRunner/TestController.cpp:
     14        (WTR::TestController::createOtherPage):
     15        (WTR::TestController::initialize):
     16
    1172011-12-08  Alexander Færøy  <alexander.faeroy@nokia.com>
    218
  • trunk/Tools/MiniBrowser/mac/BrowserWindowController.m

    r99610 r102352  
    668668        createNewPage,
    669669        mouseDidMoveOverElement,
     670        0, // decidePolicyForNotificationPermissionRequest
    670671    };
    671672    WKPageSetPageUIClient(_webView.pageRef, &uiClient);
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r99839 r102352  
    205205        createOtherPage,
    206206        0, // mouseDidMoveOverElement
     207        0, // decidePolicyForNotificationPermissionRequest
    207208    };
    208209    WKPageSetPageUIClient(newPage, &otherPageUIClient);
     
    357358        createOtherPage,
    358359        0, // mouseDidMoveOverElement
     360        0, // decidePolicyForNotificationPermissionRequest
    359361    };
    360362    WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient);
Note: See TracChangeset for help on using the changeset viewer.