QDataStream& WebCore::HistoryItem::saveState(QDataStream& out, int version) const { // we only support version 1 for now. if (version != 1) return out; out << urlString() << title() << alternateTitle() << lastVisitedTime(); out << originalURLString() << referrer() << target() << parent(); out << lastVisitWasHTTPNonGet() << lastVisitWasFailure() << isTargetItem(); out << visitCount() << documentState() << scrollPoint(); out << dailyVisitCounts() << weeklyVisitCounts(); /*if (m_formData) { out << true; out << formContentType(); out << m_formData->flatten(); } else { out << false; }*/ // save user data if (userData().isValid()) out << true << userData(); else out << false; return out; }
virtual void fire(Frame& frame) override { UserGestureIndicator gestureIndicator(wasUserGesture() ? DefinitelyProcessingUserGesture : DefinitelyNotProcessingUserGesture); ResourceRequest resourceRequest(url(), referrer(), ReloadIgnoringCacheData); FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy); frame.loader().changeLocation(frameRequest); }
String KURL::strippedForUseAsReferrer() const { KURL referrer(*this); referrer.setUser(String()); referrer.setPass(String()); referrer.removeFragmentIdentifier(); return referrer.string(); }
void fire(Frame& frame) override { UserGestureIndicator gestureIndicator(wasUserGesture() ? DefinitelyProcessingUserGesture : DefinitelyNotProcessingUserGesture); bool refresh = equalIgnoringFragmentIdentifier(frame.document()->url(), url()); ResourceRequest resourceRequest(url(), referrer(), refresh ? ReloadIgnoringCacheData : UseProtocolCachePolicy); FrameLoadRequest frameRequest(securityOrigin(), resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, m_shouldOpenExternalURLsPolicy); frame.loader().changeLocation(frameRequest); }
String KURL::strippedForUseAsReferrer() const { if (!protocolIsInHTTPFamily()) return String(); if (m_parsed.username.is_nonempty() || m_parsed.password.is_nonempty() || m_parsed.ref.is_valid()) { KURL referrer(*this); referrer.setUser(String()); referrer.setPass(String()); referrer.removeFragmentIdentifier(); return referrer.getString(); } return getString(); }
String KURL::strippedForUseAsReferrer() const { if (protocolIsAbout() || protocolIs("data") || protocolIs("javascript")) return String(); if (m_parsed.username.is_nonempty() || m_parsed.password.is_nonempty() || m_parsed.ref.is_nonempty()) { KURL referrer(*this); referrer.setUser(String()); referrer.setPass(String()); referrer.removeFragmentIdentifier(); return referrer.string(); } return string(); }
LocalFrame* createWindow(const String& urlString, const AtomicString& frameName, const WindowFeatures& windowFeatures, DOMWindow& callingWindow, LocalFrame& firstFrame, LocalFrame& openerFrame, DOMWindow::PrepareDialogFunction function, void* functionContext) { LocalFrame* activeFrame = callingWindow.frame(); ASSERT(activeFrame); KURL completedURL = urlString.isEmpty() ? KURL(ParsedURLString, emptyString()) : firstFrame.document()->completeURL(urlString); if (!completedURL.isEmpty() && !completedURL.isValid()) { // Don't expose client code to invalid URLs. callingWindow.printErrorMessage("Unable to open a window with invalid URL '" + completedURL.string() + "'.\n"); return 0; } // For whatever reason, Firefox uses the first frame to determine the outgoingReferrer. We replicate that behavior here. Referrer referrer(SecurityPolicy::generateReferrerHeader(firstFrame.document()->referrerPolicy(), completedURL, firstFrame.document()->outgoingReferrer()), firstFrame.document()->referrerPolicy()); ResourceRequest request(completedURL, referrer); FrameLoader::addHTTPOriginIfNeeded(request, AtomicString(firstFrame.document()->outgoingOrigin())); FrameLoadRequest frameRequest(callingWindow.document(), request, frameName); // We pass the opener frame for the lookupFrame in case the active frame is different from // the opener frame, and the name references a frame relative to the opener frame. bool created; LocalFrame* newFrame = createWindow(*activeFrame, openerFrame, frameRequest, windowFeatures, NavigationPolicyIgnore, MaybeSendReferrer, created); if (!newFrame) return 0; if (newFrame != &openerFrame && newFrame != openerFrame.tree().top()) newFrame->loader().forceSandboxFlags(openerFrame.document()->sandboxFlags()); newFrame->loader().setOpener(&openerFrame); newFrame->page()->setOpenedByDOM(); if (newFrame->domWindow()->isInsecureScriptAccess(callingWindow, completedURL)) return newFrame; if (function) function(newFrame->domWindow(), functionContext); if (created) { FrameLoadRequest request(callingWindow.document(), ResourceRequest(completedURL, referrer)); newFrame->loader().load(request); } else if (!urlString.isEmpty()) { newFrame->navigationScheduler().scheduleLocationChange(callingWindow.document(), completedURL.string(), referrer, false); } return newFrame; }
virtual void fire(Frame* frame) { frame->loader()->changeLocation(KURL(ParsedURLString, url()), referrer(), lockHistory(), lockBackForwardList(), wasUserGesture(), true); }
virtual void fire(Frame& frame) override { UserGestureIndicator gestureIndicator(wasUserGesture() ? DefinitelyProcessingUserGesture : DefinitelyNotProcessingUserGesture); frame.loader().changeLocation(securityOrigin(), URL(ParsedURLString, url()), referrer(), lockHistory(), lockBackForwardList(), true); }
virtual void fire(Frame& frame) override { UserGestureIndicator gestureIndicator(wasUserGesture() ? DefinitelyProcessingUserGesture : DefinitelyNotProcessingUserGesture); bool refresh = equalIgnoringFragmentIdentifier(frame.document()->url(), URL(ParsedURLString, url())); frame.loader().changeLocation(securityOrigin(), URL(ParsedURLString, url()), referrer(), lockHistory(), lockBackForwardList(), refresh); }
virtual void fire(Frame* frame) { UserGestureIndicator gestureIndicator(wasUserGesture() ? DefinitelyProcessingUserGesture : DefinitelyNotProcessingUserGesture); frame->loader()->changeLocation(KURL(ParsedURLString, url()), referrer(), lockHistory(), lockBackForwardList(), true); }
virtual void fire(Frame* frame) { OwnPtr<UserGestureIndicator> gestureIndicator = createUserGestureIndicator(); FrameLoadRequest request(securityOrigin(), ResourceRequest(KURL(ParsedURLString, url()), referrer(), ReloadIgnoringCacheData), "_self"); request.setLockBackForwardList(lockBackForwardList()); request.setClientRedirect(ClientRedirect); frame->loader().load(request); }