diff --git a/dom/browser-element/BrowserElementChildPreload.js b/dom/browser-element/BrowserElementChildPreload.js index 0d4c5430ac94..d674980af03c 100644 --- a/dom/browser-element/BrowserElementChildPreload.js +++ b/dom/browser-element/BrowserElementChildPreload.js @@ -1567,7 +1567,11 @@ BrowserElementChild.prototype = { location = Cc["@mozilla.org/docshell/urifixup;1"] .getService(Ci.nsIURIFixup).createExposableURI(location); - sendAsyncMsg('locationchange', { _payload_: location.spec }); + var webNav = docShell.QueryInterface(Ci.nsIWebNavigation); + + sendAsyncMsg('locationchange', { url: location.spec, + canGoBack: webNav.canGoBack, + canGoForward: webNav.canGoForward }); }, onStateChange: function(webProgress, request, stateFlags, status) { diff --git a/dom/browser-element/mochitest/browserElement_BackForward.js b/dom/browser-element/mochitest/browserElement_BackForward.js index e3d23a81dd39..26b6344c46bd 100644 --- a/dom/browser-element/mochitest/browserElement_BackForward.js +++ b/dom/browser-element/mochitest/browserElement_BackForward.js @@ -70,7 +70,9 @@ function test3() { function test4() { addOneShotIframeEventListener('mozbrowserlocationchange', function(e) { - is(e.detail, browserElementTestHelpers.emptyPage3); + is(e.detail.url, browserElementTestHelpers.emptyPage3); + is(e.detail.canGoBack, true); + is(e.detail.canGoForward, false); checkCanGoBackAndForward(true, false, test5); }); @@ -81,7 +83,9 @@ function test4() { function test5() { addOneShotIframeEventListener('mozbrowserlocationchange', function(e) { - is(e.detail, browserElementTestHelpers.emptyPage2); + is(e.detail.url, browserElementTestHelpers.emptyPage2); + is(e.detail.canGoBack, true); + is(e.detail.canGoForward, true); checkCanGoBackAndForward(true, true, test6); }); iframe.goBack(); @@ -89,7 +93,9 @@ function test5() { function test6() { addOneShotIframeEventListener('mozbrowserlocationchange', function(e) { - is(e.detail, browserElementTestHelpers.emptyPage1); + is(e.detail.url, browserElementTestHelpers.emptyPage1); + is(e.detail.canGoBack, false); + is(e.detail.canGoForward, true); checkCanGoBackAndForward(false, true, SimpleTest.finish); }); iframe.goBack(); diff --git a/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js b/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js index 1ea15109896f..b326028067ad 100644 --- a/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js +++ b/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js @@ -24,12 +24,12 @@ function runTest() { document.body.appendChild(e.detail.frameElement); e.detail.frameElement.addEventListener('mozbrowserlocationchange', function(e) { - if (e.detail == "http://example.com/#2") { + if (e.detail.url == "http://example.com/#2") { ok(true, "Got locationchange to http://example.com/#2"); SimpleTest.finish(); } else { - ok(true, "Got locationchange to " + e.detail); + ok(true, "Got locationchange to " + e.detail.url); } }); diff --git a/dom/browser-element/mochitest/browserElement_DataURI.js b/dom/browser-element/mochitest/browserElement_DataURI.js index d2df39a20233..f57f4566a936 100644 --- a/dom/browser-element/mochitest/browserElement_DataURI.js +++ b/dom/browser-element/mochitest/browserElement_DataURI.js @@ -36,7 +36,7 @@ function runTest2() { ok(e.isTrusted, 'Event should be trusted.'); ok(!sawLocationChange, 'Just one locationchange event.'); ok(!sawLoadEnd, 'locationchange before load.'); - is(e.detail, 'data:text/html,1', "event's reported location"); + is(e.detail.url, 'data:text/html,1', "event's reported location"); sawLocationChange = true; }); diff --git a/dom/browser-element/mochitest/browserElement_ExposableURI.js b/dom/browser-element/mochitest/browserElement_ExposableURI.js index e38d809e0d25..435e11a807d7 100644 --- a/dom/browser-element/mochitest/browserElement_ExposableURI.js +++ b/dom/browser-element/mochitest/browserElement_ExposableURI.js @@ -13,7 +13,7 @@ var iframe; function testPassword() { function locationchange(e) { - var uri = e.detail; + var uri = e.detail.url; is(uri, 'http://mochi.test:8888/tests/dom/browser-element/mochitest/file_empty.html', "Username and password shouldn't be exposed in uri."); SimpleTest.finish(); @@ -33,7 +33,7 @@ function testWyciwyg() { if (locationChangeCount == 0) { locationChangeCount ++; } else if (locationChangeCount == 1) { - var uri = e.detail; + var uri = e.detail.url; is(uri, 'http://mochi.test:8888/tests/dom/browser-element/mochitest/file_wyciwyg.html', "Scheme in string shouldn't be wyciwyg"); iframe.removeEventListener('mozbrowserlocationchange', locationchange); SimpleTest.executeSoon(testPassword); diff --git a/dom/browser-element/mochitest/browserElement_FirstPaint.js b/dom/browser-element/mochitest/browserElement_FirstPaint.js index 99b886c0f02e..ad67abc3aac0 100644 --- a/dom/browser-element/mochitest/browserElement_FirstPaint.js +++ b/dom/browser-element/mochitest/browserElement_FirstPaint.js @@ -24,13 +24,13 @@ function runTest() { }); iframe.addEventListener('mozbrowserlocationchange', function(e) { - if (e.detail == browserElementTestHelpers.emptyPage1) { + if (e.detail.url == browserElementTestHelpers.emptyPage1) { gotFirstLocationChange = true; if (gotFirstPaint) { iframe.src = browserElementTestHelpers.emptyPage1 + '?2'; } } - else if (e.detail.endsWith('?2')) { + else if (e.detail.url.endsWith('?2')) { SimpleTest.finish(); } }); diff --git a/dom/browser-element/mochitest/browserElement_ForwardName.js b/dom/browser-element/mochitest/browserElement_ForwardName.js index 5f4fe8b4863e..326c1ef248d2 100644 --- a/dom/browser-element/mochitest/browserElement_ForwardName.js +++ b/dom/browser-element/mochitest/browserElement_ForwardName.js @@ -20,8 +20,8 @@ function runTest() { }); iframe.addEventListener('mozbrowserlocationchange', function(e) { - ok(true, "Got locationchange to " + e.detail); - if (e.detail.endsWith("ForwardName.html#finish")) { + ok(true, "Got locationchange to " + e.detail.url); + if (e.detail.url.endsWith("ForwardName.html#finish")) { SimpleTest.finish(); } }); diff --git a/dom/browser-element/mochitest/browserElement_LoadEvents.js b/dom/browser-element/mochitest/browserElement_LoadEvents.js index f08a0fad18de..8b43d8e753e5 100644 --- a/dom/browser-element/mochitest/browserElement_LoadEvents.js +++ b/dom/browser-element/mochitest/browserElement_LoadEvents.js @@ -38,7 +38,7 @@ function runTest() { seenLocationChange = true; ok(seenLoadStart, 'Location change after load start.'); ok(!seenLoadEnd, 'Location change before load end.'); - ok(e.detail, browserElementTestHelpers.emptyPage1, "event's reported location"); + ok(e.detail.url, browserElementTestHelpers.emptyPage1, "event's reported location"); } function loadend(e) { @@ -91,7 +91,7 @@ function runTest2() { seenLocationChange = true; ok(seenLoadStart, 'Location change after load start.'); ok(!seenLoadEnd, 'Location change before load end.'); - ok(e.detail, browserElementTestHelpers.emptyPage2, "event's reported location"); + ok(e.detail.url, browserElementTestHelpers.emptyPage2, "event's reported location"); }); iframe.addEventListener('mozbrowserloadend', function(e) { diff --git a/dom/browser-element/mochitest/browserElement_PurgeHistory.js b/dom/browser-element/mochitest/browserElement_PurgeHistory.js index dac013518537..4815f03e7e48 100644 --- a/dom/browser-element/mochitest/browserElement_PurgeHistory.js +++ b/dom/browser-element/mochitest/browserElement_PurgeHistory.js @@ -75,7 +75,7 @@ function test3() { function test4() { addOneShotIframeEventListener('mozbrowserlocationchange', function(e) { - is(e.detail, browserElementTestHelpers.emptyPage3); + is(e.detail.url, browserElementTestHelpers.emptyPage3); purgeHistory(SimpleTest.finish); }); diff --git a/dom/browser-element/mochitest/browserElement_SendEvent.js b/dom/browser-element/mochitest/browserElement_SendEvent.js index 4d5816a18b17..a65d6f24fba8 100644 --- a/dom/browser-element/mochitest/browserElement_SendEvent.js +++ b/dom/browser-element/mochitest/browserElement_SendEvent.js @@ -35,7 +35,7 @@ function runTest() { iframe.addEventListener("mozbrowserlocationchange", function onlocchange(e) { var a = document.createElement("a"); - a.href = e.detail; + a.href = e.detail.url; switch (a.hash) { case "#mousedown": diff --git a/dom/browser-element/mochitest/browserElement_TargetTop.js b/dom/browser-element/mochitest/browserElement_TargetTop.js index 9dd3340df9e2..54bad9c423a8 100644 --- a/dom/browser-element/mochitest/browserElement_TargetTop.js +++ b/dom/browser-element/mochitest/browserElement_TargetTop.js @@ -18,7 +18,7 @@ function runTest() { }); iframe.addEventListener('mozbrowserlocationchange', function(e) { - if (/file_browserElement_TargetTop.html\?2$/.test(e.detail)) { + if (/file_browserElement_TargetTop.html\?2$/.test(e.detail.url)) { ok(true, 'Got the locationchange we were looking for.'); SimpleTest.finish(); }