Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: third_party/WebKit/Source/web/WebLocalFrameImpl.cpp

Issue 2710983003: Move HistoryItem handling to DocumentLoader (Closed)
Patch Set: Address kinuko's comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after
1670 // If we're moving in the back/forward list, we might want to replace the 1670 // If we're moving in the back/forward list, we might want to replace the
1671 // content of this child frame with whatever was there at that point. 1671 // content of this child frame with whatever was there at that point.
1672 HistoryItem* childItem = nullptr; 1672 HistoryItem* childItem = nullptr;
1673 if (isBackForwardLoadType(frame()->loader().documentLoader()->loadType()) && 1673 if (isBackForwardLoadType(frame()->loader().documentLoader()->loadType()) &&
1674 !frame()->document()->loadEventFinished()) 1674 !frame()->document()->loadEventFinished())
1675 childItem = webframeChild->client()->historyItemForNewChildFrame(); 1675 childItem = webframeChild->client()->historyItemForNewChildFrame();
1676 1676
1677 FrameLoadRequest newRequest = request; 1677 FrameLoadRequest newRequest = request;
1678 FrameLoadType loadType = FrameLoadTypeStandard; 1678 FrameLoadType loadType = FrameLoadTypeStandard;
1679 if (childItem) { 1679 if (childItem) {
1680 newRequest = FrameLoadRequest( 1680 newRequest = FrameLoadRequest(request.originDocument(),
1681 request.originDocument(), 1681 childItem->generateResourceRequest(
1682 FrameLoader::resourceRequestFromHistoryItem( 1682 WebCachePolicy::UseProtocolCachePolicy));
1683 childItem, WebCachePolicy::UseProtocolCachePolicy));
1684 loadType = FrameLoadTypeInitialHistoryLoad; 1683 loadType = FrameLoadTypeInitialHistoryLoad;
1685 } 1684 }
1686 webframeChild->frame()->loader().load(newRequest, loadType, childItem); 1685 webframeChild->frame()->loader().load(newRequest, loadType, childItem);
1687 1686
1688 // Note a synchronous navigation (about:blank) would have already processed 1687 // Note a synchronous navigation (about:blank) would have already processed
1689 // onload, so it is possible for the child frame to have already been 1688 // onload, so it is possible for the child frame to have already been
1690 // detached by script in the page. 1689 // detached by script in the page.
1691 if (!webframeChild->parent()) 1690 if (!webframeChild->parent())
1692 return nullptr; 1691 return nullptr;
1693 return webframeChild->frame(); 1692 return webframeChild->frame();
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 if (!frame()) 1986 if (!frame())
1988 return true; 1987 return true;
1989 1988
1990 return frame()->loader().shouldClose(isReload); 1989 return frame()->loader().shouldClose(isReload);
1991 } 1990 }
1992 1991
1993 WebURLRequest WebLocalFrameImpl::requestFromHistoryItem( 1992 WebURLRequest WebLocalFrameImpl::requestFromHistoryItem(
1994 const WebHistoryItem& item, 1993 const WebHistoryItem& item,
1995 WebCachePolicy cachePolicy) const { 1994 WebCachePolicy cachePolicy) const {
1996 HistoryItem* historyItem = item; 1995 HistoryItem* historyItem = item;
1997 ResourceRequest request = 1996 return WrappedResourceRequest(
1998 FrameLoader::resourceRequestFromHistoryItem(historyItem, cachePolicy); 1997 historyItem->generateResourceRequest(cachePolicy));
1999 return WrappedResourceRequest(request);
2000 } 1998 }
2001 1999
2002 WebURLRequest WebLocalFrameImpl::requestForReload( 2000 WebURLRequest WebLocalFrameImpl::requestForReload(
2003 WebFrameLoadType loadType, 2001 WebFrameLoadType loadType,
2004 const WebURL& overrideUrl) const { 2002 const WebURL& overrideUrl) const {
2005 DCHECK(frame()); 2003 DCHECK(frame());
2006 ResourceRequest request = frame()->loader().resourceRequestForReload( 2004 ResourceRequest request = frame()->loader().resourceRequestForReload(
2007 static_cast<FrameLoadType>(loadType), overrideUrl); 2005 static_cast<FrameLoadType>(loadType), overrideUrl);
2008 return WrappedResourceRequest(request); 2006 return WrappedResourceRequest(request);
2009 } 2007 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2044 bool isClientRedirect) { 2042 bool isClientRedirect) {
2045 DCHECK(frame()); 2043 DCHECK(frame());
2046 2044
2047 // If we are loading substitute data to replace an existing load, then 2045 // If we are loading substitute data to replace an existing load, then
2048 // inherit all of the properties of that original request. This way, 2046 // inherit all of the properties of that original request. This way,
2049 // reload will re-attempt the original request. It is essential that 2047 // reload will re-attempt the original request. It is essential that
2050 // we only do this when there is an unreachableURL since a non-empty 2048 // we only do this when there is an unreachableURL since a non-empty
2051 // unreachableURL informs FrameLoader::reload to load unreachableURL 2049 // unreachableURL informs FrameLoader::reload to load unreachableURL
2052 // instead of the currently loaded URL. 2050 // instead of the currently loaded URL.
2053 ResourceRequest request; 2051 ResourceRequest request;
2054 if (replace && !unreachableURL.isEmpty() && 2052 HistoryItem* historyItem = item;
2055 frame()->loader().provisionalDocumentLoader()) 2053 DocumentLoader* provisionalDocumentLoader =
2056 request = frame()->loader().provisionalDocumentLoader()->originalRequest(); 2054 frame()->loader().provisionalDocumentLoader();
2055 if (replace && !unreachableURL.isEmpty() && provisionalDocumentLoader) {
2056 request = provisionalDocumentLoader->originalRequest();
2057 // When replacing a failed back/forward provisional navigation with an error
2058 // page, retain the HistoryItem for the failed provisional navigation
2059 // and reuse it for the error page navigation.
2060 if (provisionalDocumentLoader->loadType() == FrameLoadTypeBackForward) {
2061 historyItem = provisionalDocumentLoader->historyItem();
2062 webFrameLoadType = WebFrameLoadType::BackForward;
2063 }
2064 }
2057 request.setURL(baseURL); 2065 request.setURL(baseURL);
2058 request.setCheckForBrowserSideNavigation(false); 2066 request.setCheckForBrowserSideNavigation(false);
2059 2067
2060 FrameLoadRequest frameRequest( 2068 FrameLoadRequest frameRequest(
2061 0, request, SubstituteData(data, mimeType, textEncoding, unreachableURL)); 2069 0, request, SubstituteData(data, mimeType, textEncoding, unreachableURL));
2062 DCHECK(frameRequest.substituteData().isValid()); 2070 DCHECK(frameRequest.substituteData().isValid());
2063 frameRequest.setReplacesCurrentItem(replace); 2071 frameRequest.setReplacesCurrentItem(replace);
2064 if (isClientRedirect) 2072 if (isClientRedirect)
2065 frameRequest.setClientRedirect(ClientRedirectPolicy::ClientRedirect); 2073 frameRequest.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
2066 2074
2067 HistoryItem* historyItem = item;
2068 frame()->loader().load( 2075 frame()->loader().load(
2069 frameRequest, static_cast<FrameLoadType>(webFrameLoadType), historyItem, 2076 frameRequest, static_cast<FrameLoadType>(webFrameLoadType), historyItem,
2070 static_cast<HistoryLoadType>(webHistoryLoadType)); 2077 static_cast<HistoryLoadType>(webHistoryLoadType));
2071 } 2078 }
2072 2079
2073 bool WebLocalFrameImpl::maybeRenderFallbackContent( 2080 bool WebLocalFrameImpl::maybeRenderFallbackContent(
2074 const WebURLError& error) const { 2081 const WebURLError& error) const {
2075 DCHECK(frame()); 2082 DCHECK(frame());
2076 2083
2077 if (!frame()->owner() || !frame()->owner()->canRenderFallbackContent()) 2084 if (!frame()->owner() || !frame()->owner()->canRenderFallbackContent())
2078 return false; 2085 return false;
2079 2086
2080 FrameLoader& frameloader = frame()->loader(); 2087 DCHECK(frame()->loader().provisionalDocumentLoader());
2081 DCHECK(frameloader.provisionalDocumentLoader()); 2088 frame()->loader().provisionalDocumentLoader()->loadFailed(error);
2082 frameloader.loadFailed(frameloader.provisionalDocumentLoader(), error);
2083 return true; 2089 return true;
2084 } 2090 }
2085 2091
2086 // Called when a navigation is blocked because a Content Security Policy (CSP) 2092 // Called when a navigation is blocked because a Content Security Policy (CSP)
2087 // is infringed. 2093 // is infringed.
2088 void WebLocalFrameImpl::reportContentSecurityPolicyViolation( 2094 void WebLocalFrameImpl::reportContentSecurityPolicyViolation(
2089 const blink::WebContentSecurityPolicyViolation& violation) { 2095 const blink::WebContentSecurityPolicyViolation& violation) {
2090 addMessageToConsole(blink::WebConsoleMessage( 2096 addMessageToConsole(blink::WebConsoleMessage(
2091 WebConsoleMessage::LevelError, violation.consoleMessage, 2097 WebConsoleMessage::LevelError, violation.consoleMessage,
2092 violation.sourceLocation.url, violation.sourceLocation.lineNumber, 2098 violation.sourceLocation.url, violation.sourceLocation.lineNumber,
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
2510 createMarkup(startPosition, endPosition, AnnotateForInterchange, 2516 createMarkup(startPosition, endPosition, AnnotateForInterchange,
2511 ConvertBlocksToInlines::NotConvert, ResolveNonLocalURLs); 2517 ConvertBlocksToInlines::NotConvert, ResolveNonLocalURLs);
2512 } else { 2518 } else {
2513 clipHtml = 2519 clipHtml =
2514 createMarkup(endPosition, startPosition, AnnotateForInterchange, 2520 createMarkup(endPosition, startPosition, AnnotateForInterchange,
2515 ConvertBlocksToInlines::NotConvert, ResolveNonLocalURLs); 2521 ConvertBlocksToInlines::NotConvert, ResolveNonLocalURLs);
2516 } 2522 }
2517 } 2523 }
2518 2524
2519 } // namespace blink 2525 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698