| 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..b9e101113a702ec8691a4333fa16f828cfd907cb 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,9 +1124,15 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest,
|
| ? nullptr
|
| : m_frame->findFrameForNavigation(
|
| AtomicString(request.frameName()), *m_frame);
|
| +
|
| NavigationPolicy policy = navigationPolicyForRequest(request);
|
| if (targetFrame && targetFrame != m_frame &&
|
| shouldNavigateTargetFrame(policy)) {
|
| + if (targetFrame->isLocalFrame() &&
|
| + !toLocalFrame(targetFrame)->isNavigationAllowed()) {
|
| + return;
|
| + }
|
| +
|
| bool wasInSamePage = targetFrame->page() == m_frame->page();
|
|
|
| request.setFrameName("_self");
|
| @@ -1150,6 +1156,9 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest,
|
| return;
|
| }
|
|
|
| + if (!m_frame->isNavigationAllowed())
|
| + return;
|
| +
|
| const KURL& url = request.resourceRequest().url();
|
| FrameLoadType newLoadType = (frameLoadType == FrameLoadTypeStandard)
|
| ? determineFrameLoadType(request)
|
| @@ -1558,7 +1567,7 @@ bool FrameLoader::shouldClose(bool isReload) {
|
|
|
| bool shouldClose = false;
|
| {
|
| - NavigationDisablerForUnload navigationDisabler;
|
| + NavigationDisablerForBeforeUnload navigationDisabler;
|
| size_t i;
|
|
|
| bool didAllowNavigation = false;
|
|
|