// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_HISTORY_STATE_UTIL_H_
#define IOS_WEB_HISTORY_STATE_UTIL_H_

#include <string>

class GURL;

namespace web {
namespace history_state_util {

// Checks if toUrl is a valid argument to history.pushState() or
// history.replaceState() given the current URL.
bool IsHistoryStateChangeValid(const GURL& currentUrl,
                               const GURL& toUrl);

// Generates the appropriate full URL for a history.pushState() or
// history.replaceState() transition from currentURL to destination, resolved
// against baseURL. |destination| may be a relative URL. Will return an invalid
// URL if the resolved destination, or the transition, is not valid.
GURL GetHistoryStateChangeUrl(const GURL& currentUrl,
                              const GURL& baseUrl,
                              const std::string& destination);

}  // namespace history_state_util
}  // namespace web

#endif  // IOS_WEB_HISTORY_STATE_UTIL_H_
