Make the defered data loading timer honor the Page's scheduled runloop pairs.
Introduces a new RunLoopTimer class that has an API mimicking Timer but
allows it to be scheduled with one or more SchedulePairs.
<rdar://problem/6687342> -[WebView scheduleInRunLoop:forMode:] has no affect on timers
Reviewed by Darin Adler.
* WebCore.xcodeproj/project.pbxproj: Adds the new RunLoopTimer.{cpp,h} files.
* loader/MainResourceLoader.cpp:
(WebCore::MainResourceLoader::handleDataLoadNow): Use the MainResourceLoaderTimer typedef.
(WebCore::MainResourceLoader::startDataLoadTimer): Added. Start the timer and on
Mac platforms also schedule with the Page's SchedulePairs.
(WebCore::MainResourceLoader::handleDataLoadSoon): Call startDataLoadTimer().
(WebCore::MainResourceLoader::setDefersLoading): Ditto.
* loader/MainResourceLoader.h:
* platform/cf/RunLoopTimerCF.cpp: Added.
(WebCore::RunLoopTimerBase::~RunLoopTimerBase):
(WebCore::timerFired):
(WebCore::RunLoopTimerBase::start):
(WebCore::RunLoopTimerBase::schedule):
(WebCore::RunLoopTimerBase::stop):
(WebCore::RunLoopTimerBase::isActive):
* platform/RunLoopTimer.h: Added.
(WebCore::RunLoopTimerBase::RunLoopTimerBase):
(WebCore::RunLoopTimerBase::startRepeating):
(WebCore::RunLoopTimerBase::startOneShot):
(WebCore::RunLoopTimer::RunLoopTimer):
(WebCore::RunLoopTimer::fired):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@41845 268f45cc-cd09-0410-ab3c-d52691b4dbfc
8 files changed