Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: LayoutTests/http/tests/navigation/same-document-scroll-position-restore-pushstate.html

Issue 1063573002: history.pushState() should take care of scrolling state (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/http/tests/navigation/same-document-scroll-position-restore-pushstate.html
diff --git a/LayoutTests/http/tests/navigation/same-document-scroll-position-restore-pushstate.html b/LayoutTests/http/tests/navigation/same-document-scroll-position-restore-pushstate.html
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a816bfe5a544947e2745bfa7ecabf2ff7b772
--- /dev/null
+++ b/LayoutTests/http/tests/navigation/same-document-scroll-position-restore-pushstate.html
@@ -0,0 +1,53 @@
+<body>
+<script src="../../../resources/js-test.js"></script>
+<div style="height: 1100px">scroll down...</div>
+<button id="a">Push State</button>
+<button id="b">Back</button>
+<div id="log"></div>
+<script>
+if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
+
+function pushBrowserState()
+{
+ history.pushState({}, '', window.location.href.split("#")[0] + "#a");
+}
+
+function back()
+{
+ scrollOffsetY = window.scrollY;
+ history.back();
+ setTimeout(function() {
+ document.getElementById('log').innerHTML = 'scrollY should be ' + scrollOffsetY + ': ' + (window.scrollY == scrollOffsetY ? "PASS" : "FAIL");
+ if (window.testRunner)
+ testRunner.notifyDone();
+ }, 10);
Nate Chapin 2015/04/06 17:17:15 Is the 10ms delay required here? Could we get away
Abhijeet Kandalkar Slow 2015/04/07 08:14:49 Done. Code is removed.
+}
+
+window.onload = function() {
+ if (window.eventSender) {
+ var ele = document.getElementById("a");
+ ele.addEventListener('click', pushBrowserState, false);
+ window.scrollBy(0, 1000);
+
+ // Click 'Push State' button twice
Nate Chapin 2015/04/06 17:17:15 Does this test work with direct history.pushState(
Abhijeet Kandalkar Slow 2015/04/07 08:14:49 Done. eventSender dependency is removed.
+ var rect = ele.getBoundingClientRect();
+ eventSender.mouseMoveTo(rect.left + 2, rect.top + 2);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+
+ // Click 'Back' button
+ ele = document.getElementById("b");
+ ele.addEventListener('click', back, false);
+ rect = ele.getBoundingClientRect();
+ eventSender.mouseMoveTo(rect.left + 2, rect.top + 2);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+ }
+};
+</script>
+</body>

Powered by Google App Engine
This is Rietveld 408576698