function fireUrlChange() {
    newLocation = null;
    if (lastBrowserUrl == self.url()) return;

    lastBrowserUrl = self.url();
    forEach(urlChangeListeners, function(listener) {
      listener(self.url());
    });
  }
@name ng.$browser#url
@methodOf ng.$browser

@description
GETTER:
Without any argument, this method just returns current value of location.href.

SETTER:
With at least one argument, this method sets url to new value.
If html5 history api supported, pushState/replaceState is used, otherwise
location.href/location.replace is used.
Returns its own instance to allow chaining

NOTE: this api is intended for use only by the $location service. Please use the
{@link ng.$location $location service} to change url.

@param {string} url New url (when used as setter)
@param {boolean=} replace Should new url replace current history record ?