void RedirectScheduler::startTimer() { if (!m_scheduledRedirection) return; ASSERT(m_frame->page()); FrameLoader* loader = m_frame->loader(); if (m_timer.isActive()) return; if (m_scheduledRedirection->type == ScheduledRedirection::redirection && !loader->allAncestorsAreComplete()) return; m_timer.startOneShot(m_scheduledRedirection->delay); switch (m_scheduledRedirection->type) { case ScheduledRedirection::locationChange: case ScheduledRedirection::redirection: if (m_scheduledRedirection->toldClient) return; m_scheduledRedirection->toldClient = true; loader->clientRedirected(KURL(ParsedURLString, m_scheduledRedirection->url), m_scheduledRedirection->delay, currentTime() + m_timer.nextFireInterval(), m_scheduledRedirection->lockBackForwardList); return; case ScheduledRedirection::formSubmission: if (m_scheduledRedirection->toldClient) return; m_scheduledRedirection->toldClient = true; loader->clientRedirected(m_scheduledRedirection->frameRequest.resourceRequest().url(), m_scheduledRedirection->delay, currentTime() + m_timer.nextFireInterval(), m_scheduledRedirection->lockBackForwardList); return; case ScheduledRedirection::historyNavigation: // Don't report history navigations. return; } ASSERT_NOT_REACHED(); }
void RedirectScheduler::startTimer() { if (!m_scheduledRedirection) return; ASSERT(m_frame->page()); FrameLoader* loader = m_frame->loader(); if (m_timer.isActive()) return; if (m_scheduledRedirection->type == ScheduledRedirection::redirection && !loader->allAncestorsAreComplete()) return; m_timer.startOneShot(m_scheduledRedirection->delay); switch (m_scheduledRedirection->type) { case ScheduledRedirection::locationChange: case ScheduledRedirection::redirection: if (m_scheduledRedirection->toldClient) return; m_scheduledRedirection->toldClient = true; loader->clientRedirected(KURL(ParsedURLString, m_scheduledRedirection->url), m_scheduledRedirection->delay, currentTime() + m_timer.nextFireInterval(), m_scheduledRedirection->lockBackForwardList); return; case ScheduledRedirection::formSubmission: // FIXME: It would make sense to report form submissions as client redirects too. // But we didn't do that in the past when form submission used a separate delay // mechanism, so doing it will be a behavior change. return; case ScheduledRedirection::historyNavigation: // Don't report history navigations. return; } ASSERT_NOT_REACHED(); }