Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1097)

Unified Diff: chrome/browser/history/url_utils.h

Issue 23477033: Implementing URL prefix match for history thumbnail cache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Inlining; comment fixes. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..b00b34d30abe91757d2c8408a3c56c0e7b9b3478
--- /dev/null
+++ b/chrome/browser/history/url_utils.h
@@ -0,0 +1,43 @@
+// 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
+// (deliminted by "/") as separate tokens that form units of comparison.
sky 2013/09/12 23:51:41 delimited
huangs 2013/09/13 02:30:37 Done.
+// 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, so we the path is
+// treated as
+// |s1| => ["base", "test", "ab", "cd"]
+// |s2| => ["base", "test-case", "yz"]
+// Component 1 "base" matches. Component 2 produces "test" < "test-case", thus
+// resulting in |s1| < |s2|, and we return true. Note that naive string
+// comparison would yield the opposite (|s1| > |s2|), since '/' > '-' in ASCII.
+// Note that path is 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_

Powered by Google App Engine
This is Rietveld 408576698