Changeset 195909 in webkit
- Timestamp:
- Jan 30, 2016 1:39:00 PM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r195908 r195909 1 2016-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 1 14 2016-01-30 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/Source/WebCore/page/Page.cpp
r195871 r195909 1306 1306 chrome().client().setPageActivityState(activityState); 1307 1307 1308 updateTabSuspensionState(); 1308 if (activityState == PageActivityState::NoFlags && !isVisible()) 1309 scheduleTabSuspension(true); 1310 else 1311 scheduleTabSuspension(false); 1309 1312 } 1310 1313 … … 1359 1362 } 1360 1363 1361 updateTabSuspensionState();1364 scheduleTabSuspension(!isVisible); 1362 1365 } 1363 1366 … … 1865 1868 if (m_isPrerender) 1866 1869 return false; 1867 if (isVisible())1868 return false;1869 1870 if (m_pageThrottler.activityState() != PageActivityState::NoFlags) 1870 1871 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; 1880 1875 1881 1876 return true; … … 1884 1879 void Page::setIsTabSuspended(bool shouldSuspend) 1885 1880 { 1886 if (m_isTabSuspended == shouldSuspend)1887 return;1888 m_isTabSuspended = shouldSuspend;1889 1890 1881 for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) { 1891 1882 if (auto* document = frame->document()) { … … 1903 1894 } 1904 1895 1905 void Page::updateTabSuspensionState() 1906 { 1907 if (canTabSuspend()) { 1896 void Page::scheduleTabSuspension(bool shouldSuspend) 1897 { 1898 if (m_shouldTabSuspend == shouldSuspend) 1899 return; 1900 1901 if (shouldSuspend && canTabSuspend()) { 1902 m_shouldTabSuspend = shouldSuspend; 1908 1903 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 } 1913 1911 } 1914 1912 1915 1913 void Page::tabSuspensionTimerFired() 1916 1914 { 1917 setIsTabSuspended( canTabSuspend());1915 setIsTabSuspended(true); 1918 1916 } 1919 1917 -
trunk/Source/WebCore/page/Page.h
r195871 r195909 522 522 void setTimerThrottlingEnabled(bool); 523 523 bool canTabSuspend(); 524 void updateTabSuspensionState();524 void scheduleTabSuspension(bool); 525 525 void tabSuspensionTimerFired(); 526 526 … … 664 664 665 665 bool m_isClosing; 666 bool m_ isTabSuspended { false };666 bool m_shouldTabSuspend { false }; 667 667 Timer m_tabSuspensionTimer; 668 668
Note: See TracChangeset
for help on using the changeset viewer.