Changeset 246136 in webkit
- Timestamp:
- Jun 5, 2019 6:22:18 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r246132 r246136 1 2019-06-05 Jer Noble <jer.noble@apple.com> 2 3 -[WKWebView _suspendAllMediaPlayback] does not persist across navigation. 4 https://bugs.webkit.org/show_bug.cgi?id=198585 5 6 Reviewed by Chris Dumez. 7 8 Add a new WebPageCreationParameters entry for mediaPlaybackIsSuspended, and pass 9 that value across during WebPage creation. 10 11 * Shared/WebPageCreationParameters.cpp: 12 (WebKit::WebPageCreationParameters::encode const): 13 (WebKit::WebPageCreationParameters::decode): 14 * Shared/WebPageCreationParameters.h: 15 * UIProcess/WebPageProxy.cpp: 16 (WebKit::WebPageProxy::suspendAllMediaPlayback): 17 (WebKit::WebPageProxy::resumeAllMediaPlayback): 18 (WebKit::WebPageProxy::creationParameters): 19 * UIProcess/WebPageProxy.h: 20 * WebProcess/WebPage/WebPage.cpp: 21 (WebKit::WebPage): 22 1 23 2019-06-05 Sihui Liu <sihui_liu@apple.com> 2 24 -
trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp
r245807 r246136 67 67 encoder << muted; 68 68 encoder << mayStartMediaWhenInWindow; 69 encoder << mediaPlaybackIsSuspended; 69 70 encoder << viewLayoutSize; 70 71 encoder << autoSizingShouldExpandToViewHeight; … … 224 225 if (!decoder.decode(parameters.mayStartMediaWhenInWindow)) 225 226 return WTF::nullopt; 227 if (!decoder.decode(parameters.mediaPlaybackIsSuspended)) 228 return WTF::nullopt; 226 229 if (!decoder.decode(parameters.viewLayoutSize)) 227 230 return WTF::nullopt; -
trunk/Source/WebKit/Shared/WebPageCreationParameters.h
r245807 r246136 117 117 WebCore::MediaProducer::MutedStateFlags muted; 118 118 bool mayStartMediaWhenInWindow; 119 bool mediaPlaybackIsSuspended { false }; 119 120 120 121 WebCore::IntSize viewLayoutSize; -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r246118 r246136 5473 5473 void WebPageProxy::suspendAllMediaPlayback() 5474 5474 { 5475 if (m_mediaPlaybackIsSuspended) 5476 return; 5477 m_mediaPlaybackIsSuspended = true; 5478 5475 5479 if (!hasRunningProcess()) 5476 5480 return; … … 5481 5485 void WebPageProxy::resumeAllMediaPlayback() 5482 5486 { 5487 if (!m_mediaPlaybackIsSuspended) 5488 return; 5489 m_mediaPlaybackIsSuspended = false; 5490 5483 5491 if (!hasRunningProcess()) 5484 5492 return; … … 7126 7134 parameters.muted = m_mutedState; 7127 7135 parameters.mayStartMediaWhenInWindow = m_mayStartMediaWhenInWindow; 7136 parameters.mediaPlaybackIsSuspended = m_mediaPlaybackIsSuspended; 7128 7137 parameters.viewLayoutSize = m_viewLayoutSize; 7129 7138 parameters.autoSizingShouldExpandToViewHeight = m_autoSizingShouldExpandToViewHeight; -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r246118 r246136 2413 2413 WebCore::MediaProducer::MutedStateFlags m_mutedState { WebCore::MediaProducer::NoneMuted }; 2414 2414 bool m_mayStartMediaWhenInWindow { true }; 2415 bool m_mediaPlaybackIsSuspended { false }; 2415 2416 bool m_mediaCaptureEnabled { true }; 2416 2417 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r246032 r246136 540 540 m_page->setCanStartMedia(false); 541 541 m_mayStartMediaWhenInWindow = parameters.mayStartMediaWhenInWindow; 542 if (parameters.mediaPlaybackIsSuspended) 543 m_page->suspendAllMediaPlayback(); 542 544 543 545 m_page->setGroupName(m_pageGroup->identifier()); -
trunk/Tools/ChangeLog
r246127 r246136 1 2019-06-05 Jer Noble <jer.noble@apple.com> 2 3 -[WKWebView _suspendAllMediaPlayback] does not persist across navigation. 4 https://bugs.webkit.org/show_bug.cgi?id=198585 5 6 Reviewed by Chris Dumez. 7 8 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 9 * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: 10 * TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSuspendAllMediaPlayback.mm: Added. 11 (TEST): 12 * TestWebKitAPI/Tests/WebKitLegacy/ios/video-with-audio.html: 13 1 14 2019-06-05 Alex Christensen <achristensen@webkit.org> 2 15 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r246118 r246136 826 826 CD78E11D1DB7EA660014A2DE /* FullscreenDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD78E11A1DB7EA360014A2DE /* FullscreenDelegate.mm */; }; 827 827 CD78E11E1DB7EE2A0014A2DE /* FullscreenDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD78E11B1DB7EA360014A2DE /* FullscreenDelegate.html */; }; 828 CD7F89DC22A86CDA00D683AE /* WKWebViewSuspendAllMediaPlayback.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD7F89DB22A86CDA00D683AE /* WKWebViewSuspendAllMediaPlayback.mm */; }; 828 829 CD9E292E1C90C33F000BB800 /* audio-only.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD9E292D1C90C1BA000BB800 /* audio-only.html */; }; 829 830 CDA29B2920FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDA29B2820FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm */; }; … … 2211 2212 CD78E11A1DB7EA360014A2DE /* FullscreenDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FullscreenDelegate.mm; sourceTree = "<group>"; }; 2212 2213 CD78E11B1DB7EA360014A2DE /* FullscreenDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = FullscreenDelegate.html; sourceTree = "<group>"; }; 2214 CD7F89DB22A86CDA00D683AE /* WKWebViewSuspendAllMediaPlayback.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewSuspendAllMediaPlayback.mm; sourceTree = "<group>"; }; 2213 2215 CD89D0381C4EDB2A00040A04 /* WebCoreNSURLSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreNSURLSession.mm; sourceTree = "<group>"; }; 2214 2216 CD9E292B1C90A71F000BB800 /* RequiresUserActionForPlayback.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RequiresUserActionForPlayback.mm; sourceTree = "<group>"; }; … … 2790 2792 37A9DBE7213B4C9300D261A2 /* WKWebViewServerTrustKVC.mm */, 2791 2793 93F56DA81E5F9181003EDE84 /* WKWebViewSnapshot.mm */, 2794 CD7F89DB22A86CDA00D683AE /* WKWebViewSuspendAllMediaPlayback.mm */, 2792 2795 9984FACA1CFFAEEE008D198C /* WKWebViewTextInput.mm */, 2793 2796 ); … … 4560 4563 37A9DBE9213B4C9300D261A2 /* WKWebViewServerTrustKVC.mm in Sources */, 4561 4564 93F56DA91E5F919D003EDE84 /* WKWebViewSnapshot.mm in Sources */, 4565 CD7F89DC22A86CDA00D683AE /* WKWebViewSuspendAllMediaPlayback.mm in Sources */, 4562 4566 9984FACC1CFFAF60008D198C /* WKWebViewTextInput.mm in Sources */, 4563 4567 9C64DC321D76198A004B598E /* YouTubePluginReplacement.cpp in Sources */, -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
r246127 r246136 6266 6266 6267 6267 #endif 6268 6269 TEST(ProcessSwap, SuspendAllMediaPlayback) 6270 { 6271 auto processPoolConfiguration = psonProcessPoolConfiguration(); 6272 auto processPool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]); 6273 6274 auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]); 6275 configuration.get().mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone; 6276 #if TARGET_OS_IPHONE 6277 configuration.get().allowsInlineMediaPlayback = YES; 6278 #endif 6279 [configuration setProcessPool:processPool.get()]; 6280 auto handler = adoptNS([[PSONScheme alloc] init]); 6281 [configuration setURLSchemeHandler:handler.get() forURLScheme:@"PSON"]; 6282 6283 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); 6284 6285 __block bool loaded = false; 6286 [webView performAfterLoading:^{ loaded = true; }]; 6287 [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"pson://www.webkit.org/main.html"]]]; 6288 6289 TestWebKitAPI::Util::run(&loaded); 6290 6291 [webView _suspendAllMediaPlayback]; 6292 6293 __block bool notPlaying = false; 6294 [webView performAfterReceivingMessage:@"not playing" action:^() { notPlaying = true; }]; 6295 [webView synchronouslyLoadTestPageNamed:@"video-with-audio"]; 6296 TestWebKitAPI::Util::run(¬Playing); 6297 } -
trunk/Tools/TestWebKitAPI/Tests/WebKitLegacy/ios/video-with-audio.html
r206325 r246136 18 18 } 19 19 20 function paused() { 21 try { 22 window.webkit.messageHandlers.testHandler.postMessage('paused'); 23 } catch(e) { } 24 } 25 20 26 function notPlaying() { 21 27 try {
Note: See TracChangeset
for help on using the changeset viewer.