virtual void fire(Frame* frame) { FrameLoader* loader = frame->loader(); if (!m_historySteps) { // Special case for go(0) from a frame -> reload only the frame loader->urlSelected(loader->url(), "", 0, lockHistory(), lockBackForwardList(), false, SendReferrer); return; } // go(i!=0) from a frame navigates into the history of the frame only, // in both IE and NS (but not in Mozilla). We can't easily do that. frame->page()->goBackOrForward(m_historySteps); }
virtual void fire(Frame* frame) { UserGestureIndicator gestureIndicator(wasUserGesture() ? DefinitelyProcessingUserGesture : DefinitelyNotProcessingUserGesture); FrameLoader* loader = frame->loader(); if (!m_historySteps) { // Special case for go(0) from a frame -> reload only the frame // To follow Firefox and IE's behavior, history reload can only navigate the self frame. loader->urlSelected(loader->url(), "_self", 0, lockHistory(), lockBackForwardList(), SendReferrer); return; } // go(i!=0) from a frame navigates into the history of the frame only, // in both IE and NS (but not in Mozilla). We can't easily do that. frame->page()->goBackOrForward(m_historySteps); }
void RedirectScheduler::timerFired(Timer<RedirectScheduler>*) { if (!m_frame->page()) return; if (m_frame->page()->defersLoading()) return; OwnPtr<ScheduledRedirection> redirection(m_scheduledRedirection.release()); FrameLoader* loader = m_frame->loader(); switch (redirection->type) { case ScheduledRedirection::redirection: case ScheduledRedirection::locationChange: loader->changeLocation(KURL(ParsedURLString, redirection->url), redirection->referrer, redirection->lockHistory, redirection->lockBackForwardList, redirection->wasUserGesture, redirection->wasRefresh); return; case ScheduledRedirection::historyNavigation: if (redirection->historySteps == 0) { // Special case for go(0) from a frame -> reload only the frame loader->urlSelected(loader->url(), "", 0, redirection->lockHistory, redirection->lockBackForwardList, redirection->wasUserGesture, SendReferrer); return; } // go(i!=0) from a frame navigates into the history of the frame only, // in both IE and NS (but not in Mozilla). We can't easily do that. m_frame->page()->goBackOrForward(redirection->historySteps); return; case ScheduledRedirection::formSubmission: // The submitForm function will find a target frame before using the redirection timer. // Now that the timer has fired, we need to repeat the security check which normally is done when // selecting a target, in case conditions have changed. Other code paths avoid this by targeting // without leaving a time window. If we fail the check just silently drop the form submission. if (!redirection->formState->sourceFrame()->loader()->shouldAllowNavigation(m_frame)) return; loader->loadFrameRequest(redirection->frameRequest, redirection->lockHistory, redirection->lockBackForwardList, redirection->event, redirection->formState, SendReferrer); return; } ASSERT_NOT_REACHED(); }