Changeset 195909 in webkit


Ignore:
Timestamp:
Jan 30, 2016 1:39:00 PM (8 years ago)
Author:
Chris Dumez
Message:

Unreviewed, rolling out r195871.

Caused several layout tests to time out

Reverted changeset:

"Tab suspension code shouldn't use page cache cacheability
logic"
https://bugs.webkit.org/show_bug.cgi?id=153680
http://trac.webkit.org/changeset/195871

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r195908 r195909  
     12016-01-30  Chris Dumez  <cdumez@apple.com>
     2
     3        Unreviewed, rolling out r195871.
     4
     5        Caused several layout tests to time out
     6
     7        Reverted changeset:
     8
     9        "Tab suspension code shouldn't use page cache cacheability
     10        logic"
     11        https://bugs.webkit.org/show_bug.cgi?id=153680
     12        http://trac.webkit.org/changeset/195871
     13
    1142016-01-30  Chris Dumez  <cdumez@apple.com>
    215
  • trunk/Source/WebCore/page/Page.cpp

    r195871 r195909  
    13061306    chrome().client().setPageActivityState(activityState);
    13071307   
    1308     updateTabSuspensionState();
     1308    if (activityState == PageActivityState::NoFlags && !isVisible())
     1309        scheduleTabSuspension(true);
     1310    else
     1311        scheduleTabSuspension(false);
    13091312}
    13101313
     
    13591362    }
    13601363
    1361     updateTabSuspensionState();
     1364    scheduleTabSuspension(!isVisible);
    13621365}
    13631366
     
    18651868    if (m_isPrerender)
    18661869        return false;
    1867     if (isVisible())
    1868         return false;
    18691870    if (m_pageThrottler.activityState() != PageActivityState::NoFlags)
    18701871        return false;
    1871 
    1872     for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
    1873         if (frame->loader().state() == FrameStateProvisional)
    1874             return false;
    1875         if (frame->loader().isLoading())
    1876             return false;
    1877         if (!frame->document() || !frame->document()->canSuspendActiveDOMObjectsForDocumentSuspension(nullptr))
    1878             return false;
    1879     }
     1872    // FIXME: PageCache::canCache does a bunch of checks that are not needed for the tab suspension case. There should be a specific check.
     1873    if (!PageCache::singleton().canCache(*this))
     1874        return false;
    18801875
    18811876    return true;
     
    18841879void Page::setIsTabSuspended(bool shouldSuspend)
    18851880{
    1886     if (m_isTabSuspended == shouldSuspend)
    1887         return;
    1888     m_isTabSuspended = shouldSuspend;
    1889 
    18901881    for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) {
    18911882        if (auto* document = frame->document()) {
     
    19031894}
    19041895
    1905 void Page::updateTabSuspensionState()
    1906 {
    1907     if (canTabSuspend()) {
     1896void Page::scheduleTabSuspension(bool shouldSuspend)
     1897{
     1898    if (m_shouldTabSuspend == shouldSuspend)
     1899        return;
     1900   
     1901    if (shouldSuspend && canTabSuspend()) {
     1902        m_shouldTabSuspend = shouldSuspend;
    19081903        m_tabSuspensionTimer.startOneShot(0);
    1909         return;
    1910     }
    1911     m_tabSuspensionTimer.stop();
    1912     setIsTabSuspended(false);
     1904    } else {
     1905        m_tabSuspensionTimer.stop();
     1906        if (!shouldSuspend) {
     1907            m_shouldTabSuspend = shouldSuspend;
     1908            setIsTabSuspended(false);
     1909        }
     1910    }
    19131911}
    19141912
    19151913void Page::tabSuspensionTimerFired()
    19161914{
    1917     setIsTabSuspended(canTabSuspend());
     1915    setIsTabSuspended(true);
    19181916}
    19191917
  • trunk/Source/WebCore/page/Page.h

    r195871 r195909  
    522522    void setTimerThrottlingEnabled(bool);
    523523    bool canTabSuspend();
    524     void updateTabSuspensionState();
     524    void scheduleTabSuspension(bool);
    525525    void tabSuspensionTimerFired();
    526526
     
    664664
    665665    bool m_isClosing;
    666     bool m_isTabSuspended { false };
     666    bool m_shouldTabSuspend { false };
    667667    Timer m_tabSuspensionTimer;
    668668
Note: See TracChangeset for help on using the changeset viewer.