WebKit Bugzilla
Attachment 357455 Details for
Bug 192763
: Need a way to stop background audio playback.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Add a settings to stop background audio playback.
stop_bk_audio.patch (text/plain), 7.15 KB, created by
Yongjun Zhang
on 2018-12-17 11:08:19 PST
(
hide
)
Description:
Add a settings to stop background audio playback.
Filename:
MIME Type:
Creator:
Yongjun Zhang
Created:
2018-12-17 11:08:19 PST
Size:
7.15 KB
patch
obsolete
>commit 5f0e6684eafb4e1d811f7749ac7d006c24e00045 >Author: Yongjun Zhang <yongjun_zhang@apple.com> >Date: Fri Dec 14 13:14:07 2018 -0800 > > Need a way to stop background audio playback. > https://bugs.webkit.org/show_bug.cgi?id=192763 > <rdar://problem/46735907> > >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 2ec8741f5c7..ee3248c96ff 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,23 @@ >+2018-12-17 Yongjun Zhang <yongjun_zhang@apple.com> >+ >+ Need a way to stop background audio playback. >+ https://bugs.webkit.org/show_bug.cgi?id=192763 >+ <rdar://problem/45931104> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add a settings (backgroundAudioPlaybackNotPremitted) to disallow background audio playback. The >+ default value is false. >+ >+ No new tests, tested manually and verified audio playback stops on app backgrounding. >+ >+ * Modules/webaudio/AudioContext.cpp: >+ (WebCore::AudioContext::constructCommon): Restrict background playback for audio if >+ backgroundAudioPlaybackNotPremitted is set to true. >+ * html/HTMLMediaElement.cpp: >+ (WebCore::HTMLMediaElement::finishInitialization): Ditto. >+ * page/Settings.yaml: >+ > 2018-12-14 David Kilzer <ddkilzer@apple.com> > > clang-tidy: Fix unnecessary object copies in WebCore/platform/graphics/avfoundation/objc/ >diff --git a/Source/WebCore/Modules/webaudio/AudioContext.cpp b/Source/WebCore/Modules/webaudio/AudioContext.cpp >index c54282ff534..c5eed2b5f76 100644 >--- a/Source/WebCore/Modules/webaudio/AudioContext.cpp >+++ b/Source/WebCore/Modules/webaudio/AudioContext.cpp >@@ -89,6 +89,7 @@ > #endif > > #if PLATFORM(IOS_FAMILY) >+#include "MediaSessionManageriOS.h" > #include "ScriptController.h" > #include "Settings.h" > #endif >@@ -174,6 +175,14 @@ void AudioContext::constructCommon() > #if PLATFORM(COCOA) > addBehaviorRestriction(RequirePageConsentForAudioStartRestriction); > #endif >+#if PLATFORM(IOS_FAMILY) >+ if (document()->settings().backgroundAudioPlaybackNotPermitted()) { >+ if (auto sessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) { >+ sessionManager->addRestriction(PlatformMediaSession::Audio, PlatformMediaSessionManager::BackgroundProcessPlaybackRestricted); >+ sessionManager->addRestriction(PlatformMediaSession::WebAudio, PlatformMediaSessionManager::BackgroundProcessPlaybackRestricted); >+ } >+ } >+#endif > } > > AudioContext::~AudioContext() >diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp >index 0dcc8890506..0abc4f2a1b6 100644 >--- a/Source/WebCore/html/HTMLMediaElement.cpp >+++ b/Source/WebCore/html/HTMLMediaElement.cpp >@@ -539,6 +539,13 @@ void HTMLMediaElement::finishInitialization() > // Relax RequireUserGestureForFullscreen when videoPlaybackRequiresUserGesture and audioPlaybackRequiresUserGesture is not set: > m_mediaSession->removeBehaviorRestriction(MediaElementSession::RequireUserGestureForFullscreen); > } >+ >+ if (document.settings().backgroundAudioPlaybackNotPermitted()) { >+ if (auto sessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) { >+ sessionManager->addRestriction(PlatformMediaSession::Audio, PlatformMediaSessionManager::BackgroundProcessPlaybackRestricted); >+ sessionManager->addRestriction(PlatformMediaSession::WebAudio, PlatformMediaSessionManager::BackgroundProcessPlaybackRestricted); >+ } >+ } > #endif > > #if ENABLE(MEDIA_SESSION) >diff --git a/Source/WebCore/page/Settings.yaml b/Source/WebCore/page/Settings.yaml >index a79719386b3..124fc90a932 100644 >--- a/Source/WebCore/page/Settings.yaml >+++ b/Source/WebCore/page/Settings.yaml >@@ -286,6 +286,8 @@ mediaControlsScaleWithPageZoom: > initial: defaultMediaControlsScaleWithPageZoom > invisibleAutoplayNotPermitted: > initial: false >+backgroundAudioPlaybackNotPermitted: >+ initial: false > passwordEchoEnabled: > initial: false > suppressesIncrementalRendering: >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 9829cc78315..ac878022050 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,17 @@ >+2018-12-17 Yongjun Zhang <yongjun_zhang@apple.com> >+ >+ Need a way to stop background audio playback. >+ https://bugs.webkit.org/show_bug.cgi?id=192763 >+ <rdar://problem/46735907> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Shared/WebPreferences.yaml: >+ * UIProcess/API/Cocoa/WKPreferences.mm: >+ (-[WKPreferences _setBackgroundAudioPlaybackNotPermitted:]): >+ (-[WKPreferences _backgroundAudioPlaybackNotPermitted]): >+ * UIProcess/API/Cocoa/WKPreferencesPrivate.h: Add a property _backgroundAudioPlaybackNotPermitted. >+ > 2018-12-14 Adrian Perez de Castro <aperez@igalia.com> > > [GTK] Unreviewed build fix. >diff --git a/Source/WebKit/Shared/WebPreferences.yaml b/Source/WebKit/Shared/WebPreferences.yaml >index 077bde35ea5..30cd7ad7fc7 100644 >--- a/Source/WebKit/Shared/WebPreferences.yaml >+++ b/Source/WebKit/Shared/WebPreferences.yaml >@@ -258,6 +258,10 @@ InvisibleAutoplayNotPermitted: > type: bool > defaultValue: DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED > >+BackgroundAudioPlaybackNotPermitted: >+ type: bool >+ defaultValue: false >+ > MediaDataLoadsAutomatically: > type: bool > defaultValue: DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm >index 3ac5b5c8601..c9180c0ce45 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm >@@ -829,6 +829,16 @@ - (BOOL)_shouldIgnoreMetaViewport > return _preferences->shouldIgnoreMetaViewport(); > } > >+- (void)_setBackgroundAudioPlaybackNotPermitted:(BOOL)flag >+{ >+ _preferences->setBackgroundAudioPlaybackNotPermitted(flag); >+} >+ >+- (BOOL)_backgroundAudioPlaybackNotPermitted >+{ >+ return _preferences->backgroundAudioPlaybackNotPermitted(); >+} >+ > #if PLATFORM(MAC) > - (void)_setJavaEnabledForLocalFiles:(BOOL)enabled > { >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h >index af64c612382..c34bb85c343 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h >@@ -151,6 +151,7 @@ typedef NS_ENUM(NSInteger, _WKEditableLinkBehavior) { > @property (nonatomic, setter=_setVideoQualityIncludesDisplayCompositingEnabled:) BOOL _videoQualityIncludesDisplayCompositingEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); > @property (nonatomic, setter=_setWebAnimationsCSSIntegrationEnabled:) BOOL _webAnimationsCSSIntegrationEnabled WK_API_AVAILABLE(macosx(10.14), ios(WK_IOS_TBA)); > @property (nonatomic, setter=_setDeviceOrientationEventEnabled:) BOOL _deviceOrientationEventEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); >+@property (nonatomic, setter=_setBackgroundAudioPlaybackNotPermitted:) BOOL _backgroundAudioPlaybackNotPermitted WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); > > #if !TARGET_OS_IPHONE > @property (nonatomic, setter=_setWebGLEnabled:) BOOL _webGLEnabled WK_API_AVAILABLE(macosx(10.13.4));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192763
:
357455