<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>154935</bug_id>
          
          <creation_ts>2016-03-02 15:51:02 -0800</creation_ts>
          <short_desc>Disable timer throttling increases for visually idle / active pages.</short_desc>
          <delta_ts>2016-03-02 16:19:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169991</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-02 15:51:02 -0800</bug_when>
    <thetext>Currently any page that is visually idle can timer throttle, and all are eligible for throttling to increase.

Instead, still allow any visually idle page to timer throttle, but only allow increasing in those that are fully hidden &amp; inactive (no page loading or media activity).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169992</commentid>
    <comment_count>1</comment_count>
      <attachid>272699</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-02 15:54:45 -0800</bug_when>
    <thetext>Created attachment 272699
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169993</commentid>
    <comment_count>2</comment_count>
      <attachid>272699</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-02 16:01:01 -0800</bug_when>
    <thetext>Comment on attachment 272699
Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=272699&amp;action=review

&gt; Source/WebCore/page/Page.cpp:1188
&gt; +    // Timer throttling disabled is page is visually active, or disabled by setting.

Timer throttling disabled *if*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169995</commentid>
    <comment_count>3</comment_count>
      <attachid>272699</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-02 16:07:38 -0800</bug_when>
    <thetext>Comment on attachment 272699
Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=272699&amp;action=review

r=me, makes sense.

