/* * Copyright (C) 2014 Igalia S.L * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #if WK_HAVE_C_SPI #if ENABLE(MEDIA_STREAM) #include "PlatformUtilities.h" #include "PlatformWebView.h" #include "Test.h" #include #include #include namespace TestWebKitAPI { static bool done; void decidePolicyForUserMediaPermissionRequestCallBack(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKSecurityOriginRef, WKUserMediaPermissionRequestRef permissionRequest, const void* /* clientInfo */) { WKRetainPtr audioDeviceUIDs = WKUserMediaPermissionRequestAudioDeviceUIDs(permissionRequest); WKRetainPtr videoDeviceUIDs = WKUserMediaPermissionRequestVideoDeviceUIDs(permissionRequest); if (WKArrayGetSize(videoDeviceUIDs.get()) || WKArrayGetSize(audioDeviceUIDs.get())) { WKRetainPtr videoDeviceUID; if (WKArrayGetSize(videoDeviceUIDs.get())) videoDeviceUID = reinterpret_cast(WKArrayGetItemAtIndex(videoDeviceUIDs.get(), 0)); else videoDeviceUID = WKStringCreateWithUTF8CString(""); WKRetainPtr audioDeviceUID; if (WKArrayGetSize(audioDeviceUIDs.get())) audioDeviceUID = reinterpret_cast(WKArrayGetItemAtIndex(audioDeviceUIDs.get(), 0)); else audioDeviceUID = WKStringCreateWithUTF8CString(""); WKUserMediaPermissionRequestAllow(permissionRequest, videoDeviceUID.get(), audioDeviceUID.get()); } done = true; } TEST(WebKit2, DISABLED_UserMediaBasic) { auto context = adoptWK(WKContextCreate()); PlatformWebView webView(context.get()); WKPageUIClientV5 uiClient; memset(&uiClient, 0, sizeof(uiClient)); uiClient.base.version = 5; uiClient.decidePolicyForUserMediaPermissionRequest = decidePolicyForUserMediaPermissionRequestCallBack; WKPageSetPageUIClient(webView.page(), &uiClient.base); done = false; auto url = adoptWK(Util::createURLForResource("getUserMedia", "html")); WKPageLoadURL(webView.page(), url.get()); Util::run(&done); } } // namespace TestWebKitAPI #endif // ENABLE(MEDIA_STREAM) #endif // WK_HAVE_C_SPI