12345678910111213141516171819202122232425262728293031323334353637 |
- // 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.
- #include "ios/web/history_state_util.h"
- #include "base/check.h"
- #include "url/gurl.h"
- namespace web {
- namespace history_state_util {
- bool IsHistoryStateChangeValid(const GURL& current_url, const GURL& to_url) {
- // These two checks are very important to the security of the page. We cannot
- // allow the page to change the state to an invalid URL.
- CHECK(current_url.is_valid());
- CHECK(to_url.is_valid());
- return to_url.DeprecatedGetOriginAsURL() ==
- current_url.DeprecatedGetOriginAsURL();
- }
- GURL GetHistoryStateChangeUrl(const GURL& current_url,
- const GURL& base_url,
- const std::string& destination) {
- if (!base_url.is_valid())
- return GURL();
- GURL to_url = base_url.Resolve(destination);
- if (!to_url.is_valid() || !IsHistoryStateChangeValid(current_url, to_url))
- return GURL();
- return to_url;
- }
- } // namespace history_state_util
- } // namespace web
|