From f5a681ce1990d720a3fed05c6e60615bc903cfc1 Mon Sep 17 00:00:00 2001 From: thorn0 Date: Fri, 21 Nov 2014 01:57:57 +0200 Subject: [PATCH] fix($browser): .url() should return self in setter mode --- src/ng/browser.js | 2 +- test/ng/browserSpecs.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ng/browser.js b/src/ng/browser.js index 216ae59f3a2c..a9299343778d 100644 --- a/src/ng/browser.js +++ b/src/ng/browser.js @@ -170,7 +170,7 @@ function Browser(window, document, $log, $sniffer) { // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode. // See https://github.com/angular/angular.js/commit/ffb2701 if (lastBrowserUrl === url && (!$sniffer.history || sameState)) { - return; + return self; } var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url); lastBrowserUrl = url; diff --git a/test/ng/browserSpecs.js b/test/ng/browserSpecs.js index f14596a42e52..3778e0a6d904 100755 --- a/test/ng/browserSpecs.js +++ b/test/ng/browserSpecs.js @@ -576,6 +576,12 @@ describe('browser', function() { expect(browser.url('http://any.com')).toBe(browser); }); + it('should return $browser to allow chaining even if the previous and current URLs and states match', function() { + expect(browser.url('http://any.com').url('http://any.com')).toBe(browser); + var state = { any: 'foo' }; + expect(browser.url('http://any.com', false, state).url('http://any.com', false, state)).toBe(browser); + expect(browser.url('http://any.com', true, state).url('http://any.com', true, state)).toBe(browser); + }); it('should decode single quotes to work around FF bug 407273', function() { fakeWindow.location.href = "http://ff-bug/?single%27quote";