| Index: chrome/browser/history/url_utils.h
|
| diff --git a/chrome/browser/history/url_utils.h b/chrome/browser/history/url_utils.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..77664a362dd5b28cae6142d6556f92dcfff788c9
|
| --- /dev/null
|
| +++ b/chrome/browser/history/url_utils.h
|
| @@ -0,0 +1,42 @@
|
| +// Copyright (c) 2013 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 CHROME_BROWSER_HISTORY_URL_UTILS_H_
|
| +#define CHROME_BROWSER_HISTORY_URL_UTILS_H_
|
| +
|
| +#include <string>
|
| +
|
| +#include "chrome/browser/history/history_types.h"
|
| +
|
| +namespace history {
|
| +
|
| +// CanonicalURLStringCompare performs lexicographical comparison of two strings
|
| +// that represent valid URLs, so that if the pre-path (scheme, host, and port)
|
| +// parts are equal, then the path parts are compared by treating path components
|
| +// (delimited by "/") as separate tokens that form units of comparison.
|
| +// For example, let us compare |s1| and |s2|, with
|
| +// |s1| = "http://www.google.com:80/base/test/ab/cd?query/stuff"
|
| +// |s2| = "http://www.google.com:80/base/test-case/yz#ref/stuff"
|
| +// The pre-path parts "http://www.google.com:80/" match. We treat the paths as
|
| +// |s1| => ["base", "test", "ab", "cd"]
|
| +// |s2| => ["base", "test-case", "yz"]
|
| +// Components 1 "base" are identical. Components 2 yield "test" < "test-case",
|
| +// so we consider |s1| < |s2|, and return true. Note that naive string
|
| +// comparison would yield the opposite (|s1| > |s2|), since '/' > '-' in ASCII.
|
| +// Note that path can be terminated by "?query" or "#ref". The post-path parts
|
| +// are compared in an arbitrary (but consistent) way.
|
| +bool CanonicalURLStringCompare(const std::string& s1, const std::string& s2);
|
| +
|
| +// Returns whether or not |url1| is a "URL prefix" of |url2|. Criteria:
|
| +// - Scheme, host, port: exact match required.
|
| +// - Path: treated as a list of path components (e.g., ["a", "bb"] for "/a/bb"),
|
| +// and |url1|'s list must be a prefix of |url2|'s list.
|
| +// - Query and ref: ignored.
|
| +// Note that "http://www.google.com/test" is NOT a prefix of
|
| +// "http://www.google.com/testing", although "test" is a prefix of "testing".
|
| +bool UrlIsPrefix(const GURL& url1, const GURL& url2);
|
| +
|
| +} // namespace history
|
| +
|
| +#endif // CHROME_BROWSER_HISTORY_URL_UTILS_H_
|
|
|