Title: [200625] trunk/Source/WebCore
Revision
200625
Author
[email protected]
Date
2016-05-10 10:05:50 -0700 (Tue, 10 May 2016)

Log Message

Allow some leeway after page load before throttling, to allow post load events to complete.
https://bugs.webkit.org/show_bug.cgi?id=157499

Reviewed by Ryosuke Niwa

* page/PageThrottler.cpp:
(WebCore::PageThrottler::PageThrottler):
    - m_pageLoadActivityCounter now affects activity state indirecty, via m_pageLoadActivityHysteresis.
(WebCore::PageThrottler::pageLoadActivityCounterChanged):
    - counter updates hysteresis object, which in turn will affect activity state.
* page/PageThrottler.h:
    - added m_pageLoadActivityHysteresis, pageLoadActivityCounterChanged.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (200624 => 200625)


--- trunk/Source/WebCore/ChangeLog	2016-05-10 17:05:29 UTC (rev 200624)
+++ trunk/Source/WebCore/ChangeLog	2016-05-10 17:05:50 UTC (rev 200625)
@@ -1,3 +1,18 @@
+2016-05-05  Gavin Barraclough  <[email protected]>
+
+        Allow some leeway after page load before throttling, to allow post load events to complete.
+        https://bugs.webkit.org/show_bug.cgi?id=157499
+
+        Reviewed by Ryosuke Niwa
+
+        * page/PageThrottler.cpp:
+        (WebCore::PageThrottler::PageThrottler):
+            - m_pageLoadActivityCounter now affects activity state indirecty, via m_pageLoadActivityHysteresis.
+        (WebCore::PageThrottler::pageLoadActivityCounterChanged):
+            - counter updates hysteresis object, which in turn will affect activity state.
+        * page/PageThrottler.h:
+            - added m_pageLoadActivityHysteresis, pageLoadActivityCounterChanged.
+
 2016-05-10  Zalan Bujtas  <[email protected]>
 
         REGRESSION (r193610): Drop down menu doesn’t expand at allofbach.com

Modified: trunk/Source/WebCore/page/PageThrottler.cpp (200624 => 200625)


--- trunk/Source/WebCore/page/PageThrottler.cpp	2016-05-10 17:05:29 UTC (rev 200624)
+++ trunk/Source/WebCore/page/PageThrottler.cpp	2016-05-10 17:05:50 UTC (rev 200625)
@@ -30,12 +30,15 @@
 
 namespace WebCore {
 
+static const double PageLoadHysteresisSeconds = 10;
+
 PageThrottler::PageThrottler(Page& page)
     : m_page(page)
     , m_userInputHysteresis([this](HysteresisState state) { setActivityFlag(PageActivityState::UserInputActivity, state == HysteresisState::Started); })
     , m_mediaActivityHysteresis([this](HysteresisState state) { setActivityFlag(PageActivityState::MediaActivity, state == HysteresisState::Started); })
+    , m_pageLoadActivityHysteresis([this](HysteresisState state) { setActivityFlag(PageActivityState::PageLoadActivity, state == HysteresisState::Started); }, PageLoadHysteresisSeconds)
     , m_mediaActivityCounter([this](RefCounterEvent) { mediaActivityCounterChanged(); })
-    , m_pageLoadActivityCounter([this](RefCounterEvent) { setActivityFlag(PageActivityState::PageLoadActivity, m_pageLoadActivityCounter.value()); })
+    , m_pageLoadActivityCounter([this](RefCounterEvent) { pageLoadActivityCounterChanged(); })
 {
 }
 
@@ -57,6 +60,14 @@
         m_mediaActivityHysteresis.stop();
 }
 
+void PageThrottler::pageLoadActivityCounterChanged()
+{
+    if (m_pageLoadActivityCounter.value())
+        m_pageLoadActivityHysteresis.start();
+    else
+        m_pageLoadActivityHysteresis.stop();
+}
+
 void PageThrottler::setActivityFlag(PageActivityState::Flags flag, bool value)
 {
     PageActivityState::Flags activityState = m_activityState;

Modified: trunk/Source/WebCore/page/PageThrottler.h (200624 => 200625)


--- trunk/Source/WebCore/page/PageThrottler.h	2016-05-10 17:05:29 UTC (rev 200624)
+++ trunk/Source/WebCore/page/PageThrottler.h	2016-05-10 17:05:50 UTC (rev 200625)
@@ -66,12 +66,14 @@
 
 private:
     void mediaActivityCounterChanged();
+    void pageLoadActivityCounterChanged();
     void setActivityFlag(PageActivityState::Flags, bool);
 
     Page& m_page;
     PageActivityState::Flags m_activityState { PageActivityState::NoFlags };
     HysteresisActivity m_userInputHysteresis;
     HysteresisActivity m_mediaActivityHysteresis;
+    HysteresisActivity m_pageLoadActivityHysteresis;
     PageActivityCounter m_mediaActivityCounter;
     PageActivityCounter m_pageLoadActivityCounter;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to