This test pushes a series of state objects with different URLs and fragment identifiers meant to test the hashChange event as states are popped.

State popped with event null (type object) and last path component some-other.html?withsomeotherquery
State popped with event null (type object) and last path component some-other.html?withsomeotherquery#
Hash change fired and last path component is some-other.html?withsomeotherquery#
State popped with event null (type object) and last path component some-other.html?withsomeotherquery
Hash change fired and last path component is some-other.html?withsomeotherquery
State popped with event null (type object) and last path component some-other.html?withsomeotherquery#somehash
Hash change fired and last path component is some-other.html?withsomeotherquery#somehash
State popped with event null (type object) and last path component some-other.html?withsomeotherquery#someotherhash
Hash change fired and last path component is some-other.html?withsomeotherquery#someotherhash
State popped with event null (type object) and last path component some-other.html?withquery#someotherhash
State popped with event null (type object) and last path component some-other.html?withquery#
Hash change fired and last path component is some-other.html?withquery#
State popped with event null (type object) and last path component some-other.html?withquery#somehash
Hash change fired and last path component is some-other.html?withquery#somehash
State popped with event null (type object) and last path component some-other.html?withquery
Hash change fired and last path component is some-other.html?withquery
State popped with event null (type object) and last path component some-other.html?withquery#
Hash change fired and last path component is some-other.html?withquery#
State popped with event null (type object) and last path component some-other.html?withquery
Hash change fired and last path component is some-other.html?withquery
State popped with event null (type object) and last path component some-other.html
State popped with event null (type object) and last path component pushstate-with-fragment-urls-and-hashchange.html#
State popped with event null (type object) and last path component pushstate-with-fragment-urls-and-hashchange.html#
State popped with event null (type object) and last path component pushstate-with-fragment-urls-and-hashchange.html#otherhash
Hash change fired and last path component is pushstate-with-fragment-urls-and-hashchange.html#otherhash
State popped with event null (type object) and last path component pushstate-with-fragment-urls-and-hashchange.html#hash
Hash change fired and last path component is pushstate-with-fragment-urls-and-hashchange.html#hash
State popped with event null (type object) and last path component pushstate-with-fragment-urls-and-hashchange.html
Hash change fired and last path component is pushstate-with-fragment-urls-and-hashchange.html
State popped with event null (type object) and last path component pushstate-with-fragment-urls-and-hashchange.html#
Hash change fired and last path component is pushstate-with-fragment-urls-and-hashchange.html#
State popped with event OriginalEntry (type string) and last path component pushstate-with-fragment-urls-and-hashchange.html

