Chromium Code Reviews| Index: third_party/WebKit/Source/core/loader/FrameLoader.cpp |
| diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
| index 23c0121c422682de09655ce209a4a58600b7aa4c..505a1e77808f930919046c60b7d5bd6fc126e7f3 100644 |
| --- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
| +++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
| @@ -287,7 +287,7 @@ void FrameLoader::saveScrollState() { |
| } |
| void FrameLoader::dispatchUnloadEvent() { |
| - NavigationDisablerForUnload navigationDisabler; |
| + FrameNavigationDisabler navigationDisabler(*m_frame); |
| // If the frame is unloading, the provisional loader should no longer be |
| // protected. It will be detached soon. |
| @@ -1085,9 +1085,6 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, |
| HistoryLoadType historyLoadType) { |
| DCHECK(m_frame->document()); |
| - if (!m_frame->isNavigationAllowed()) |
|
lfg
2016/11/10 00:15:04
This change has a side effect that javascript: nav
|
| - return; |
| - |
| if (m_inStopAllLoaders) |
| return; |
| @@ -1117,6 +1114,12 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, |
| ? nullptr |
| : m_frame->findFrameForNavigation( |
| AtomicString(request.frameName()), *m_frame); |
| + |
| + if (targetFrame && targetFrame->isLocalFrame() && |
| + !toLocalFrame(targetFrame)->isNavigationAllowed()) { |
| + return; |
| + } |
| + |
| NavigationPolicy policy = navigationPolicyForRequest(request); |
| if (targetFrame && targetFrame != m_frame && |
| shouldNavigateTargetFrame(policy)) { |
| @@ -1552,7 +1555,7 @@ bool FrameLoader::shouldClose(bool isReload) { |
| bool shouldClose = false; |
| { |
| - NavigationDisablerForUnload navigationDisabler; |
| + FrameNavigationDisabler navigationDisabler(*m_frame); |
| size_t i; |
| bool didAllowNavigation = false; |