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 e330262b19fb0eb8426a68b995ee40a55ccb690f..7d197e71ffa81e5d2db1a4f695de9c2f29d0d9b1 100644 |
| --- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
| +++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
| @@ -288,7 +288,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. |
| @@ -1093,7 +1093,7 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, |
| HistoryLoadType historyLoadType) { |
| DCHECK(m_frame->document()); |
| - if (!m_frame->isNavigationAllowed()) |
| + if (isBackForwardLoadType(frameLoadType) && !m_frame->isNavigationAllowed()) |
| return; |
| if (m_inStopAllLoaders) |
| @@ -1124,6 +1124,12 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, |
| ? nullptr |
| : m_frame->findFrameForNavigation( |
| AtomicString(request.frameName()), *m_frame); |
| + |
| + if (targetFrame && targetFrame->isLocalFrame() && |
| + !toLocalFrame(targetFrame)->isNavigationAllowed()) { |
|
dcheng
2017/01/04 23:12:02
We use targetFrame->navigate(), which (for local f
lfg
2017/01/09 19:04:12
targetFrame->navigate() just calls FrameLoader::lo
dcheng
2017/01/09 19:17:30
OK, this check should be in the block at 1133 - 11
lfg
2017/01/09 21:18:22
Yes, that should be correct. Done.
|
| + return; |
| + } |
| + |
| NavigationPolicy policy = navigationPolicyForRequest(request); |
| if (targetFrame && targetFrame != m_frame && |
| shouldNavigateTargetFrame(policy)) { |
| @@ -1150,6 +1156,8 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, |
| return; |
| } |
| + CHECK(m_frame->isNavigationAllowed()); |
|
dcheng
2017/01/04 23:12:02
I would be more comfortable with this being an ear
lfg
2017/01/09 19:04:12
I've agree with that, but I still think that going
|
| + |
| const KURL& url = request.resourceRequest().url(); |
| FrameLoadType newLoadType = (frameLoadType == FrameLoadTypeStandard) |
| ? determineFrameLoadType(request) |
| @@ -1558,7 +1566,7 @@ bool FrameLoader::shouldClose(bool isReload) { |
| bool shouldClose = false; |
| { |
| - NavigationDisablerForUnload navigationDisabler; |
| + NavigationDisablerForBeforeUnload navigationDisabler; |
| size_t i; |
| bool didAllowNavigation = false; |