Changeset 94380 in webkit


Ignore:
Timestamp:
Sep 1, 2011 6:35:10 PM (13 years ago)
Author:
gyuyoung.kim@samsung.com
Message:

[EFL] Allow controlling minimum DOMTimer interval on a per-page basis
https://bugs.webkit.org/show_bug.cgi?id=67012

Reviewed by Kenneth Russell.

Set default minimum DOMTimer interval to 4ms instead of 10ms. Because, 4ms is known
to better minimum value for performance. Mac, android, chromium and window ports already
use 4ms instead of 10ms.

It is desirable to be able to change the minimum DOMTimer interval on per-page basis
in order to avoid consuming excessive CPU and battery life on mobile devices. In addition,
other ports have already used this setting by means of Bug 54312.

  • ewk/ewk_main.cpp:

(_ewk_init_body):

  • ewk/ewk_settings.cpp:

(ewk_settings_default_timer_interval_get):

  • ewk/ewk_settings.h:
  • ewk/ewk_view.cpp:

(_ewk_view_priv_new):
(ewk_view_setting_minimum_timer_interval_set):
(ewk_view_setting_minimum_timer_interval_get):

  • ewk/ewk_view.h:
Location:
trunk/Source/WebKit/efl
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/efl/ChangeLog

    r94378 r94380  
     12011-09-01  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
     2
     3        [EFL] Allow controlling minimum DOMTimer interval on a per-page basis
     4        https://bugs.webkit.org/show_bug.cgi?id=67012
     5
     6        Reviewed by Kenneth Russell.
     7
     8        Set default minimum DOMTimer interval to 4ms instead of 10ms. Because, 4ms is known
     9        to better minimum value for performance. Mac, android, chromium and window ports already
     10        use 4ms instead of 10ms.
     11
     12        It is desirable to be able to change the minimum DOMTimer interval on per-page basis
     13        in order to avoid consuming excessive CPU and battery life on mobile devices. In addition,
     14        other ports have already used this setting by means of Bug 54312.
     15
     16        * ewk/ewk_main.cpp:
     17        (_ewk_init_body):
     18        * ewk/ewk_settings.cpp:
     19        (ewk_settings_default_timer_interval_get):
     20        * ewk/ewk_settings.h:
     21        * ewk/ewk_view.cpp:
     22        (_ewk_view_priv_new):
     23        (ewk_view_setting_minimum_timer_interval_set):
     24        (ewk_view_setting_minimum_timer_interval_get):
     25        * ewk/ewk_view.h:
     26
    1272011-09-01  KwangHyuk Kim  <hyuki.kim@samsung.com>
    228
  • trunk/Source/WebKit/efl/ewk/ewk_main.cpp

    r92473 r94380  
    162162    WebCore::ScriptController::initializeThreading();
    163163    WebCore::InitializeLoggingChannelsIfNecessary();
     164    WebCore::Settings::setDefaultMinDOMTimerInterval(0.004);
    164165
    165166    // Page cache capacity (in pages). Comment from Mac port:
  • trunk/Source/WebKit/efl/ewk/ewk_settings.cpp

    r92473 r94380  
    279279#endif
    280280}
     281
     282double ewk_settings_default_timer_interval_get(void)
     283{
     284    return WebCore::Settings::defaultMinDOMTimerInterval();
     285}
  • trunk/Source/WebKit/efl/ewk/ewk_settings.h

    r92473 r94380  
    195195EAPI void             ewk_settings_repaint_throttling_set(double deferred_repaint_delay, double initial_deferred_repaint_delay_during_loading, double max_deferred_repaint_delay_during_loading, double deferred_repaint_delay_increment_during_loading);
    196196
     197/**
     198 * Gets the default interval for DOMTimers on all pages.
     199 *
     200 * DOMTimer processes javascript function registered by setInterval() based on interval value.
     201 *
     202 * @return default minimum interval for DOMTimers
     203 */
     204EAPI double           ewk_settings_default_timer_interval_get(void);
     205
    197206#ifdef __cplusplus
    198207}
  • trunk/Source/WebKit/efl/ewk/ewk_view.cpp

    r94163 r94380  
    5757#include <eina_safety_checks.h>
    5858#include <inttypes.h>
     59#include <limits>
     60#include <math.h>
    5961#include <sys/time.h>
    6062
     
    150152        } zoom_range;
    151153        float device_pixel_ratio;
     154        double dom_timer_interval;
    152155    } settings;
    153156    struct {
     
    656659    priv->settings.device_pixel_ratio = DEVICE_PIXEL_RATIO;
    657660
     661    priv->settings.dom_timer_interval = priv->page_settings->defaultMinDOMTimerInterval();
     662
    658663    priv->main_frame = _ewk_view_core_frame_new(sd, priv, 0).get();
    659664    if (!priv->main_frame) {
     
    23322337}
    23332338
     2339Eina_Bool ewk_view_setting_minimum_timer_interval_set(Evas_Object *o, double interval)
     2340{
     2341    EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     2342    EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     2343    if (fabs(priv->settings.dom_timer_interval - interval) >= std::numeric_limits<double>::epsilon()) {
     2344        priv->page_settings->setMinDOMTimerInterval(interval);
     2345        priv->settings.dom_timer_interval = interval;
     2346    }
     2347    return EINA_TRUE;
     2348}
     2349
     2350double ewk_view_setting_minimum_timer_interval_get(const Evas_Object *o)
     2351{
     2352    EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     2353    EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     2354    return priv->settings.dom_timer_interval;
     2355}
     2356
    23342357Ewk_View_Smart_Data *ewk_view_smart_data_get(const Evas_Object *o)
    23352358{
  • trunk/Source/WebKit/efl/ewk/ewk_view.h

    r94378 r94380  
    18111811
    18121812/**
     1813 * Sets the minimum interval for DOMTimers on current page.
     1814 *
     1815 * @param o view object to set the minimum interval
     1816 *
     1817 * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
     1818 */
     1819EAPI Eina_Bool    ewk_view_setting_minimum_timer_interval_set(Evas_Object *o, double interval);
     1820
     1821/**
     1822 * Gets the minimum interval for DOMTimers on current page.
     1823 *
     1824 * @param o view object to get the minimum interval
     1825 *
     1826 * @return the minimum interval on success or @c 0 on failure
     1827 */
     1828EAPI double       ewk_view_setting_minimum_timer_interval_get(const Evas_Object *o);
     1829
     1830/**
    18131831 * Gets the internal data of @a o.
    18141832 *
Note: See TracChangeset for help on using the changeset viewer.