Index: Source/core/loader/NavigationScheduler.cpp |
diff --git a/Source/core/loader/NavigationScheduler.cpp b/Source/core/loader/NavigationScheduler.cpp |
index bd3f2e8c223fbdf07050626f98390dee7434fdcf..2ac74b8ed38c84b0d4aca49c8d1f9eb81f40c468 100644 |
--- a/Source/core/loader/NavigationScheduler.cpp |
+++ b/Source/core/loader/NavigationScheduler.cpp |
@@ -292,6 +292,14 @@ |
if (!UserGestureIndicator::processingUserGesture() && !targetFrame->document()->loadEventFinished()) |
return true; |
+ // From the HTML5 spec for location.assign(): |
+ // "If the browsing context's session history contains only one Document, |
+ // and that was the about:blank Document created when the browsing context |
+ // was created, then the navigation must be done with replacement enabled." |
+ if (!targetFrame->loader().stateMachine()->committedMultipleRealLoads() |
+ && equalIgnoringCase(targetFrame->document()->url(), blankURL())) |
+ return true; |
+ |
// Navigation of a subframe during loading of an ancestor frame does not create a new back/forward item. |
// The definition of "during load" is any time before all handlers for the load event have been run. |
// See https://bugs.webkit.org/show_bug.cgi?id=14957 for the original motivation for this. |