| Index: content/browser/frame_host/navigation_controller_impl.cc
|
| diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
|
| index d2012a51ef3584010466b4242aa9a25896fddbeb..2356d392d7c226dd1df3134a6fd104d036e4a61f 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl.cc
|
| +++ b/content/browser/frame_host/navigation_controller_impl.cc
|
| @@ -826,8 +826,8 @@ bool NavigationControllerImpl::RendererDidNavigate(
|
| details->type = ClassifyNavigation(rfh, params);
|
|
|
| // is_in_page must be computed before the entry gets committed.
|
| - details->is_in_page = IsURLInPageNavigation(
|
| - params.url, params.was_within_same_page, rfh);
|
| + details->is_in_page = IsURLInPageNavigation(params.url, params.origin,
|
| + params.was_within_same_page, rfh);
|
|
|
| switch (details->type) {
|
| case NAVIGATION_TYPE_NEW_PAGE:
|
| @@ -1372,8 +1372,13 @@ int NavigationControllerImpl::GetIndexOfEntry(
|
| // in-page. Therefore, trust the renderer if the URLs are on the same origin,
|
| // and assume the renderer is malicious if a cross-origin navigation claims to
|
| // be in-page.
|
| +//
|
| +// TODO(creis): Clean up and simplify the about:blank and origin checks below,
|
| +// which are likely redundant with each other. Be careful about data URLs vs
|
| +// about:blank, both of which are unique origins and thus not considered equal.
|
| bool NavigationControllerImpl::IsURLInPageNavigation(
|
| const GURL& url,
|
| + const url::Origin& origin,
|
| bool renderer_says_in_page,
|
| RenderFrameHost* rfh) const {
|
| RenderFrameHostImpl* rfhi = static_cast<RenderFrameHostImpl*>(rfh);
|
| @@ -1406,6 +1411,7 @@ bool NavigationControllerImpl::IsURLInPageNavigation(
|
| // for now.
|
| last_committed_url == GURL(url::kAboutBlankURL) ||
|
| last_committed_url.GetOrigin() == url.GetOrigin() ||
|
| + committed_origin == origin ||
|
| !prefs.web_security_enabled ||
|
| (prefs.allow_universal_access_from_file_urls &&
|
| committed_origin.scheme() == url::kFileScheme);
|
|
|