Changeset 152234 in webkit


Ignore:
Timestamp:
Jul 1, 2013 11:40:27 AM (11 years ago)
Author:
jer.noble@apple.com
Message:

Audio in apps which embed WebViews is corrupted.
https://bugs.webkit.org/show_bug.cgi?id=118163

Reviewed by Maciej Stachowiak.

Source/WebCore:

Add a preference, which defaults to off, which controls whether the
AudioSessionManager will switch to a large audio buffer setting for
power-savings during <video> playback.

  • WebCore.exp.in:
  • page/Settings.cpp:

(WebCore::Settings::setLowPowerVideoAudioBufferSizeEnabled): Added. Simple setter.

  • page/Settings.h:

(WebCore::Settings::lowPowerVideoAudioBufferSizeEnabled): Added. Simple getter.

  • platform/audio/mac/AudioSessionManagerMac.cpp:

(AudioSessionManager::updateSessionState): Only set the large audio buffer

size if lowPowerVideoAudioBufferSize is enabled.

Source/WebKit/mac:

Expose the WebCore lowPowerVideoAudioBufferSizeEnabled setting to WebKit clients.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences lowPowerVideoAudioBufferSizeEnabled]):
(-[WebPreferences setLowPowerVideoAudioBufferSizeEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Expose the WebCore lowPowerVideoAudioBufferSizeEnabled setting to WebKit2 clients.

  • Shared/WebPreferencesStore.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Location:
trunk/Source
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r152232 r152234  
     12013-06-27  Jer Noble  <jer.noble@apple.com>
     2
     3        Audio in apps which embed WebViews is corrupted.
     4        https://bugs.webkit.org/show_bug.cgi?id=118163
     5
     6        Reviewed by Maciej Stachowiak.
     7
     8        Add a preference, which defaults to off, which controls whether the
     9        AudioSessionManager will switch to a large audio buffer setting for
     10        power-savings during <video> playback.
     11
     12        * WebCore.exp.in:
     13        * page/Settings.cpp:
     14        (WebCore::Settings::setLowPowerVideoAudioBufferSizeEnabled): Added.  Simple setter.
     15        * page/Settings.h:
     16        (WebCore::Settings::lowPowerVideoAudioBufferSizeEnabled): Added.  Simple getter.
     17        * platform/audio/mac/AudioSessionManagerMac.cpp:
     18        (AudioSessionManager::updateSessionState): Only set the large audio buffer
     19            size if lowPowerVideoAudioBufferSize is enabled.
     20
    1212013-07-01  Brian Holt  <brian.holt@samsung.com>
    222
  • trunk/Source/WebCore/WebCore.exp.in

    r152083 r152234  
    11201120__ZN7WebCore8Settings33setAggressiveTileRetentionEnabledEb
    11211121__ZN7WebCore8Settings37setScrollingPerformanceLoggingEnabledEb
     1122__ZN7WebCore8Settings38setLowPowerVideoAudioBufferSizeEnabledEb
    11221123__ZN7WebCore8Settings42setHiddenPageCSSAnimationSuspensionEnabledEb
    11231124__ZN7WebCore8Settings45setShouldRespectPriorityInCSSAttributeSettersEb
  • trunk/Source/WebCore/page/Settings.cpp

    r151642 r152234  
    9090   
    9191bool Settings::gShouldRespectPriorityInCSSAttributeSetters = false;
     92bool Settings::gLowPowerVideoAudioBufferSizeEnabled = false;
    9293
    9394// NOTEs
     
    612613#endif
    613614
     615void Settings::setLowPowerVideoAudioBufferSizeEnabled(bool flag)
     616{
     617    gLowPowerVideoAudioBufferSizeEnabled = flag;
     618}
     619
    614620} // namespace WebCore
  • trunk/Source/WebCore/page/Settings.h

    r151642 r152234  
    259259#endif
    260260
     261        static bool lowPowerVideoAudioBufferSizeEnabled() { return gLowPowerVideoAudioBufferSizeEnabled; }
     262        static void setLowPowerVideoAudioBufferSizeEnabled(bool);
     263
    261264    private:
    262265        explicit Settings(Page*);
     
    316319        bool m_hiddenPageCSSAnimationSuspensionEnabled : 1;
    317320#endif
    318 
    319321        static double gDefaultMinDOMTimerInterval;
    320322        static double gDefaultDOMTimerAlignmentInterval;
     
    340342
    341343        static double gHiddenPageDOMTimerAlignmentInterval;
     344
     345        static bool gLowPowerVideoAudioBufferSizeEnabled;
    342346    };
    343347
  • trunk/Source/WebCore/platform/audio/mac/AudioSessionManagerMac.cpp

    r151606 r152234  
    3030
    3131#include "Logging.h"
     32#include "Settings.h"
    3233
    3334using namespace WebCore;
     
    4546    // causes media LayoutTests to fail on 10.8.
    4647#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
    47     else if (has(Video) || has(Audio))
     48    else if ((has(Video) || has(Audio)) && Settings::lowPowerVideoAudioBufferSizeEnabled())
    4849        AudioSession::sharedSession().setPreferredBufferSize(kLowPowerVideoBufferSize);
    4950#endif
  • trunk/Source/WebKit/mac/ChangeLog

    r152218 r152234  
     12013-06-27  Jer Noble  <jer.noble@apple.com>
     2
     3        Audio in apps which embed WebViews is corrupted.
     4        https://bugs.webkit.org/show_bug.cgi?id=118163
     5
     6        Reviewed by Maciej Stachowiak.
     7
     8        Expose the WebCore lowPowerVideoAudioBufferSizeEnabled setting to WebKit clients.
     9
     10        * WebView/WebPreferenceKeysPrivate.h:
     11        * WebView/WebPreferences.mm:
     12        (+[WebPreferences initialize]):
     13        (-[WebPreferences lowPowerVideoAudioBufferSizeEnabled]):
     14        (-[WebPreferences setLowPowerVideoAudioBufferSizeEnabled:]):
     15        * WebView/WebPreferencesPrivate.h:
     16        * WebView/WebView.mm:
     17        (-[WebView _preferencesChanged:]):
     18
    1192013-07-01  Kangil Han  <kangil.han@samsung.com>
    220
  • trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r151491 r152234  
    133133#define WebKitHiddenPageDOMTimerThrottlingEnabledPreferenceKey @"WebKitHiddenPageDOMTimerThrottlingEnabled"
    134134#define WebKitHiddenPageCSSAnimationSuspensionEnabledPreferenceKey @"WebKitHiddenPageCSSAnimationSuspensionEnabled"
     135#define WebKitLowPowerVideoAudioBufferSizeEnabledPreferenceKey @"WebKitLowPowerVideoAudioBufferSizeEnabled"
    135136
    136137// These are private both because callers should be using the cover methods and because the
  • trunk/Source/WebKit/mac/WebView/WebPreferences.mm

    r151491 r152234  
    419419        [NSNumber numberWithBool:NO], WebKitHiddenPageDOMTimerThrottlingEnabledPreferenceKey,
    420420        [NSNumber numberWithBool:NO], WebKitHiddenPageCSSAnimationSuspensionEnabledPreferenceKey,
     421        [NSNumber numberWithBool:NO], WebKitLowPowerVideoAudioBufferSizeEnabledPreferenceKey,
    421422        nil];
    422423
     
    18301831}
    18311832
     1833- (BOOL)lowPowerVideoAudioBufferSizeEnabled
     1834{
     1835    return [self _boolValueForKey:WebKitLowPowerVideoAudioBufferSizeEnabledPreferenceKey];
     1836}
     1837
     1838- (void)setLowPowerVideoAudioBufferSizeEnabled:(BOOL)enabled
     1839{
     1840    [self _setBoolValue:enabled forKey:WebKitLowPowerVideoAudioBufferSizeEnabledPreferenceKey];
     1841}
     1842
    18321843@end
    18331844
  • trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h

    r151491 r152234  
    336336- (void)setHiddenPageCSSAnimationSuspensionEnabled:(BOOL)flag;
    337337
     338- (BOOL)lowPowerVideoAudioBufferSizeEnabled;
     339- (void)setLowPowerVideoAudioBufferSizeEnabled:(BOOL)enabled;
     340
     341
    338342@end
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r151926 r152234  
    15491549    settings->setNeedsDidFinishLoadOrderQuirk(needsDidFinishLoadOrderQuirk());
    15501550    settings->setDiagnosticLoggingEnabled([preferences diagnosticLoggingEnabled]);
     1551    settings->setLowPowerVideoAudioBufferSizeEnabled([preferences lowPowerVideoAudioBufferSizeEnabled]);
    15511552
    15521553    switch ([preferences storageBlockingPolicy]) {
  • trunk/Source/WebKit2/ChangeLog

    r152230 r152234  
     12013-06-27  Jer Noble  <jer.noble@apple.com>
     2
     3        Audio in apps which embed WebViews is corrupted.
     4        https://bugs.webkit.org/show_bug.cgi?id=118163
     5
     6        Reviewed by Maciej Stachowiak.
     7
     8        Expose the WebCore lowPowerVideoAudioBufferSizeEnabled setting to WebKit2 clients.
     9
     10        * Shared/WebPreferencesStore.h:
     11        * WebProcess/WebPage/WebPage.cpp:
     12        (WebKit::WebPage::updatePreferences):
     13
    1142013-07-01  Sam Weinig  <sam@webkit.org>
    215
  • trunk/Source/WebKit2/Shared/WebPreferencesStore.h

    r150950 r152234  
    161161    macro(HiddenPageDOMTimerThrottlingEnabled, hiddenPageDOMTimerThrottlingEnabled, Bool, bool, DEFAULT_HIDDEN_PAGE_DOM_TIMER_THROTTLING_ENABLED) \
    162162    macro(HiddenPageCSSAnimationSuspensionEnabled, hiddenPageCSSAnimationSuspensionEnabled, Bool, bool, DEFAULT_HIDDEN_PAGE_CSS_ANIMATION_SUSPENSION_ENABLED) \
     163    macro(LowPowerVideoAudioBufferSizeEnabled, lowPowerVideoAudioBufferSizeEnabled, Bool, bool, false) \
    163164    \
    164165
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r152230 r152234  
    25732573#endif
    25742574
     2575    settings->setLowPowerVideoAudioBufferSizeEnabled(store.getBoolValueForKey(WebPreferencesKey::lowPowerVideoAudioBufferSizeEnabledKey()));
     2576
    25752577    platformPreferencesDidChange(store);
    25762578
Note: See TracChangeset for help on using the changeset viewer.