Changeset 181753 in webkit


Ignore:
Timestamp:
Mar 19, 2015, 12:22:22 PM (10 years ago)
Author:
Chris Dumez
Message:

Clean up DOMTimer related settings
https://bugs.webkit.org/show_bug.cgi?id=142837

Reviewed by Darin Adler.

Source/WebCore:

Clean up DOMTimer related settings:

  • Make default minimum timer interval 4ms instead of 10ms as all ports were setting it to 4ms and the specifications says 4ms.
  • Get rid of setters for default DOMTimer interval values as they are not set anymore.
  • Move default DOMTimer interval values from Settings to DOMTimer as those are global (not per-page) and not really settings.
  • Stop using abbreviations in the names (e.g. min -> minimum).
  • Move DOMTimer settings members from Page to Settings. There is no reason for those to be stored on the Page. The getters were private so call-sites had to go via Settings anyway. Also, call-sites already had to do a null check on the page to get the settings. It seems unfortunate for the settings to do another null-check on the page for retrieving the setting value from the page.
  • Inline the DOMTimer settings getters as these are trivial.
  • dom/Document.cpp:

(WebCore::Document::minimumTimerInterval):
(WebCore::Document::timerAlignmentInterval):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::minimumTimerInterval):
(WebCore::ScriptExecutionContext::timerAlignmentInterval):

  • page/DOMTimer.h:
  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::setTimerThrottlingEnabled):
(WebCore::Page::setMinimumTimerInterval): Deleted.
(WebCore::Page::minimumTimerInterval): Deleted.

  • page/Page.h:

(WebCore::Page::timerAlignmentInterval): Deleted.

  • page/Settings.cpp:

(WebCore::Settings::Settings):
(WebCore::Settings::setMinimumDOMTimerInterval):
(WebCore::Settings::setDOMTimerAlignmentInterval):
(WebCore::Settings::setHiddenPageDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::hiddenPageDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::setDefaultMinDOMTimerInterval): Deleted.
(WebCore::Settings::defaultMinDOMTimerInterval): Deleted.
(WebCore::Settings::setMinDOMTimerInterval): Deleted.
(WebCore::Settings::minDOMTimerInterval): Deleted.
(WebCore::Settings::setDefaultDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::defaultDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::domTimerAlignmentInterval): Deleted.

  • page/Settings.h:

(WebCore::Settings::minimumDOMTimerInterval):
(WebCore::Settings::domTimerAlignmentInterval):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setMinimumTimerInterval):

Source/WebKit/mac:

Stop setting the DOMTimers' default minimum interval to 4ms as this
is now the default.

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKit/win:

Stop setting the DOMTimers' default minimum interval to 4ms as this
is now the default.

  • WebView.cpp:

(WebView::initWithFrame):
(WebView::defaultMinimumTimerInterval):

Source/WebKit2:

Stop setting the DOMTimers' default minimum interval to 4ms as this
is now the default.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

