/**
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Copyright (c) KALEIDOS INC
 */

"use strict";

goog.provide("app.util.browser_history");
goog.require("goog.history.Html5History");

goog.scope(function() {
  const self = app.util.browser_history;
  const Html5History = goog.history.Html5History;

  class TokenTransformer {
    retrieveToken(pathPrefix, location) {
      return location.pathname.substr(pathPrefix.length) + location.search;
    }

    createUrl(token, pathPrefix, location) {
      return pathPrefix + token;
    }
  }

  self.create = function() {
    const instance = new Html5History(null, new TokenTransformer());
    instance.setUseFragment(true);
    return instance;
  };

  self.enable_BANG_ = function(instance) {
    instance.setEnabled(true);
  };

  self.disable_BANG_ = function(instance) {
    instance.setEnabled(false);
  };

  self.set_token_BANG_ = function(instance, token) {
    instance.setToken(token);
  }

  self.replace_token_BANG_ = function(instance, token) {
    instance.replaceToken(token);
  }
});
