Changeset 176011 in webkit
- Timestamp:
- Nov 12, 2014 12:25:05 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 32 added
- 37 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r176004 r176011 1 2014-09-01 Philippe Normand <pnormand@igalia.com> 2 3 [WK2] UserMediaClient support 4 https://bugs.webkit.org/show_bug.cgi?id=123158 5 6 Reviewed by Benjamin Poulain. 7 8 Simple UserMedia permission request tests inspired from the 9 Geolocation test suite. 10 11 * fast/mediastream/error-expected.txt: Added. 12 * fast/mediastream/error.html: Added. 13 * fast/mediastream/script-tests/error.js: Added. 14 * fast/mediastream/script-tests/success.js: Added. 15 * fast/mediastream/success-expected.txt: Added. 16 * fast/mediastream/success.html: Added. 17 * fast/mediastream/delayed-permission-allowed-expected.txt: Added. 18 * fast/mediastream/delayed-permission-allowed.html: Added. 19 * fast/mediastream/delayed-permission-denied-expected.txt: Added. 20 * fast/mediastream/delayed-permission-denied.html: Added. 21 * http/tests/media/media-stream/disconnected-frame-already-expected.txt: Added. 22 * http/tests/media/media-stream/disconnected-frame-already.html: Added. 23 * http/tests/media/media-stream/disconnected-frame-expected.txt: Added. 24 * http/tests/media/media-stream/disconnected-frame-permission-denied-expected.txt: Added. 25 * http/tests/media/media-stream/disconnected-frame-permission-denied.html: Added. 26 * http/tests/media/media-stream/disconnected-frame.html: Added. 27 * http/tests/media/media-stream/resources/disconnected-frame-already-inner1.html: Added. 28 * http/tests/media/media-stream/resources/disconnected-frame-already-inner2.html: Added. 29 * http/tests/media/media-stream/resources/disconnected-frame-inner.html: Added. 30 * platform/gtk/TestExpectations: 31 1 32 2014-11-11 Jinwoo Song <jinwoo7.song@samsung.com> 2 33 -
trunk/LayoutTests/platform/gtk/TestExpectations
r175716 r176011 292 292 293 293 # Mediastream implementation is not complete yet. 294 webkit.org/b/79203 fast/mediastream [ Skip ] 294 webkit.org/b/79203 fast/mediastream/argument-types.html [ Skip ] 295 webkit.org/b/79203 fast/mediastream/getusermedia.html [ Skip ] 296 webkit.org/b/79203 fast/mediastream/MediaStream-add-ended-tracks.html [ Skip ] 297 webkit.org/b/79203 fast/mediastream/MediaStream-add-remove-tracks.html [ Skip ] 298 webkit.org/b/79203 fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html [ Skip ] 299 webkit.org/b/79203 fast/mediastream/MediaStream-clone.html [ Skip ] 300 webkit.org/b/79203 fast/mediastream/MediaStreamConstructor.html [ Skip ] 301 webkit.org/b/79203 fast/mediastream/MediaStream-construct-with-ended-tracks.html [ Skip ] 302 webkit.org/b/79203 fast/mediastream/MediaStream-getTracks.html [ Skip ] 303 webkit.org/b/79203 fast/mediastream/MediaStream-MediaElement-srcObject.html [ Skip ] 304 webkit.org/b/79203 fast/mediastream/MediaStreamTrackEvent-constructor.html [ Skip ] 305 webkit.org/b/79203 fast/mediastream/MediaStreamTrack-getSources.html [ Skip ] 306 webkit.org/b/79203 fast/mediastream/MediaStreamTrack.html [ Skip ] 307 webkit.org/b/79203 fast/mediastream/MediaStreamTrack-onended.html [ Skip ] 308 webkit.org/b/79203 fast/mediastream/no-interface-object.html [ Skip ] 309 webkit.org/b/79203 fast/mediastream/RTCIceCandidate.html [ Skip ] 310 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-AddRemoveStream.html [ Skip ] 311 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-createAnswer.html [ Skip ] 312 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-createOffer.html [ Skip ] 313 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-datachannel.html [ Skip ] 314 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-dtmf.html [ Skip ] 315 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-events.html [ Skip ] 316 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-getConfiguration.html [ Skip ] 317 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-have-local-offer.html [ Skip ] 318 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-have-local-pranswer.html [ Skip ] 319 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-have-remote-offer.html [ Skip ] 320 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-have-remote-pranswer.html [ Skip ] 321 webkit.org/b/79203 fast/mediastream/RTCPeerConnection.html [ Skip ] 322 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-ice.html [ Skip ] 323 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-localDescription.html [ Skip ] 324 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-onnegotiationneeded.html [ Skip ] 325 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-remoteDescription.html [ Skip ] 326 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-stable.html [ Skip ] 327 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-state.html [ Skip ] 328 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-stats.html [ Skip ] 329 webkit.org/b/79203 fast/mediastream/RTCPeerConnection-statsSelector.html [ Skip ] 330 webkit.org/b/79203 fast/mediastream/RTCSessionDescription.html [ Skip ] 295 331 webkit.org/b/79203 fast/events/constructors/media-stream-event-constructor.html [ Skip ] 296 332 webkit.org/b/79203 webaudio/mediastreamaudiodestinationnode.html [ Skip ] -
trunk/LayoutTests/platform/mac/TestExpectations
r175990 r176011 158 158 fast/mediastream 159 159 fast/events/constructors/media-stream-event-constructor.html 160 http/tests/media/media-stream 160 161 161 162 # Asserts in debug. -
trunk/Source/WebCore/ChangeLog
r176010 r176011 1 2014-09-01 Philippe Normand <pnormand@igalia.com> 2 3 [WK2] UserMediaClient support 4 https://bugs.webkit.org/show_bug.cgi?id=123158 5 6 Reviewed by Benjamin Poulain. 7 8 Added document and frame accessors, needed by the 9 UserMediaRequestManager of the WebProcess. Also added two methods 10 used by the permission request manager to know if access to audio 11 or video devices is requested. 12 13 Tests: fast/mediastream/error.html 14 fast/mediastream/success.html 15 fast/mediastream/delayed-permission-allowed.html 16 fast/mediastream/delayed-permission-denied.html 17 http/tests/media/media-stream/disconnected-frame-already.html 18 http/tests/media/media-stream/disconnected-frame-permission-denied.html 19 http/tests/media/media-stream/disconnected-frame.html 20 21 * Modules/mediastream/UserMediaRequest.cpp: 22 (WebCore::UserMediaRequest::document): 23 (WebCore::UserMediaRequest::frame): 24 * Modules/mediastream/UserMediaRequest.h: 25 (WebCore::UserMediaRequest::requiresAudio): 26 (WebCore::UserMediaRequest::requiresVideo): 27 1 28 2014-11-12 Gyuyoung Kim <gyuyoung.kim@samsung.com> 2 29 -
trunk/Source/WebCore/Modules/mediastream/UserMediaClient.h
r172849 r176011 45 45 virtual void pageDestroyed() = 0; 46 46 47 virtual void requestPermission(PassRef Ptr<UserMediaRequest>) = 0;48 virtual void cancelRequest(UserMediaRequest *) = 0;47 virtual void requestPermission(PassRef<UserMediaRequest>) = 0; 48 virtual void cancelRequest(UserMediaRequest&) = 0; 49 49 50 50 protected: -
trunk/Source/WebCore/Modules/mediastream/UserMediaController.h
r168166 r176011 40 40 41 41 UserMediaClient* client() const { return m_client; } 42 void requestPermission(PassRef Ptr<UserMediaRequest>);43 void cancelRequest(UserMediaRequest *);42 void requestPermission(PassRef<UserMediaRequest>); 43 void cancelRequest(UserMediaRequest&); 44 44 45 45 static const char* supplementName(); … … 50 50 }; 51 51 52 inline void UserMediaController::requestPermission(PassRef Ptr<UserMediaRequest> request)52 inline void UserMediaController::requestPermission(PassRef<UserMediaRequest> request) 53 53 { 54 m_client->requestPermission( request);54 m_client->requestPermission(WTF::move(request)); 55 55 } 56 56 57 inline void UserMediaController::cancelRequest(UserMediaRequest *request)57 inline void UserMediaController::cancelRequest(UserMediaRequest& request) 58 58 { 59 59 m_client->cancelRequest(request); -
trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
r175265 r176011 41 41 #include "Document.h" 42 42 #include "ExceptionCode.h" 43 #include "Frame.h" 43 44 #include "MediaConstraintsImpl.h" 44 45 #include "MediaStream.h" … … 124 125 // 2 - The constraints are valid, ask the user for access to media. 125 126 if (UserMediaController* controller = protectedThis->m_controller) 126 controller->requestPermission( protectedThis.get());127 controller->requestPermission(*protectedThis.get()); 127 128 }); 128 129 } … … 202 203 203 204 if (m_controller) { 204 m_controller->cancelRequest( this);205 m_controller->cancelRequest(*this); 205 206 m_controller = 0; 206 207 } -
trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h
r175265 r176011 49 49 class Dictionary; 50 50 class Document; 51 class Frame; 51 52 class MediaConstraints; 52 53 class MediaStreamPrivate; … … 66 67 WEBCORE_EXPORT void userMediaAccessGranted(); 67 68 WEBCORE_EXPORT void userMediaAccessDenied(); 69 70 bool requiresAudio() const { return m_audioConstraints; } 71 bool requiresVideo() const { return m_videoConstraints; } 68 72 69 73 private: -
trunk/Source/WebCore/platform/mock/UserMediaClientMock.h
r164655 r176011 37 37 class UserMediaClientRequestNotifier : public MockNotifier { 38 38 public: 39 UserMediaClientRequestNotifier(PassRef Ptr<UserMediaRequest> request, bool requestSuccess)40 : m_request( request)39 UserMediaClientRequestNotifier(PassRef<UserMediaRequest> request, bool requestSuccess) 40 : m_request(WTF::move(request)) 41 41 , m_requestSuccess(requestSuccess) 42 42 { … … 52 52 53 53 private: 54 Ref Ptr<UserMediaRequest> m_request;54 Ref<UserMediaRequest> m_request; 55 55 bool m_requestSuccess; 56 56 }; … … 61 61 virtual void pageDestroyed() override { } 62 62 63 virtual void requestPermission(PassRef Ptr<UserMediaRequest> request) override63 virtual void requestPermission(PassRef<UserMediaRequest> request) override 64 64 { 65 RefPtr<UserMediaClientRequestNotifier> notifier = adoptRef(new UserMediaClientRequestNotifier( request, true));65 RefPtr<UserMediaClientRequestNotifier> notifier = adoptRef(new UserMediaClientRequestNotifier(WTF::move(request), true)); 66 66 m_timerEvents.append(adoptRef(new TimerEvent(this, notifier))); 67 67 } 68 68 69 virtual void cancelRequest(UserMediaRequest *request) override69 virtual void cancelRequest(UserMediaRequest& request) override 70 70 { 71 71 RefPtr<UserMediaClientRequestNotifier> notifier = adoptRef(new UserMediaClientRequestNotifier(request, false)); -
trunk/Source/WebKit2/CMakeLists.txt
r175564 r176011 50 50 "${WEBKIT2_DIR}/WebProcess/Launching" 51 51 "${WEBKIT2_DIR}/WebProcess/MediaCache" 52 "${WEBKIT2_DIR}/WebProcess/MediaStream" 52 53 "${WEBKIT2_DIR}/WebProcess/Network" 53 54 "${WEBKIT2_DIR}/WebProcess/Notifications" … … 301 302 UIProcess/StatisticsRequest.cpp 302 303 UIProcess/TextCheckerCompletion.cpp 304 UIProcess/UserMediaPermissionRequestManagerProxy.cpp 305 UIProcess/UserMediaPermissionRequestProxy.cpp 303 306 UIProcess/VisitedLinkProvider.cpp 304 307 UIProcess/WebApplicationCacheManagerProxy.cpp … … 389 392 UIProcess/API/C/WKSessionStateRef.cpp 390 393 UIProcess/API/C/WKTextChecker.cpp 394 UIProcess/API/C/WKUserMediaPermissionRequest.cpp 391 395 UIProcess/API/C/WKVibration.cpp 392 396 UIProcess/API/C/WKViewportAttributes.cpp … … 484 488 485 489 WebProcess/MediaCache/WebMediaCacheManager.cpp 490 491 WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp 486 492 487 493 WebProcess/Network/NetworkProcessConnection.cpp … … 536 542 WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp 537 543 WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp 544 WebProcess/WebCoreSupport/WebUserMediaClient.cpp 538 545 WebProcess/WebCoreSupport/WebVibrationClient.cpp 539 546 -
trunk/Source/WebKit2/ChangeLog
r175992 r176011 1 2014-09-01 Philippe Normand <pnormand@igalia.com> 2 3 [WK2] UserMediaClient support 4 https://bugs.webkit.org/show_bug.cgi?id=123158 5 6 Reviewed by Benjamin Poulain. 7 8 Support for UserMediaPermissionRequest in WebKit2. It's 9 implemented similarily to the GeolocationPermissionRequest 10 support. When the WebPage requires this permission it sends a 11 message to the UI process which at some point grants or denies the 12 permission and sends the result back to the WebProcess. 13 14 * CMakeLists.txt: Generic CMake support for new files. 15 * Shared/API/c/WKBase.h: New type for UserMediaPermissionRequest. 16 * Shared/APIObject.h: Ditto. 17 * UIProcess/API/C/WKAPICast.h: PermissionRequest API mapping. 18 * UIProcess/API/APIUIClient.h: New decidePolicy handler for UserMediaPermissionRequest. 19 (API::UIClient::decidePolicyForUserMediaPermissionRequest): 20 * UIProcess/API/C/WKPage.cpp: Ditto. 21 (WKPageSetPageUIClient): 22 * UIProcess/API/C/WKPageUIClient.h: WKPageUIClient version bump to 23 5, including the new decidePolicyForUserMediaPermissionRequest member. 24 * UIProcess/API/C/WKUserMediaPermissionRequest.cpp: Added, C API 25 implementation of the UserMediaPermissionRequest. 26 (WKUserMediaPermissionRequestGetTypeID): 27 (WKUserMediaPermissionRequestAllow): 28 (WKUserMediaPermissionRequestDeny): 29 * UIProcess/API/C/WKUserMediaPermissionRequest.h: Added. 30 * UIProcess/API/C/WebKit2_C.h: 31 * UIProcess/UserMediaPermissionRequestManagerProxy.h: Added. 32 * UIProcess/UserMediaPermissionRequestProxy.cpp: Added, proxy 33 object for the UserMediaPermissionRequestType. 34 (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): 35 (WebKit::UserMediaPermissionRequestProxy::allow): 36 (WebKit::UserMediaPermissionRequestProxy::deny): 37 (WebKit::UserMediaPermissionRequestProxy::invalidate): 38 * UIProcess/UserMediaPermissionRequestProxy.h: Added. 39 (WebKit::UserMediaPermissionRequestProxy::create): 40 (WebKit::UserMediaPermissionRequestProxy::mediaParameters): 41 * UIProcess/WebPageProxy.cpp: 42 (WebKit::WebPageProxy::WebPageProxy): 43 (WebKit::WebPageProxy::requestUserMediaPermissionForFrame): Defer 44 UserPermissionRequest to the UIClient. 45 * UIProcess/WebPageProxy.h: 46 * UIProcess/WebPageProxy.messages.in: New message to handle UserMediaPermissionRequests. 47 * WebKit2.xcodeproj/project.pbxproj: 48 * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp: Added, 49 WebProcess side of the UserRequestManager, keeping track of each 50 permission request. 51 (WebKit::generateRequestID): 52 (WebKit::UserMediaPermissionRequestManager::UserMediaPermissionRequestManager): 53 (WebKit::UserMediaPermissionRequestManager::startRequest): 54 (WebKit::UserMediaPermissionRequestManager::cancelRequest): 55 (WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision): 56 * WebProcess/MediaStream/UserMediaPermissionRequestManager.h: Added. 57 * WebProcess/WebCoreSupport/WebUserMediaClient.cpp: Added, 58 WebProcess implementation of the WebCore::UserMediaClient. 59 (WebKit::WebUserMediaClient::WebUserMediaClient): 60 (WebKit::WebUserMediaClient::pageDestroyed): 61 (WebKit::WebUserMediaClient::requestPermission): 62 (WebKit::WebUserMediaClient::cancelRequest): 63 * WebProcess/WebCoreSupport/WebUserMediaClient.h: Added. 64 * WebProcess/WebPage/WebPage.cpp: 65 (WebKit::WebPage::WebPage): Create the 66 UserMediaPermissionRequestManager and register the UserMediaClient 67 to the page. 68 (WebKit::WebPage::didReceiveUserMediaPermissionDecision): Dispatch 69 decision to manager. 70 * WebProcess/WebPage/WebPage.h: 71 (WebKit::WebPage::userMediaPermissionRequestManager): 72 * WebProcess/WebPage/WebPage.messages.in: New Message to handle 73 permission decision result from the UI process. 74 1 75 2014-11-11 Tim Horton <timothy_horton@apple.com> 2 76 -
trunk/Source/WebKit2/Shared/API/c/WKBase.h
r170219 r176011 128 128 typedef const struct OpaqueWKSession* WKSessionRef; 129 129 typedef const struct OpaqueWKSessionState* WKSessionStateRef; 130 typedef const struct OpaqueWKUserMediaPermissionRequest* WKUserMediaPermissionRequestRef; 130 131 typedef const struct OpaqueWKVibration* WKVibrationRef; 131 132 typedef const struct OpaqueWKViewportAttributes* WKViewportAttributesRef; -
trunk/Source/WebKit2/Shared/APIObject.h
r173929 r176011 133 133 Session, 134 134 TextChecker, 135 UserMediaPermissionRequest, 135 136 Vibration, 136 137 ViewportAttributes, -
trunk/Source/WebKit2/UIProcess/API/APIUIClient.h
r174384 r176011 51 51 class NativeWebWheelEvent; 52 52 class NotificationPermissionRequest; 53 class UserMediaPermissionRequestProxy; 53 54 class WebColorPickerResultListenerProxy; 54 55 class WebFrameProxy; … … 123 124 virtual bool runOpenPanel(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebOpenPanelParameters*, WebKit::WebOpenPanelResultListenerProxy*) { return false; } 124 125 virtual bool decidePolicyForGeolocationPermissionRequest(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::WebSecurityOrigin*, WebKit::GeolocationPermissionRequestProxy*) { return false; } 126 virtual bool decidePolicyForUserMediaPermissionRequest(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, WebKit::WebSecurityOrigin&, WebKit::UserMediaPermissionRequestProxy&) { return false; } 125 127 virtual bool decidePolicyForNotificationPermissionRequest(WebKit::WebPageProxy*, WebKit::WebSecurityOrigin*, WebKit::NotificationPermissionRequest*) { return false; } 126 128 -
trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h
r170219 r176011 64 64 class GeolocationPermissionRequestProxy; 65 65 class NotificationPermissionRequest; 66 class UserMediaPermissionRequestProxy; 66 67 class WebApplicationCacheManagerProxy; 67 68 class WebBackForwardList; … … 147 148 WK_ADD_API_MAPPING(WKSessionStateRef, API::SessionState) 148 149 WK_ADD_API_MAPPING(WKTextCheckerRef, WebTextChecker) 150 WK_ADD_API_MAPPING(WKUserMediaPermissionRequestRef, UserMediaPermissionRequestProxy) 149 151 WK_ADD_API_MAPPING(WKVibrationRef, WebVibrationProxy) 150 152 WK_ADD_API_MAPPING(WKViewportAttributesRef, WebViewportAttributes) -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r175351 r176011 75 75 76 76 template<> struct ClientTraits<WKPageUIClientBase> { 77 typedef std::tuple<WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2, WKPageUIClientV3, WKPageUIClientV4 > Versions;77 typedef std::tuple<WKPageUIClientV0, WKPageUIClientV1, WKPageUIClientV2, WKPageUIClientV3, WKPageUIClientV4, WKPageUIClientV5> Versions; 78 78 }; 79 79 … … 1500 1500 } 1501 1501 1502 virtual bool decidePolicyForUserMediaPermissionRequest(WebPageProxy& page, WebFrameProxy& frame, WebSecurityOrigin& origin, UserMediaPermissionRequestProxy& permissionRequest) override 1503 { 1504 if (!m_client.decidePolicyForUserMediaPermissionRequest) 1505 return false; 1506 1507 m_client.decidePolicyForUserMediaPermissionRequest(toAPI(&page), toAPI(&frame), toAPI(&origin), toAPI(&permissionRequest), m_client.base.clientInfo); 1508 return true; 1509 } 1510 1502 1511 virtual bool decidePolicyForNotificationPermissionRequest(WebPageProxy* page, WebSecurityOrigin* origin, NotificationPermissionRequest* permissionRequest) override 1503 1512 { -
trunk/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h
r173930 r176011 91 91 typedef void (*WKPageDidCancelTrackingPotentialLongMousePressCallback)(WKPageRef page, WKTypeRef userData, const void *clientInfo); 92 92 typedef void (*WKPageIsPlayingAudioDidChangeCallback)(WKPageRef page, const void* clientInfo); 93 typedef void (*WKPageDecidePolicyForUserMediaPermissionRequestCallback)(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef origin, WKUserMediaPermissionRequestRef permissionRequest, const void* clientInfo); 93 94 94 95 // Deprecated … … 379 380 } WKPageUIClientV4; 380 381 381 enum { kWKPageUIClientCurrentVersion WK_ENUM_DEPRECATED("Use an explicit version number instead") = 2 }; 382 typedef struct WKPageUIClient { 383 int version; 384 const void * clientInfo; 385 386 // Version 0. 387 WKPageCreateNewPageCallback_deprecatedForUseWithV0 createNewPage_deprecatedForUseWithV0; 388 WKPageUIClientCallback showPage; 389 WKPageUIClientCallback close; 390 WKPageTakeFocusCallback takeFocus; 391 WKPageFocusCallback focus; 392 WKPageUnfocusCallback unfocus; 393 WKPageRunJavaScriptAlertCallback runJavaScriptAlert; 394 WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm; 395 WKPageRunJavaScriptPromptCallback runJavaScriptPrompt; 396 WKPageSetStatusTextCallback setStatusText; 397 WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0 mouseDidMoveOverElement_deprecatedForUseWithV0; 398 WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0 missingPluginButtonClicked_deprecatedForUseWithV0; 399 WKPageDidNotHandleKeyEventCallback didNotHandleKeyEvent; 400 WKPageDidNotHandleWheelEventCallback didNotHandleWheelEvent; 401 WKPageGetToolbarsAreVisibleCallback toolbarsAreVisible; 402 WKPageSetToolbarsAreVisibleCallback setToolbarsAreVisible; 403 WKPageGetMenuBarIsVisibleCallback menuBarIsVisible; 404 WKPageSetMenuBarIsVisibleCallback setMenuBarIsVisible; 405 WKPageGetStatusBarIsVisibleCallback statusBarIsVisible; 406 WKPageSetStatusBarIsVisibleCallback setStatusBarIsVisible; 407 WKPageGetIsResizableCallback isResizable; 408 WKPageSetIsResizableCallback setIsResizable; 409 WKPageGetWindowFrameCallback getWindowFrame; 410 WKPageSetWindowFrameCallback setWindowFrame; 411 WKPageRunBeforeUnloadConfirmPanelCallback runBeforeUnloadConfirmPanel; 412 WKPageUIClientCallback didDraw; 413 WKPageUIClientCallback pageDidScroll; 414 WKPageExceededDatabaseQuotaCallback exceededDatabaseQuota; 415 WKPageRunOpenPanelCallback runOpenPanel; 416 WKPageDecidePolicyForGeolocationPermissionRequestCallback decidePolicyForGeolocationPermissionRequest; 417 WKPageHeaderHeightCallback headerHeight; 418 WKPageFooterHeightCallback footerHeight; 419 WKPageDrawHeaderCallback drawHeader; 420 WKPageDrawFooterCallback drawFooter; 421 WKPagePrintFrameCallback printFrame; 422 WKPageUIClientCallback runModal; 423 void* unused1; // Used to be didCompleteRubberBandForMainFrame 424 WKPageSaveDataToFileInDownloadsFolderCallback saveDataToFileInDownloadsFolder; 425 WKPageShouldInterruptJavaScriptCallback shouldInterruptJavaScript; 382 typedef struct WKPageUIClientV5 { 383 WKPageUIClientBase base; 384 385 // Version 0. 386 WKPageCreateNewPageCallback_deprecatedForUseWithV0 createNewPage_deprecatedForUseWithV0; 387 WKPageUIClientCallback showPage; 388 WKPageUIClientCallback close; 389 WKPageTakeFocusCallback takeFocus; 390 WKPageFocusCallback focus; 391 WKPageUnfocusCallback unfocus; 392 WKPageRunJavaScriptAlertCallback runJavaScriptAlert; 393 WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm; 394 WKPageRunJavaScriptPromptCallback runJavaScriptPrompt; 395 WKPageSetStatusTextCallback setStatusText; 396 WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0 mouseDidMoveOverElement_deprecatedForUseWithV0; 397 WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0 missingPluginButtonClicked_deprecatedForUseWithV0; 398 WKPageDidNotHandleKeyEventCallback didNotHandleKeyEvent; 399 WKPageDidNotHandleWheelEventCallback didNotHandleWheelEvent; 400 WKPageGetToolbarsAreVisibleCallback toolbarsAreVisible; 401 WKPageSetToolbarsAreVisibleCallback setToolbarsAreVisible; 402 WKPageGetMenuBarIsVisibleCallback menuBarIsVisible; 403 WKPageSetMenuBarIsVisibleCallback setMenuBarIsVisible; 404 WKPageGetStatusBarIsVisibleCallback statusBarIsVisible; 405 WKPageSetStatusBarIsVisibleCallback setStatusBarIsVisible; 406 WKPageGetIsResizableCallback isResizable; 407 WKPageSetIsResizableCallback setIsResizable; 408 WKPageGetWindowFrameCallback getWindowFrame; 409 WKPageSetWindowFrameCallback setWindowFrame; 410 WKPageRunBeforeUnloadConfirmPanelCallback runBeforeUnloadConfirmPanel; 411 WKPageUIClientCallback didDraw; 412 WKPageUIClientCallback pageDidScroll; 413 WKPageExceededDatabaseQuotaCallback exceededDatabaseQuota; 414 WKPageRunOpenPanelCallback runOpenPanel; 415 WKPageDecidePolicyForGeolocationPermissionRequestCallback decidePolicyForGeolocationPermissionRequest; 416 WKPageHeaderHeightCallback headerHeight; 417 WKPageFooterHeightCallback footerHeight; 418 WKPageDrawHeaderCallback drawHeader; 419 WKPageDrawFooterCallback drawFooter; 420 WKPagePrintFrameCallback printFrame; 421 WKPageUIClientCallback runModal; 422 void* unused1; // Used to be didCompleteRubberBandForMainFrame 423 WKPageSaveDataToFileInDownloadsFolderCallback saveDataToFileInDownloadsFolder; 424 WKPageShouldInterruptJavaScriptCallback shouldInterruptJavaScript; 426 425 427 426 // Version 1. … … 435 434 WKPageHideColorPickerCallback hideColorPicker; 436 435 WKPageUnavailablePluginButtonClickedCallback unavailablePluginButtonClicked; 436 437 // Version 3. 438 WKPagePinnedStateDidChangeCallback pinnedStateDidChange; 439 440 // Version 4. 441 WKPageDidBeginTrackingPotentialLongMousePressCallback didBeginTrackingPotentialLongMousePress; 442 WKPageDidRecognizeLongMousePressCallback didRecognizeLongMousePress; 443 WKPageDidCancelTrackingPotentialLongMousePressCallback didCancelTrackingPotentialLongMousePress; 444 WKPageIsPlayingAudioDidChangeCallback isPlayingAudioDidChange; 445 446 // Version 5. 447 WKPageDecidePolicyForUserMediaPermissionRequestCallback decidePolicyForUserMediaPermissionRequest; 448 } WKPageUIClientV5; 449 450 enum { kWKPageUIClientCurrentVersion WK_ENUM_DEPRECATED("Use an explicit version number instead") = 2 }; 451 typedef struct WKPageUIClient { 452 int version; 453 const void * clientInfo; 454 455 // Version 0. 456 WKPageCreateNewPageCallback_deprecatedForUseWithV0 createNewPage_deprecatedForUseWithV0; 457 WKPageUIClientCallback showPage; 458 WKPageUIClientCallback close; 459 WKPageTakeFocusCallback takeFocus; 460 WKPageFocusCallback focus; 461 WKPageUnfocusCallback unfocus; 462 WKPageRunJavaScriptAlertCallback runJavaScriptAlert; 463 WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm; 464 WKPageRunJavaScriptPromptCallback runJavaScriptPrompt; 465 WKPageSetStatusTextCallback setStatusText; 466 WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0 mouseDidMoveOverElement_deprecatedForUseWithV0; 467 WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0 missingPluginButtonClicked_deprecatedForUseWithV0; 468 WKPageDidNotHandleKeyEventCallback didNotHandleKeyEvent; 469 WKPageDidNotHandleWheelEventCallback didNotHandleWheelEvent; 470 WKPageGetToolbarsAreVisibleCallback toolbarsAreVisible; 471 WKPageSetToolbarsAreVisibleCallback setToolbarsAreVisible; 472 WKPageGetMenuBarIsVisibleCallback menuBarIsVisible; 473 WKPageSetMenuBarIsVisibleCallback setMenuBarIsVisible; 474 WKPageGetStatusBarIsVisibleCallback statusBarIsVisible; 475 WKPageSetStatusBarIsVisibleCallback setStatusBarIsVisible; 476 WKPageGetIsResizableCallback isResizable; 477 WKPageSetIsResizableCallback setIsResizable; 478 WKPageGetWindowFrameCallback getWindowFrame; 479 WKPageSetWindowFrameCallback setWindowFrame; 480 WKPageRunBeforeUnloadConfirmPanelCallback runBeforeUnloadConfirmPanel; 481 WKPageUIClientCallback didDraw; 482 WKPageUIClientCallback pageDidScroll; 483 WKPageExceededDatabaseQuotaCallback exceededDatabaseQuota; 484 WKPageRunOpenPanelCallback runOpenPanel; 485 WKPageDecidePolicyForGeolocationPermissionRequestCallback decidePolicyForGeolocationPermissionRequest; 486 WKPageHeaderHeightCallback headerHeight; 487 WKPageFooterHeightCallback footerHeight; 488 WKPageDrawHeaderCallback drawHeader; 489 WKPageDrawFooterCallback drawFooter; 490 WKPagePrintFrameCallback printFrame; 491 WKPageUIClientCallback runModal; 492 void* unused1; // Used to be didCompleteRubberBandForMainFrame 493 WKPageSaveDataToFileInDownloadsFolderCallback saveDataToFileInDownloadsFolder; 494 WKPageShouldInterruptJavaScriptCallback shouldInterruptJavaScript; 495 496 // Version 1. 497 WKPageCreateNewPageCallback createNewPage; 498 WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; 499 WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; 500 WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; 501 502 // Version 2. 503 WKPageShowColorPickerCallback showColorPicker; 504 WKPageHideColorPickerCallback hideColorPicker; 505 WKPageUnavailablePluginButtonClickedCallback unavailablePluginButtonClicked; 437 506 } WKPageUIClient WK_DEPRECATED("Use an explicit versioned struct instead"); 438 507 -
trunk/Source/WebKit2/UIProcess/API/C/WebKit2_C.h
r169711 r176011 58 58 #include <WebKit/WKURLRequest.h> 59 59 #include <WebKit/WKURLResponse.h> 60 #include <WebKit/WKUserMediaPermissionRequest.h> 60 61 61 62 #if defined(__OBJC__) && __OBJC__ -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r175822 r176011 56 56 #include "TextCheckerState.h" 57 57 #include "TextIndicator.h" 58 #include "UserMediaPermissionRequestProxy.h" 58 59 #include "WKContextPrivate.h" 59 60 #include "WebBackForwardList.h" … … 280 281 , m_geolocationPermissionRequestManager(*this) 281 282 , m_notificationPermissionRequestManager(*this) 283 , m_userMediaPermissionRequestManager(*this) 282 284 , m_viewState(ViewState::NoFlags) 283 285 , m_viewWasEverInWindow(false) … … 4717 4719 } 4718 4720 4721 void WebPageProxy::requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video) 4722 { 4723 WebFrameProxy* frame = m_process->webFrame(frameID); 4724 MESSAGE_CHECK(frame); 4725 4726 RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::create(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier)); 4727 RefPtr<UserMediaPermissionRequestProxy> request = m_userMediaPermissionRequestManager.createRequest(userMediaID, audio, video); 4728 4729 if (!m_uiClient->decidePolicyForUserMediaPermissionRequest(*this, *frame, *origin.get(), *request.get())) 4730 request->deny(); 4731 } 4732 4719 4733 void WebPageProxy::requestNotificationPermission(uint64_t requestID, const String& originString) 4720 4734 { -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r175759 r176011 46 46 #include "SandboxExtension.h" 47 47 #include "ShareableBitmap.h" 48 #include "UserMediaPermissionRequestManagerProxy.h" 48 49 #include "VisibleContentRectUpdateInfo.h" 49 50 #include "WKBase.h" … … 125 126 class GraphicsLayer; 126 127 class IntSize; 128 class MediaConstraintsImpl; 127 129 class ProtectionSpace; 128 130 class RunLoopObserver; … … 1061 1063 void reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, PassRefPtr<Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply>); 1062 1064 void requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier); 1065 1066 void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video); 1067 1063 1068 void runModal(); 1064 1069 void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&); … … 1397 1402 NotificationPermissionRequestManagerProxy m_notificationPermissionRequestManager; 1398 1403 1404 UserMediaPermissionRequestManagerProxy m_userMediaPermissionRequestManager; 1405 1399 1406 WebCore::ViewState::Flags m_viewState; 1400 1407 bool m_viewWasEverInWindow; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r175564 r176011 258 258 RequestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier) 259 259 260 #if ENABLE(MEDIA_STREAM) 261 # MediaSteam messages 262 RequestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video) 263 #endif 264 260 265 # Notification messages 261 266 RequestNotificationPermission(uint64_t requestID, String originIdentifier) -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r175983 r176011 792 792 3F889D15188778C900FEADAF /* WebVideoFullscreenManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F889D13188778C900FEADAF /* WebVideoFullscreenManagerProxy.h */; }; 793 793 3F889D171887859300FEADAF /* WebVideoFullscreenManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3F889D0D1887699C00FEADAF /* WebVideoFullscreenManager.mm */; }; 794 4A3CC18A19B063E700D14AEF /* UserMediaPermissionRequestManagerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A410F3919AF7B04002EBAB5 /* UserMediaPermissionRequestManagerProxy.cpp */; }; 795 4A3CC18B19B0640F00D14AEF /* UserMediaPermissionRequestManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A410F3A19AF7B04002EBAB5 /* UserMediaPermissionRequestManagerProxy.h */; }; 796 4A3CC18C19B0641500D14AEF /* UserMediaPermissionRequestProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A410F3B19AF7B04002EBAB5 /* UserMediaPermissionRequestProxy.cpp */; }; 797 4A3CC18D19B0641900D14AEF /* UserMediaPermissionRequestProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A410F3C19AF7B04002EBAB5 /* UserMediaPermissionRequestProxy.h */; }; 798 4A3CC18E19B07B8500D14AEF /* WKUserMediaPermissionRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A410F3519AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.cpp */; }; 799 4A3CC18F19B07B8A00D14AEF /* WKUserMediaPermissionRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A410F3619AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.h */; settings = {ATTRIBUTES = (Private, ); }; }; 800 4A410F4419AF7B27002EBAB5 /* UserMediaPermissionRequestManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A410F4219AF7B27002EBAB5 /* UserMediaPermissionRequestManager.cpp */; }; 801 4A410F4A19AF7B80002EBAB5 /* WebUserMediaClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A410F4819AF7B80002EBAB5 /* WebUserMediaClient.cpp */; }; 794 802 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */; }; 795 803 51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */; }; … … 2819 2827 3F889D13188778C900FEADAF /* WebVideoFullscreenManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebVideoFullscreenManagerProxy.h; path = ios/WebVideoFullscreenManagerProxy.h; sourceTree = "<group>"; }; 2820 2828 3F889D1618877A2400FEADAF /* WebVideoFullscreenManagerProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = WebVideoFullscreenManagerProxy.messages.in; path = ios/WebVideoFullscreenManagerProxy.messages.in; sourceTree = "<group>"; }; 2829 4A410F3519AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserMediaPermissionRequest.cpp; sourceTree = "<group>"; }; 2830 4A410F3619AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKUserMediaPermissionRequest.h; sourceTree = "<group>"; }; 2831 4A410F3919AF7B04002EBAB5 /* UserMediaPermissionRequestManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserMediaPermissionRequestManagerProxy.cpp; sourceTree = "<group>"; }; 2832 4A410F3A19AF7B04002EBAB5 /* UserMediaPermissionRequestManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserMediaPermissionRequestManagerProxy.h; sourceTree = "<group>"; }; 2833 4A410F3B19AF7B04002EBAB5 /* UserMediaPermissionRequestProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserMediaPermissionRequestProxy.cpp; sourceTree = "<group>"; }; 2834 4A410F3C19AF7B04002EBAB5 /* UserMediaPermissionRequestProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserMediaPermissionRequestProxy.h; sourceTree = "<group>"; }; 2835 4A410F4219AF7B27002EBAB5 /* UserMediaPermissionRequestManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserMediaPermissionRequestManager.cpp; sourceTree = "<group>"; }; 2836 4A410F4319AF7B27002EBAB5 /* UserMediaPermissionRequestManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserMediaPermissionRequestManager.h; sourceTree = "<group>"; }; 2837 4A410F4819AF7B80002EBAB5 /* WebUserMediaClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebUserMediaClient.cpp; sourceTree = "<group>"; }; 2838 4A410F4919AF7B80002EBAB5 /* WebUserMediaClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUserMediaClient.h; sourceTree = "<group>"; }; 2821 2839 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockingResponseMap.h; sourceTree = "<group>"; }; 2822 2840 510031F61379CACB00C8DFE4 /* SecItemShim.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = SecItemShim.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; … … 5176 5194 sourceTree = "<group>"; 5177 5195 }; 5196 4A410F4119AF7B27002EBAB5 /* MediaStream */ = { 5197 isa = PBXGroup; 5198 children = ( 5199 4A410F4219AF7B27002EBAB5 /* UserMediaPermissionRequestManager.cpp */, 5200 4A410F4319AF7B27002EBAB5 /* UserMediaPermissionRequestManager.h */, 5201 ); 5202 path = MediaStream; 5203 sourceTree = "<group>"; 5204 }; 5178 5205 5105B0D2162F7A5E00E27709 /* Network */ = { 5179 5206 isa = PBXGroup; … … 5636 5663 isa = PBXGroup; 5637 5664 children = ( 5665 4A410F4119AF7B27002EBAB5 /* MediaStream */, 5638 5666 512E352A130B559900ABD19A /* ApplicationCache */, 5639 5667 7C6E70F818B2D47E00F24E2E /* cocoa */, … … 5673 5701 isa = PBXGroup; 5674 5702 children = ( 5703 4A410F4819AF7B80002EBAB5 /* WebUserMediaClient.cpp */, 5704 4A410F4919AF7B80002EBAB5 /* WebUserMediaClient.h */, 5675 5705 2D28F3DF1885CCB4004B9EAE /* ios */, 5676 5706 BC111ADE112F5B9A00337BAB /* mac */, … … 5776 5806 isa = PBXGroup; 5777 5807 children = ( 5808 4A410F3919AF7B04002EBAB5 /* UserMediaPermissionRequestManagerProxy.cpp */, 5809 4A410F3A19AF7B04002EBAB5 /* UserMediaPermissionRequestManagerProxy.h */, 5810 4A410F3B19AF7B04002EBAB5 /* UserMediaPermissionRequestProxy.cpp */, 5811 4A410F3C19AF7B04002EBAB5 /* UserMediaPermissionRequestProxy.h */, 5778 5812 2DA944A81884E9AB00ED86DB /* ios */, 5779 5813 BC032DC410F4387C0058C15A /* API */, … … 5944 5978 isa = PBXGroup; 5945 5979 children = ( 5980 4A410F3519AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.cpp */, 5981 4A410F3619AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.h */, 5946 5982 5123CF18133D25E60056F800 /* cg */, 5947 5983 6EE849C41368D9040038D481 /* mac */, … … 7196 7232 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */, 7197 7233 1A7C6CDB1378950800B9C04D /* EnvironmentVariables.h in Headers */, 7234 4A3CC18F19B07B8A00D14AEF /* WKUserMediaPermissionRequest.h in Headers */, 7198 7235 1AA575FB1496B52600A4EE06 /* EventDispatcher.h in Headers */, 7199 7236 1A90C1F41264FD71003E44D4 /* FindController.h in Headers */, … … 7610 7647 1ADF591B1890528E0043C145 /* WKWebViewConfiguration.h in Headers */, 7611 7648 BC5744F012638FB3006F0F12 /* WebPopupItem.h in Headers */, 7649 4A3CC18D19B0641900D14AEF /* UserMediaPermissionRequestProxy.h in Headers */, 7612 7650 D3B9484711FF4B6500032B39 /* WebPopupMenu.h in Headers */, 7613 7651 BC574E631267D080006F0F12 /* WebPopupMenuProxy.h in Headers */, … … 7636 7674 3760881F150413E900FC82C7 /* WebRenderObject.h in Headers */, 7637 7675 33367630130C9998006C9DE2 /* WebResourceCacheManager.h in Headers */, 7676 4A3CC18B19B0640F00D14AEF /* UserMediaPermissionRequestManagerProxy.h in Headers */, 7638 7677 1AAF089B19267EE500B6390C /* WKUserScript.h in Headers */, 7639 7678 33367656130C9ECA006C9DE2 /* WebResourceCacheManagerMessages.h in Headers */, … … 8710 8749 buildActionMask = 2147483647; 8711 8750 files = ( 8751 4A410F4419AF7B27002EBAB5 /* UserMediaPermissionRequestManager.cpp in Sources */, 8712 8752 BC5D24A116CC3B9E007D5461 /* ChildProcessMain.mm in Sources */, 8753 4A410F4A19AF7B80002EBAB5 /* WebUserMediaClient.cpp in Sources */, 8713 8754 ); 8714 8755 runOnlyForDeploymentPostprocessing = 0; … … 9103 9144 A1DF631218E0B7C8003A3E2A /* DownloadClient.mm in Sources */, 9104 9145 1A0F29CB120B37160053D1B9 /* VisitedLinkTable.cpp in Sources */, 9146 4A3CC18A19B063E700D14AEF /* UserMediaPermissionRequestManagerProxy.cpp in Sources */, 9105 9147 1AC1337F18590AE400F3EC05 /* RemoteObjectRegistry.mm in Sources */, 9106 9148 CEDA12E2152CD1AE00D9E08D /* WebAlternativeTextClient.cpp in Sources */, … … 9225 9267 51D02F64132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp in Sources */, 9226 9268 C57193BE18C14A44002D0F12 /* WKFormSelectControl.mm in Sources */, 9269 4A3CC18E19B07B8500D14AEF /* WKUserMediaPermissionRequest.cpp in Sources */, 9227 9270 2DDF731618E95060004F5A66 /* RemoteLayerBackingStoreCollection.mm in Sources */, 9228 9271 511B24A6132E095700065A0C /* WebIconDatabaseProxy.cpp in Sources */, … … 9388 9431 515E7727183DD6F60007203F /* AsyncRequest.cpp in Sources */, 9389 9432 BCA284D61492F2C7001F9042 /* WKConnection.mm in Sources */, 9433 4A3CC18C19B0641500D14AEF /* UserMediaPermissionRequestProxy.cpp in Sources */, 9390 9434 0F0C365818C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm in Sources */, 9391 9435 0F0C365C18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm in Sources */, -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r175549 r176011 99 99 #include "WebUndoStep.h" 100 100 #include "WebUserContentController.h" 101 #include "WebUserMediaClient.h" 101 102 #include <JavaScriptCore/APICast.h> 102 103 #include <WebCore/ArchiveResource.h> … … 282 283 , m_geolocationPermissionRequestManager(this) 283 284 #endif 285 #if ENABLE(MEDIA_STREAM) 286 , m_userMediaPermissionRequestManager(*this) 287 #endif 284 288 , m_canRunBeforeUnloadConfirmPanel(parameters.canRunBeforeUnloadConfirmPanel) 285 289 , m_canRunModal(parameters.canRunModal) … … 386 390 #if ENABLE(PROXIMITY_EVENTS) 387 391 WebCore::provideDeviceProximityTo(m_page.get(), new WebDeviceProximityClient(this)); 392 #endif 393 #if ENABLE(MEDIA_STREAM) 394 WebCore::provideUserMediaTo(m_page.get(), new WebUserMediaClient(*this)); 388 395 #endif 389 396 … … 3253 3260 } 3254 3261 3262 #if ENABLE(MEDIA_STREAM) 3263 void WebPage::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed) 3264 { 3265 m_userMediaPermissionRequestManager.didReceiveUserMediaPermissionDecision(userMediaID, allowed); 3266 } 3267 #endif 3268 3255 3269 #if !PLATFORM(IOS) 3256 3270 void WebPage::advanceToNextMisspelling(bool startBeforeSelection) -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r175637 r176011 45 45 #include "SandboxExtension.h" 46 46 #include "ShareableBitmap.h" 47 #include "UserMediaPermissionRequestManager.h" 47 48 #include <WebCore/DictationAlternative.h> 48 49 #include <WebCore/DragData.h> … … 450 451 #endif 451 452 453 #if ENABLE(MEDIA_STREAM) 454 UserMediaPermissionRequestManager& userMediaPermissionRequestManager() { return m_userMediaPermissionRequestManager; } 455 #endif 456 452 457 #if PLATFORM(IOS) 453 458 WebCore::FloatSize screenSize() const; … … 1020 1025 void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed); 1021 1026 1027 #if ENABLE(MEDIA_STREAM) 1028 void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed); 1029 #endif 1030 1022 1031 void advanceToNextMisspelling(bool startBeforeSelection); 1023 1032 void changeSpellingToWord(const String& word); … … 1185 1194 #if ENABLE(GEOLOCATION) 1186 1195 GeolocationPermissionRequestManager m_geolocationPermissionRequestManager; 1196 #endif 1197 1198 #if ENABLE(MEDIA_STREAM) 1199 UserMediaPermissionRequestManager m_userMediaPermissionRequestManager; 1187 1200 #endif 1188 1201 -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
r175637 r176011 270 270 #endif 271 271 272 #if ENABLE(MEDIA_STREAM) 273 # MediaSteam 274 DidReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed) 275 #endif 276 272 277 # Notification 273 278 DidReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed) -
trunk/Tools/ChangeLog
r175991 r176011 1 2014-09-01 Philippe Normand <pnormand@igalia.com> 2 3 [WK2] UserMediaClient support 4 https://bugs.webkit.org/show_bug.cgi?id=123158 5 6 Reviewed by Benjamin Poulain. 7 8 Simple API test for the UserMedia permission request API. The 9 required test infrastructure is also added, inspired by the 10 Geolocation infrastructure. 11 12 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: New API test for UserMedia 13 Permission request. 14 * TestWebKitAPI/Tests/WebKit2/UserMedia.cpp: Added. 15 (TestWebKitAPI::decidePolicyForUserMediaPermissionRequestCallBack): 16 (TestWebKitAPI::TEST): 17 * TestWebKitAPI/Tests/WebKit2/getUserMedia.html: Added. 18 * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: new 19 helper method to set the permission request result without user interaction. 20 * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: Ditto. 21 (WTR::InjectedBundle::setUserMediaPermission): 22 * WebKitTestRunner/InjectedBundle/InjectedBundle.h: Ditto. 23 * WebKitTestRunner/InjectedBundle/TestRunner.cpp: Ditto. 24 (WTR::TestRunner::setUserMediaPermission): 25 * WebKitTestRunner/InjectedBundle/TestRunner.h: Ditto. 26 * WebKitTestRunner/TestController.cpp: 27 (WTR::decidePolicyForUserMediaPermissionRequest): Permission 28 request handler. 29 (WTR::TestController::createOtherPage): Enable the new UserMedia 30 permission request handler. 31 (WTR::TestController::createWebViewWithOptions): Ditto. 32 (WTR::TestController::resetPreferencesToConsistentValues): Enable 33 MediaStream support, this is needed for getUserMedia. 34 (WTR::TestController::resetStateToConsistentValues): clear 35 UserMedia permissions list and flags. 36 (WTR::TestController::setUserMediaPermission): Set permission 37 request result and distpatch it. 38 (WTR::TestController::handleUserMediaPermissionRequest): Save 39 request and dispatch it. 40 (WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible): 41 Dispatch cached permission requests. 42 * WebKitTestRunner/TestController.h: 43 * WebKitTestRunner/TestInvocation.cpp: 44 (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): 45 1 46 2014-11-11 David Kilzer <ddkilzer@apple.com> 2 47 -
trunk/Tools/TestWebKitAPI/CMakeLists.txt
r175930 r176011 169 169 170 170 target_link_libraries(TestJavaScriptCore ${TestJavaScriptCore_LIBRARIES}) 171 add_dependencies(TestJavaScriptCore ${ForwardingHeadersForTestWebKitAPI_NAME}) 172 171 173 add_test(TestJavaScriptCore ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/JavaScriptCore/TestJavaScriptCore) 172 174 set_tests_properties(TestJavaScriptCore PROPERTIES TIMEOUT 60) -
trunk/Tools/TestWebKitAPI/PlatformGTK.cmake
r175930 r176011 92 92 ${TESTWEBKITAPI_DIR}/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp 93 93 ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp 94 ${TESTWEBKITAPI_DIR}/Tests/WebKit2/UserMedia.cpp 94 95 ${TESTWEBKITAPI_DIR}/Tests/WebKit2/UserMessage.cpp 95 96 ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillSendSubmitEvent.cpp -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r175930 r176011 89 89 37E38C34169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */; }; 90 90 440A1D3914A0103A008A66F2 /* URL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 440A1D3814A0103A008A66F2 /* URL.cpp */; }; 91 4A410F4C19AF7BD6002EBAB5 /* UserMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A410F4B19AF7BD6002EBAB5 /* UserMedia.cpp */; }; 91 92 4BB4160216815B2600824238 /* JSWrapperForNodeInWebFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4160116815B2600824238 /* JSWrapperForNodeInWebFrame.mm */; }; 92 93 4BB4160416815F9100824238 /* ElementAtPointInWebFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4160316815F9100824238 /* ElementAtPointInWebFrame.mm */; }; … … 447 448 440A1D3814A0103A008A66F2 /* URL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URL.cpp; sourceTree = "<group>"; }; 448 449 44A622C114A0E2B60048515B /* WTFStringUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFStringUtilities.h; sourceTree = "<group>"; }; 450 4A410F4B19AF7BD6002EBAB5 /* UserMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserMedia.cpp; sourceTree = "<group>"; }; 451 4A410F4D19AF7BEF002EBAB5 /* getUserMedia.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = getUserMedia.html; sourceTree = "<group>"; }; 449 452 4BB4160116815B2600824238 /* JSWrapperForNodeInWebFrame.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSWrapperForNodeInWebFrame.mm; sourceTree = "<group>"; }; 450 453 4BB4160316815F9100824238 /* ElementAtPointInWebFrame.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ElementAtPointInWebFrame.mm; sourceTree = "<group>"; }; … … 839 842 isa = PBXGroup; 840 843 children = ( 844 4A410F4B19AF7BD6002EBAB5 /* UserMedia.cpp */, 841 845 C0C5D3BB14598B6F00A802A6 /* mac */, 842 846 BC90977B125571AE00083756 /* Resources */, … … 973 977 isa = PBXGroup; 974 978 children = ( 979 4A410F4D19AF7BEF002EBAB5 /* getUserMedia.html */, 975 980 C045F9461385C2F800C0F3CD /* 18-characters.html */, 976 981 F6B7BE9617469B7E008A3445 /* associate-form-controls.html */, … … 1381 1386 1AFDE6561953B2C000C48FFA /* Optional.cpp in Sources */, 1382 1387 C540F776152E4DA000A40C8C /* SimplifyMarkup.mm in Sources */, 1388 4A410F4C19AF7BD6002EBAB5 /* UserMedia.cpp in Sources */, 1383 1389 C02B77F2126612140026BF0F /* SpacebarScrolling.cpp in Sources */, 1384 1390 93D3D19E17B1A84200C7C415 /* LayoutMilestonesWithAllContentInFrame.cpp in Sources */, -
trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
r165545 r176011 170 170 void setMockGeolocationPositionUnavailableError(DOMString errorMessage); 171 171 172 // MediaStream 173 void setUserMediaPermission(boolean value); 174 172 175 // Audio testing. 173 176 [PassContext] void setAudioResult(object data); -
trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
r175783 r176011 459 459 } 460 460 461 void InjectedBundle::setUserMediaPermission(bool enabled) 462 { 463 auto messageName = adoptWK(WKStringCreateWithUTF8CString("SetUserMediaPermission")); 464 auto messageBody = adoptWK(WKBooleanCreate(enabled)); 465 WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); 466 } 467 461 468 void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive) 462 469 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
r169113 r176011 93 93 void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage); 94 94 95 // MediaStream. 96 void setUserMediaPermission(bool); 97 95 98 // Policy delegate. 96 99 void setCustomPolicyDelegate(bool enabled, bool permissive); -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
r168961 r176011 721 721 } 722 722 723 void TestRunner::setUserMediaPermission(bool enabled) 724 { 725 // FIXME: this should be done by frame. 726 InjectedBundle::shared().setUserMediaPermission(enabled); 727 } 728 723 729 bool TestRunner::callShouldCloseOnWebView() 724 730 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
r168961 r176011 253 253 void setMockGeolocationPositionUnavailableError(JSStringRef message); 254 254 255 // MediaStream 256 void setUserMediaPermission(bool); 257 255 258 void setPageVisibility(JSStringRef state); 256 259 void resetPageVisibility(); -
trunk/Tools/WebKitTestRunner/TestController.cpp
r175783 r176011 190 190 } 191 191 192 static void decidePolicyForUserMediaPermissionRequest(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKUserMediaPermissionRequestRef permissionRequest, const void* clientInfo) 193 { 194 TestController::shared().handleUserMediaPermissionRequest(permissionRequest); 195 } 196 192 197 int TestController::getCustomTimeout() 193 198 { … … 204 209 view->resizeTo(800, 600); 205 210 206 WKPageUIClientV 2otherPageUIClient = {207 { 2, view },211 WKPageUIClientV5 otherPageUIClient = { 212 { 5, view }, 208 213 0, // createNewPage_deprecatedForUseWithV0 209 214 0, // showPage … … 252 257 0, // hideColorPicker 253 258 0, // unavailablePluginButtonClicked 259 0, // pinnedStateDidChange 260 0, // didBeginTrackingPotentialLongMousePress 261 0, // didRecognizeLongMousePress 262 0, // didCancelTrackingPotentialLongMousePress 263 0, // isPlayingAudioDidChange 264 decidePolicyForUserMediaPermissionRequest, 254 265 }; 255 266 WKPageSetPageUIClient(newPage, &otherPageUIClient.base); … … 410 421 { 411 422 m_mainWebView = std::make_unique<PlatformWebView>(m_context.get(), m_pageGroup.get(), nullptr, options); 412 WKPageUIClientV 2pageUIClient = {413 { 2, m_mainWebView.get() },423 WKPageUIClientV5 pageUIClient = { 424 { 5, m_mainWebView.get() }, 414 425 0, // createNewPage_deprecatedForUseWithV0 415 426 0, // showPage … … 458 469 0, // hideColorPicker 459 470 unavailablePluginButtonClicked, 471 0, // pinnedStateDidChange 472 0, // didBeginTrackingPotentialLongMousePress 473 0, // didRecognizeLongMousePress 474 0, // didCancelTrackingPotentialLongMousePress 475 0, // isPlayingAudioDidChange 476 decidePolicyForUserMediaPermissionRequest, 460 477 }; 461 478 WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient.base); … … 547 564 WKPreferencesSetXSSAuditorEnabled(preferences, false); 548 565 WKPreferencesSetWebAudioEnabled(preferences, true); 566 WKPreferencesSetMediaStreamEnabled(preferences, true); 549 567 WKPreferencesSetDeveloperExtrasEnabled(preferences, true); 550 568 WKPreferencesSetJavaScriptExperimentsEnabled(preferences, true); … … 649 667 m_isGeolocationPermissionSet = false; 650 668 m_isGeolocationPermissionAllowed = false; 669 670 // Reset UserMedia permissions. 671 m_userMediaPermissionRequests.clear(); 672 m_isUserMediaPermissionSet = false; 673 m_isUserMediaPermissionAllowed = false; 651 674 652 675 // Reset Custom Policy Delegate. … … 1367 1390 } 1368 1391 1392 void TestController::setUserMediaPermission(bool enabled) 1393 { 1394 m_isUserMediaPermissionSet = true; 1395 m_isUserMediaPermissionAllowed = enabled; 1396 decidePolicyForUserMediaPermissionRequestIfPossible(); 1397 } 1398 1399 void TestController::handleUserMediaPermissionRequest(WKUserMediaPermissionRequestRef userMediaPermissionRequest) 1400 { 1401 m_userMediaPermissionRequests.append(userMediaPermissionRequest); 1402 decidePolicyForUserMediaPermissionRequestIfPossible(); 1403 } 1404 1405 void TestController::decidePolicyForUserMediaPermissionRequestIfPossible() 1406 { 1407 if (!m_isUserMediaPermissionSet) 1408 return; 1409 1410 for (auto& request : m_userMediaPermissionRequests) { 1411 if (m_isUserMediaPermissionAllowed) 1412 WKUserMediaPermissionRequestAllow(request.get()); 1413 else 1414 WKUserMediaPermissionRequestDeny(request.get()); 1415 } 1416 m_userMediaPermissionRequests.clear(); 1417 } 1418 1369 1419 void TestController::setCustomPolicyDelegate(bool enabled, bool permissive) 1370 1420 { -
trunk/Tools/WebKitTestRunner/TestController.h
r174824 r176011 89 89 void handleGeolocationPermissionRequest(WKGeolocationPermissionRequestRef); 90 90 91 // MediaStream. 92 void setUserMediaPermission(bool); 93 void handleUserMediaPermissionRequest(WKUserMediaPermissionRequestRef); 94 91 95 // Policy delegate. 92 96 void setCustomPolicyDelegate(bool enabled, bool permissive); … … 135 139 136 140 void decidePolicyForGeolocationPermissionRequestIfPossible(); 141 void decidePolicyForUserMediaPermissionRequestIfPossible(); 137 142 138 143 // WKContextInjectedBundleClient … … 239 244 bool m_isGeolocationPermissionAllowed; 240 245 246 Vector<WKRetainPtr<WKUserMediaPermissionRequestRef>> m_userMediaPermissionRequests; 247 bool m_isUserMediaPermissionSet; 248 bool m_isUserMediaPermissionAllowed; 249 241 250 bool m_policyDelegateEnabled; 242 251 bool m_policyDelegatePermissive; -
trunk/Tools/WebKitTestRunner/TestInvocation.cpp
r171880 r176011 479 479 } 480 480 481 if (WKStringIsEqualToUTF8CString(messageName, "SetUserMediaPermission")) { 482 ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID()); 483 WKBooleanRef enabledWK = static_cast<WKBooleanRef>(messageBody); 484 TestController::shared().setUserMediaPermission(WKBooleanGetValue(enabledWK)); 485 return; 486 } 487 481 488 if (WKStringIsEqualToUTF8CString(messageName, "SetCustomPolicyDelegate")) { 482 489 ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
Note: See TracChangeset
for help on using the changeset viewer.