&gt; Source/WebCore/page/Page.cpp:1189
&gt; +    if (!(m_viewState &amp; ViewState::IsVisuallyIdle) || !m_settings-&gt;hiddenPageDOMTimerThrottlingEnabled()) {

nit: I think logically the !m_settings-&gt;hiddenPageDOMTimerThrottlingEnabled() should come first.

&gt; Source/WebCore/page/Page.cpp:1196
&gt; +    if (m_viewState &amp; ViewState::IsVisible || m_pageThrottler.activityState() || !m_settings-&gt;hiddenPageDOMTimerThrottlingAutoIncreases()) {

nit: I think logically the !m_settings-&gt;hiddenPageDOMTimerThrottlingAutoIncreases() condition should come first.

&gt; Source/WebCore/page/Page.cpp:1467
&gt; +    updateTimerThrottlingState();

At this point, it may be clearer to move this one (and the one in setIsVisuallyIdleInternal()), to Page::setViewState(ViewState::Flags).
Something like:
if (changed &amp; ViewState::IsVisible || changed &amp; ViewState::IsVisuallyIdle)
  updateTimerThrottlingState();

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170000</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-03-02 16:19:02 -0800</bug_when>
    <thetext>Transmitting file data ..
Committed revision 197472.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272699</attachid>
            <date>2016-03-02 15:54:45 -0800</date>
            <delta_ts>2016-03-02 16:07:38 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>154935.1.patch</filename>
            <type>text/plain</type>
            <size>3265</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTAyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNhYmxlIHRp
bWVyIHRocm90dGxpbmcgaW5jcmVhc2VzIGZvciB2aXN1YWxseSBpZGxlIC8gYWN0aXZlIHBhZ2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0OTM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFueSBwYWdlIHRoYXQgaXMgdmlzdWFsbHkgaWRsZSBjYW4gdGltZXIgdGhyb3R0bGUsIGFu
ZCBhbGwgYXJlIGVsaWdpYmxlIGZvciB0aHJvdHRsaW5nCisgICAgICAgIGFsbG93IHRocm90dGxp
bmcgdG8gaW5jcmVhc2UuCisKKyAgICAgICAgSW5zdGVhZCwgc3RpbGwgYWxsb3cgYW55IHZpc3Vh
bGx5IGlkbGUgcGFnZSB0byB0aW1lciB0aHJvdHRsZSwgYnV0IG9ubHkgYWxsb3cgaW5jcmVhc2lu
ZyBpbiB0aG9zZQorICAgICAgICB0aGF0IGFyZSBmdWxseSBoaWRkZW4gJiBpbmFjdGl2ZSAobm8g
cGFnZSBsb2FkaW5nIG9yIG1lZGlhIGFjdGl2aXR5KS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRUaW1lclRocm90dGxpbmdTdGF0ZSk6Cisg
ICAgICAgICAgICAtIFVwZGF0ZWQgcG9saWN5IHBlciBjb21tZXQgYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzZXRQYWdlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRJc1Zpc2libGUpOgorICAgICAgICAgICAgLSBXZSBub3cgbWF5IG5lZWQgdG8gdXBk
YXRlZCB0aW1lciB0aHJvdHRsaW5nIHdoZW4gdGhlc2UgY2hhbmdlLgorCiAyMDE2LTAzLTAyICBL
b25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBbY21ha2Vd
IE1vdmVkIFBSRS9QT1NUX0JVSUxEX0NPTU1BTkQgdG8gV0VCS0lUX0ZSQU1FV09SSy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTk3NDU5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4NSwxMiArMTE4NSwyMSBAQCB2b2lkIFBh
Z2U6OmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdTCiAKIHZvaWQgUGFnZTo6dXBkYXRlVGlt
ZXJUaHJvdHRsaW5nU3RhdGUoKQogewotICAgIFRpbWVyVGhyb3R0bGluZ1N0YXRlIHN0YXRlID0g
VGltZXJUaHJvdHRsaW5nU3RhdGU6OkRpc2FibGVkOworICAgIC8vIFRpbWVyIHRocm90dGxpbmcg
ZGlzYWJsZWQgaXMgcGFnZSBpcyB2aXN1YWxseSBhY3RpdmUsIG9yIGRpc2FibGVkIGJ5IHNldHRp
bmcuCisgICAgaWYgKCEobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8
fCAhbV9zZXR0aW5ncy0+aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoKSkgewor
ICAgICAgICBzZXRUaW1lclRocm90dGxpbmdTdGF0ZShUaW1lclRocm90dGxpbmdTdGF0ZTo6RGlz
YWJsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKG1fc2V0dGluZ3MtPmhp
ZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkgJiYgbV92aWV3U3RhdGUgJiBWaWV3
U3RhdGU6OklzVmlzdWFsbHlJZGxlKQotICAgICAgICBzdGF0ZSA9IG1fc2V0dGluZ3MtPmhpZGRl
blBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCkgPyBUaW1lclRocm90dGxpbmdT
dGF0ZTo6RW5hYmxlZEluY3JlYXNpbmcgOiBUaW1lclRocm90dGxpbmdTdGF0ZTo6RW5hYmxlZDsK
KyAgICAvLyBJZiB0aGUgcGFnZSBpcyB2aXNpYmxlIChidXQgaWRsZSksIHRoZXJlIGlzIGFueSBh
Y3Rpdml0eSAobG9hZGluZywgbWVkaWEgcGxheWluZywgZXRjKSwgb3IgcGVyIHNldHRpbmcsCisg
ICAgLy8gd2UgYWxsb3cgdGltZXIgdGhyb3R0bGluZywgYnV0IG5vdCBpbmNyZWFzaW5nIHRpbWVy
IHRocm90dGxpbmcuCisgICAgaWYgKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUg
fHwgbV9wYWdlVGhyb3R0bGVyLmFjdGl2aXR5U3RhdGUoKSB8fCAhbV9zZXR0aW5ncy0+aGlkZGVu
UGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKSkgeworICAgICAgICBzZXRUaW1l
clRocm90dGxpbmdTdGF0ZShUaW1lclRocm90dGxpbmdTdGF0ZTo6RW5hYmxlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBzZXRUaW1lclRocm90dGxpbmdTdGF0ZShzdGF0ZSk7Cisg
ICAgLy8gSWYgd2UgZ2V0IGhlcmUgaW5jcmVhc2luZyB0aW1lciB0aHJvdHRsaW5nIGlzIGVuYWJs
ZWQuCisgICAgc2V0VGltZXJUaHJvdHRsaW5nU3RhdGUoVGltZXJUaHJvdHRsaW5nU3RhdGU6OkVu
YWJsZWRJbmNyZWFzaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRUaW1lclRocm90dGxpbmdTdGF0
ZShUaW1lclRocm90dGxpbmdTdGF0ZSBzdGF0ZSkKQEAgLTE0MDIsNiArMTQxMSw3IEBAIHZvaWQg
UGFnZTo6c2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3MKIHZvaWQgUGFnZTo6c2V0UGFnZUFj
dGl2aXR5U3RhdGUoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCiB7CiAg
ICAgY2hyb21lKCkuY2xpZW50KCkuc2V0UGFnZUFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7
CisgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJ
c1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCkBAIC0xNDUzLDYgKzE0NjMsOCBAQCB2b2lkIFBhZ2U6
OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wgaXNWCiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBtYWluRnJhbWUoKS52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5oaWRlKCk7CiAgICAg
fQorCisgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIH0KIAogdm9pZCBQYWdlOjpz
ZXRJc1ByZXJlbmRlcigpCg==
</data>
<flag name="review"
          id="297459"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>