Location:
trunk/Source
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r181744 r181753  
     12015-03-19  Chris Dumez  <cdumez@apple.com>
     2
     3        Clean up DOMTimer related settings
     4        https://bugs.webkit.org/show_bug.cgi?id=142837
     5
     6        Reviewed by Darin Adler.
     7
     8        Clean up DOMTimer related settings:
     9        - Make default minimum timer interval 4ms instead of 10ms as all ports
     10          were setting it to 4ms and the specifications says 4ms.
     11        - Get rid of setters for default DOMTimer interval values as they are
     12          not set anymore.
     13        - Move default DOMTimer interval values from Settings to DOMTimer as
     14          those are global (not per-page) and not really settings.
     15        - Stop using abbreviations in the names (e.g. min -> minimum).
     16        - Move DOMTimer settings members from Page to Settings. There is no
     17          reason for those to be stored on the Page. The getters were private
     18          so call-sites had to go via Settings anyway. Also, call-sites already
     19          had to do a null check on the page to get the settings. It seems
     20          unfortunate for the settings to do another null-check on the page for
     21          retrieving the setting value from the page.
     22        - Inline the DOMTimer settings getters as these are trivial.
     23
     24        * dom/Document.cpp:
     25        (WebCore::Document::minimumTimerInterval):
     26        (WebCore::Document::timerAlignmentInterval):
     27        * dom/ScriptExecutionContext.cpp:
     28        (WebCore::ScriptExecutionContext::minimumTimerInterval):
     29        (WebCore::ScriptExecutionContext::timerAlignmentInterval):
     30        * page/DOMTimer.h:
     31        * page/Page.cpp:
     32        (WebCore::Page::Page):
     33        (WebCore::Page::setTimerThrottlingEnabled):
     34        (WebCore::Page::setMinimumTimerInterval): Deleted.
     35        (WebCore::Page::minimumTimerInterval): Deleted.
     36        * page/Page.h:
     37        (WebCore::Page::timerAlignmentInterval): Deleted.
     38        * page/Settings.cpp:
     39        (WebCore::Settings::Settings):
     40        (WebCore::Settings::setMinimumDOMTimerInterval):
     41        (WebCore::Settings::setDOMTimerAlignmentInterval):
     42        (WebCore::Settings::setHiddenPageDOMTimerAlignmentInterval): Deleted.
     43        (WebCore::Settings::hiddenPageDOMTimerAlignmentInterval): Deleted.
     44        (WebCore::Settings::setDefaultMinDOMTimerInterval): Deleted.
     45        (WebCore::Settings::defaultMinDOMTimerInterval): Deleted.
     46        (WebCore::Settings::setMinDOMTimerInterval): Deleted.
     47        (WebCore::Settings::minDOMTimerInterval): Deleted.
     48        (WebCore::Settings::setDefaultDOMTimerAlignmentInterval): Deleted.
     49        (WebCore::Settings::defaultDOMTimerAlignmentInterval): Deleted.
     50        (WebCore::Settings::domTimerAlignmentInterval): Deleted.
     51        * page/Settings.h:
     52        (WebCore::Settings::minimumDOMTimerInterval):
     53        (WebCore::Settings::domTimerAlignmentInterval):
     54        * testing/InternalSettings.cpp:
     55        (WebCore::InternalSettings::Backup::Backup):
     56        (WebCore::InternalSettings::Backup::restoreTo):
     57        (WebCore::InternalSettings::setMinimumTimerInterval):
     58
    1592015-03-19  Carlos Garcia Campos  <cgarcia@igalia.com>
    260
  • trunk/Source/WebCore/dom/Document.cpp

    r181615 r181753  
    27292729double Document::minimumTimerInterval() const
    27302730{
    2731     Page* p = page();
    2732     if (!p)
     2731    Page* page = this->page();
     2732    if (!page)
    27332733        return ScriptExecutionContext::minimumTimerInterval();
    2734     return p->settings().minDOMTimerInterval();
     2734    return page->settings().minimumDOMTimerInterval();
    27352735}
    27362736
    27372737double Document::timerAlignmentInterval() const
    27382738{
    2739     Page* p = page();
    2740     if (!p)
     2739    Page* page = this->page();
     2740    if (!page)
    27412741        return ScriptExecutionContext::timerAlignmentInterval();
    2742     return p->settings().domTimerAlignmentInterval();
     2742    return page->settings().domTimerAlignmentInterval();
    27432743}
    27442744
  • trunk/Source/WebCore/dom/ScriptExecutionContext.cpp

    r178575 r181753  
    435435    // subclass, and provide a way to enumerate a Document's dedicated
    436436    // workers so we can update them all.
    437     return Settings::defaultMinDOMTimerInterval();
     437    return DOMTimer::defaultMinimumInterval();
    438438}
    439439
     
    446446double ScriptExecutionContext::timerAlignmentInterval() const
    447447{
    448     return Settings::defaultDOMTimerAlignmentInterval();
     448    return DOMTimer::defaultAlignmentInterval();
    449449}
    450450
  • trunk/Source/WebCore/page/DOMTimer.h

    r180801 r181753  
    4848    public:
    4949        virtual ~DOMTimer();
     50
     51        static double defaultMinimumInterval() { return 0.004; } // 4 milliseconds.
     52        static double defaultAlignmentInterval() { return 0; }
     53        static double hiddenPageAlignmentInterval() { return 1.0; } // 1 second.
    5054
    5155        // Creates a new timer owned by specified ScriptExecutionContext, starts it
  • trunk/Source/WebCore/page/Page.cpp

    r181442 r181753  
    188188    , m_viewMode(ViewModeWindowed)
    189189#endif // ENABLE(VIEW_MODE_CSS_MEDIA)
    190     , m_minimumTimerInterval(Settings::defaultMinDOMTimerInterval())
    191190    , m_timerThrottlingEnabled(false)
    192     , m_timerAlignmentInterval(Settings::defaultDOMTimerAlignmentInterval())
    193191    , m_isEditable(false)
    194192    , m_isPrerender(false)
     
    11291127}
    11301128
    1131 void Page::setMinimumTimerInterval(double minimumTimerInterval)
    1132 {
    1133     double oldTimerInterval = m_minimumTimerInterval;
    1134     m_minimumTimerInterval = minimumTimerInterval;
    1135     for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNextWithWrap(false)) {
    1136         if (frame->document())
    1137             frame->document()->adjustMinimumTimerInterval(oldTimerInterval);
    1138     }
    1139 }
    1140 
    1141 double Page::minimumTimerInterval() const
    1142 {
    1143     return m_minimumTimerInterval;
    1144 }
    1145 
    11461129void Page::hiddenPageDOMTimerThrottlingStateChanged()
    11471130{
     
    11601143
    11611144    m_timerThrottlingEnabled = enabled;
    1162     m_timerAlignmentInterval = enabled ? Settings::hiddenPageDOMTimerAlignmentInterval() : Settings::defaultDOMTimerAlignmentInterval();
    1163    
    1164     for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNextWithWrap(false)) {
     1145    m_settings->setDOMTimerAlignmentInterval(enabled ? DOMTimer::hiddenPageAlignmentInterval() : DOMTimer::defaultAlignmentInterval());
     1146   
     1147    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
    11651148        if (frame->document())
    11661149            frame->document()->didChangeTimerAlignmentInterval();
  • trunk/Source/WebCore/page/Page.h

    r181423 r181753  
    455455    MediaCanStartListener* takeAnyMediaCanStartListener();
    456456
    457     void setMinimumTimerInterval(double);
    458     double minimumTimerInterval() const;
    459 
    460     double timerAlignmentInterval() const { return m_timerAlignmentInterval; }
    461 
    462457    Vector<Ref<PluginViewBase>> pluginViews();
    463458
     
    547542#endif // ENABLE(VIEW_MODE_CSS_MEDIA)
    548543
    549     double m_minimumTimerInterval;
    550 
    551544    bool m_timerThrottlingEnabled;
    552     double m_timerAlignmentInterval;
    553545
    554546    bool m_isEditable;
  • trunk/Source/WebCore/page/Settings.cpp

    r180765 r181753  
    7070}
    7171
    72 double Settings::gDefaultMinDOMTimerInterval = 0.010; // 10 milliseconds
    73 double Settings::gDefaultDOMTimerAlignmentInterval = 0;
    74 double Settings::gHiddenPageDOMTimerAlignmentInterval = 1.0;
    75 
    7672#if USE(AVFOUNDATION)
    7773bool Settings::gAVFoundationEnabled = false;
     
    164160    , m_storageBlockingPolicy(SecurityOrigin::AllowAllStorage)
    165161    , m_layoutInterval(layoutScheduleThreshold)
     162    , m_minimumDOMTimerInterval(DOMTimer::defaultMinimumInterval())
     163    , m_domTimerAlignmentInterval(DOMTimer::defaultAlignmentInterval())
    166164#if ENABLE(TEXT_AUTOSIZING)
    167165    , m_textAutosizingFontScaleFactor(1)
     
    216214SETTINGS_SETTER_BODIES
    217215
    218 void Settings::setHiddenPageDOMTimerAlignmentInterval(double hiddenPageDOMTimerAlignmentinterval)
    219 {
    220     gHiddenPageDOMTimerAlignmentInterval = hiddenPageDOMTimerAlignmentinterval;
    221 }
    222 
    223 double Settings::hiddenPageDOMTimerAlignmentInterval()
    224 {
    225     return gHiddenPageDOMTimerAlignmentInterval;
    226 }
    227 
    228216#if !PLATFORM(COCOA)
    229217void Settings::initializeDefaultFontFamilies()
     
    451439}
    452440
    453 void Settings::setDefaultMinDOMTimerInterval(double interval)
    454 {
    455     gDefaultMinDOMTimerInterval = interval;
    456 }
    457 
    458 double Settings::defaultMinDOMTimerInterval()
    459 {
    460     return gDefaultMinDOMTimerInterval;
    461 }
    462 
    463 void Settings::setMinDOMTimerInterval(double interval)
    464 {
    465     if (m_page)
    466         m_page->setMinimumTimerInterval(interval);
    467 }
    468 
    469 double Settings::minDOMTimerInterval()
    470 {
     441void Settings::setMinimumDOMTimerInterval(double interval)
     442{
     443    double oldTimerInterval = m_minimumDOMTimerInterval;
     444    m_minimumDOMTimerInterval = interval;
     445
    471446    if (!m_page)
    472         return 0;
    473     return m_page->minimumTimerInterval();
    474 }
    475 
    476 void Settings::setDefaultDOMTimerAlignmentInterval(double interval)
    477 {
    478     gDefaultDOMTimerAlignmentInterval = interval;
    479 }
    480 
    481 double Settings::defaultDOMTimerAlignmentInterval()
    482 {
    483     return gDefaultDOMTimerAlignmentInterval;
    484 }
    485 
    486 double Settings::domTimerAlignmentInterval() const
    487 {
    488     if (!m_page)
    489         return 0;
    490     return m_page->timerAlignmentInterval();
     447        return;
     448
     449    for (Frame* frame = &m_page->mainFrame(); frame; frame = frame->tree().traverseNext()) {
     450        if (frame->document())
     451            frame->document()->adjustMinimumTimerInterval(oldTimerInterval);
     452    }
     453}
     454
     455void Settings::setDOMTimerAlignmentInterval(double alignmentInterval)
     456{
     457    m_domTimerAlignmentInterval = alignmentInterval;
    491458}
    492459
  • trunk/Source/WebCore/page/Settings.h

    r180765 r181753  
    164164    bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; }
    165165
    166     WEBCORE_EXPORT static void setDefaultMinDOMTimerInterval(double); // Interval specified in seconds.
    167     WEBCORE_EXPORT static double defaultMinDOMTimerInterval();
    168        
    169     static void setHiddenPageDOMTimerAlignmentInterval(double); // Interval specified in seconds.
    170     static double hiddenPageDOMTimerAlignmentInterval();
    171 
    172     WEBCORE_EXPORT void setMinDOMTimerInterval(double); // Per-page; initialized to default value.
    173     WEBCORE_EXPORT double minDOMTimerInterval();
    174 
    175     static void setDefaultDOMTimerAlignmentInterval(double);
    176     WEBCORE_EXPORT static double defaultDOMTimerAlignmentInterval();
    177 
    178     double domTimerAlignmentInterval() const;
     166    WEBCORE_EXPORT void setMinimumDOMTimerInterval(double); // Initialized to DOMTimer::defaultMinimumInterval().
     167    WEBCORE_EXPORT double minimumDOMTimerInterval() const { return m_minimumDOMTimerInterval; }
     168
     169    void setDOMTimerAlignmentInterval(double);
     170    double domTimerAlignmentInterval() const { return m_domTimerAlignmentInterval; }
    179171
    180172    WEBCORE_EXPORT void setLayoutInterval(std::chrono::milliseconds);
     
    284276    SecurityOrigin::StorageBlockingPolicy m_storageBlockingPolicy;
    285277    std::chrono::milliseconds m_layoutInterval;
     278    double m_minimumDOMTimerInterval;
     279    double m_domTimerAlignmentInterval;
     280
    286281#if ENABLE(TEXT_AUTOSIZING)
    287282    float m_textAutosizingFontScaleFactor;
     
    321316    bool m_fontFallbackPrefersPictographs : 1;
    322317
    323     static double gDefaultMinDOMTimerInterval;
    324     static double gDefaultDOMTimerAlignmentInterval;
    325 
    326318#if USE(AVFOUNDATION)
    327319    WEBCORE_EXPORT static bool gAVFoundationEnabled;
     
    350342#endif
    351343
    352     static double gHiddenPageDOMTimerAlignmentInterval;
    353 
    354344    static bool gLowPowerVideoAudioBufferSizeEnabled;
    355345};
  • trunk/Source/WebCore/testing/InternalSettings.cpp

    r181423 r181753  
    7979    , m_langAttributeAwareFormControlUIEnabled(RuntimeEnabledFeatures::sharedFeatures().langAttributeAwareFormControlUIEnabled())
    8080    , m_imagesEnabled(settings.areImagesEnabled())
    81     , m_minimumTimerInterval(settings.minDOMTimerInterval())
     81    , m_minimumTimerInterval(settings.minimumDOMTimerInterval())
    8282#if ENABLE(VIDEO_TRACK)
    8383    , m_shouldDisplaySubtitles(settings.shouldDisplaySubtitles())
     
    146146    RuntimeEnabledFeatures::sharedFeatures().setLangAttributeAwareFormControlUIEnabled(m_langAttributeAwareFormControlUIEnabled);
    147147    settings.setImagesEnabled(m_imagesEnabled);
    148     settings.setMinDOMTimerInterval(m_minimumTimerInterval);
     148    settings.setMinimumDOMTimerInterval(m_minimumTimerInterval);
    149149#if ENABLE(VIDEO_TRACK)
    150150    settings.setShouldDisplaySubtitles(m_shouldDisplaySubtitles);
     
    451451{
    452452    InternalSettingsGuardForSettings();
    453     settings()->setMinDOMTimerInterval(intervalInSeconds);
     453    settings()->setMinimumDOMTimerInterval(intervalInSeconds);
    454454}
    455455
  • trunk/Source/WebKit/mac/ChangeLog

    r181686 r181753  
     12015-03-19  Chris Dumez  <cdumez@apple.com>
     2
     3        Clean up DOMTimer related settings
     4        https://bugs.webkit.org/show_bug.cgi?id=142837
     5
     6        Reviewed by Darin Adler.
     7
     8        Stop setting the DOMTimers' default minimum interval to 4ms as this
     9        is now the default.
     10
     11        * WebView/WebView.mm:
     12        (-[WebView _commonInitializationWithFrameName:groupName:]):
     13
    1142015-03-17  Conrad Shultz  <conrad_shultz@apple.com>
    215
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r180963 r181753  
    927927#endif
    928928       
    929         Settings::setDefaultMinDOMTimerInterval(0.004);
    930        
    931929        Settings::setShouldRespectPriorityInCSSAttributeSetters(shouldRespectPriorityInCSSAttributeSetters());
    932930
  • trunk/Source/WebKit/win/ChangeLog

    r181562 r181753  
     12015-03-19  Chris Dumez  <cdumez@apple.com>
     2
     3        Clean up DOMTimer related settings
     4        https://bugs.webkit.org/show_bug.cgi?id=142837
     5
     6        Reviewed by Darin Adler.
     7
     8        Stop setting the DOMTimers' default minimum interval to 4ms as this
     9        is now the default.
     10
     11        * WebView.cpp:
     12        (WebView::initWithFrame):
     13        (WebView::defaultMinimumTimerInterval):
     14
    1152015-03-16  Conrad Shultz  <conrad_shultz@apple.com>
    216
  • trunk/Source/WebKit/win/WebView.cpp

    r181562 r181753  
    27892789        WebKitInitializeWebDatabasesIfNecessary();
    27902790        WebKitSetApplicationCachePathIfNecessary();
    2791         Settings::setDefaultMinDOMTimerInterval(0.004);
    27922791
    27932792        didOneTimeInitialization = true;
     
    68246823    if (!interval)
    68256824        return E_POINTER;
    6826     *interval = Settings::defaultMinDOMTimerInterval();
     6825    *interval = DOMTimer::defaultMinimumInterval();
    68276826    return S_OK;
    68286827}
     
    68306829HRESULT WebView::setMinimumTimerInterval(double interval)
    68316830{
    6832     page()->settings().setMinDOMTimerInterval(interval);
     6831    page()->settings().setMinimumDOMTimerInterval(interval);
    68336832    return S_OK;
    68346833}
  • trunk/Source/WebKit2/ChangeLog

    r181734 r181753  
     12015-03-19  Chris Dumez  <cdumez@apple.com>
     2
     3        Clean up DOMTimer related settings
     4        https://bugs.webkit.org/show_bug.cgi?id=142837
     5
     6        Reviewed by Darin Adler.
     7
     8        Stop setting the DOMTimers' default minimum interval to 4ms as this
     9        is now the default.
     10
     11        * WebProcess/WebPage/WebPage.cpp:
     12        (WebKit::WebPage::WebPage):
     13
    1142015-03-19  Chris Dumez  <cdumez@apple.com>
    215
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r181584 r181753  
    344344{
    345345    ASSERT(m_pageID);
    346     // FIXME: This is a non-ideal location for this Setting and
    347     // 4ms should be adopted project-wide now, https://bugs.webkit.org/show_bug.cgi?id=61214
    348     Settings::setDefaultMinDOMTimerInterval(0.004);
    349346
    350347    m_pageGroup = WebProcess::singleton().webPageGroup(parameters.pageGroupData);
Note: See TracChangeset for help on using the changeset viewer.