Index: third_party/WebKit/Source/core/loader/NavigationScheduler.cpp |
diff --git a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp |
index a52bf28c0827f5310a0e239a0d70378389b47b14..95080bcbd1c51f678c4b45b101ec881f8e09e90d 100644 |
--- a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp |
+++ b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp |
@@ -106,8 +106,6 @@ void maybeLogScheduledNavigationClobber(ScheduledNavigationType type, |
} // namespace |
-unsigned NavigationDisablerForUnload::s_navigationDisableCount = 0; |
- |
class ScheduledNavigation |
: public GarbageCollectedFinalized<ScheduledNavigation> { |
WTF_MAKE_NONCOPYABLE(ScheduledNavigation); |
@@ -365,36 +363,13 @@ bool NavigationScheduler::isNavigationScheduledWithin(double interval) const { |
return m_redirect && m_redirect->delay() <= interval; |
} |
-// TODO(dcheng): There are really two different load blocking concepts at work |
-// here and they have been incorrectly tangled together. |
-// |
-// 1. NavigationDisablerForUnload is for blocking navigation scheduling during |
-// a beforeunload or unload events. Scheduled navigations during |
-// beforeunload would make it possible to get trapped in an endless loop of |
-// beforeunload dialogs. Scheduled navigations during the unload handler |
-// makes is possible to cancel a navigation that was initiated right before |
-// it commits. |
-// |
-// Checking Frame::isNavigationAllowed() doesn't make sense in this context: |
-// NavigationScheduler is always cleared when a new load commits, so it's |
-// impossible for a scheduled navigation to clobber a navigation that just |
-// committed. |
-// |
-// 2. FrameNavigationDisabler / LocalFrame::isNavigationAllowed() are intended |
-// to prevent Documents from being reattached during destruction, since it |
-// can cause bugs with security origin confusion. This is primarily intended |
-// to block /synchronous/ navigations during things lke |
-// Document::detachLayoutTree(). |
inline bool NavigationScheduler::shouldScheduleReload() const { |
- return m_frame->page() && m_frame->isNavigationAllowed() && |
- NavigationDisablerForUnload::isNavigationAllowed(); |
+ return m_frame->page() && m_frame->isNavigationAllowed(); |
} |
inline bool NavigationScheduler::shouldScheduleNavigation( |
const String& url) const { |
- return m_frame->page() && m_frame->isNavigationAllowed() && |
- (protocolIsJavaScript(url) || |
- NavigationDisablerForUnload::isNavigationAllowed()); |
+ return m_frame->page() && m_frame->isNavigationAllowed(); |
} |
void NavigationScheduler::scheduleRedirect(double delay, const String& url) { |