1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import "ios/web/history_state_util.h"
7 #include "base/logging.h"
11 namespace history_state_util {
13 bool IsHistoryStateChangeValid(const GURL& currentUrl,
15 // These two checks are very important to the security of the page. We cannot
16 // allow the page to change the state to an invalid URL.
17 CHECK(currentUrl.is_valid());
18 CHECK(toUrl.is_valid());
20 return toUrl.GetOrigin() == currentUrl.GetOrigin();
23 GURL GetHistoryStateChangeUrl(const GURL& currentUrl,
25 const std::string& destination) {
26 if (!baseUrl.is_valid())
28 GURL toUrl = baseUrl.Resolve(destination);
30 if (!toUrl.is_valid() || !IsHistoryStateChangeValid(currentUrl, toUrl))
36 } // namespace history_state_util