Index: chrome/browser/history/top_sites_cache.h |
diff --git a/chrome/browser/history/top_sites_cache.h b/chrome/browser/history/top_sites_cache.h |
index 822d18903dc00e05ceb538e3975f71b2a6a8e3cf..7e189f2163e36da11980fa77af653b72d2a9388d 100644 |
--- a/chrome/browser/history/top_sites_cache.h |
+++ b/chrome/browser/history/top_sites_cache.h |
@@ -6,6 +6,7 @@ |
#define CHROME_BROWSER_HISTORY_TOP_SITES_CACHE_H_ |
#include <map> |
+#include <string> |
#include <utility> |
#include "base/memory/ref_counted.h" |
@@ -13,6 +14,20 @@ |
namespace history { |
+// The entries in CanonicalURLs, see CanonicalURLs for details. The second |
+// argument gives the index of the URL into MostVisitedURLs redirects. |
+typedef std::pair<MostVisitedURL*, size_t> CanonicalURLEntry; |
+ |
+// Defines the "path-prefix" compare of two URLs |
+// Comparator used for CanonicalURLs. |
+class CanonicalURLComparator { |
+ public: |
+ bool operator()(const CanonicalURLEntry& e1, |
+ const CanonicalURLEntry& e2) const; |
+ static bool CompareString(const std::string& s1, |
+ const std::string& s2); |
+}; |
+ |
// TopSitesCache caches the top sites and thumbnails for TopSites. |
class TopSitesCache { |
public: |
@@ -37,6 +52,12 @@ class TopSitesCache { |
bool GetPageThumbnail(const GURL& url, |
scoped_refptr<base::RefCountedMemory>* bytes); |
+ // Similar to GetPageThumbnail(), but rather than requiring URL exact match, |
beaudoin
2013/09/03 23:22:39
URL exact match --> an exact match
huangs
2013/09/04 02:02:05
Done.
|
+ // only requires the specified URL to be the prefix of a URL in TopSites. |
+ // If multiple matches exist, considers the lexicographically earliest one. |
beaudoin
2013/09/03 23:22:39
considers [...] --> returns the thumbnail for the
huangs
2013/09/04 02:02:05
Done.
|
+ bool GetPageThumbnailForPrefix(const GURL& prefix_url, |
+ scoped_refptr<base::RefCountedMemory>* bytes); |
+ |
// Fetches the thumbnail score for the specified url. Returns true if |
// there is a thumbnail score for the specified url. |
bool GetPageThumbnailScore(const GURL& url, ThumbnailScore* score); |
@@ -44,26 +65,27 @@ class TopSitesCache { |
// Returns the canonical URL for |url|. |
const GURL& GetCanonicalURL(const GURL& url); |
+ // Returns the canonical URL for |url_prefix|, which specifies a prefix for |
+ // stored URLs in |canonical_urls_|. |
beaudoin
2013/09/03 23:22:39
I think the comment about favoring the first URL i
huangs
2013/09/04 02:02:05
Also performs canonicalization. Updated comments.
|
+ const GURL& GetCanonicalURLForPrefix(const GURL& url_prefix); |
+ |
// Returns true if |url| is known. |
bool IsKnownURL(const GURL& url); |
// Returns the index into |top_sites_| for |url|. |
size_t GetURLIndex(const GURL& url); |
- private: |
- // The entries in CanonicalURLs, see CanonicalURLs for details. The second |
- // argument gives the index of the URL into MostVisitedURLs redirects. |
- typedef std::pair<MostVisitedURL*, size_t> CanonicalURLEntry; |
- |
- // Comparator used for CanonicalURLs. |
- class CanonicalURLComparator { |
- public: |
- bool operator()(const CanonicalURLEntry& e1, |
- const CanonicalURLEntry& e2) const { |
- return e1.first->redirects[e1.second] < e2.first->redirects[e2.second]; |
- } |
- }; |
+ // Returns whether or not |url1| is a prefix of |url2|. Criteria: |
+ // - Scheme, host, port: exact match required. |
+ // - Path: considered as a list of path components (e.g., ["a", "bb"] in |
+ // "/a/bb"), and |url1|'s list must be a prefix of |url2|'s list. |
+ // - Query: ignored. |
+ // Note that "http://www.google.com/test" is NOT a prefix of |
+ // "http://www.google.com/testing", even though "test" is prefix of "testing". |
beaudoin
2013/09/03 23:22:39
Nit: a prefix
huangs
2013/09/04 02:02:05
Done.
|
+ // Also, "http://www.google.com" will not match "http://www.google.com:80". |
+ static bool UrlIsPrefix(const GURL& url1, const GURL& url2); |
+ private: |
// This is used to map from redirect url to the MostVisitedURL the redirect is |
// from. Ideally this would be map<GURL, size_t> (second param indexing into |
// top_sites_), but this results in duplicating all redirect urls. As some |
@@ -80,8 +102,11 @@ class TopSitesCache { |
// Stores a set of redirects. This is used by GenerateCanonicalURLs. |
void StoreRedirectChain(const RedirectList& redirects, size_t destination); |
- // Returns the iterator into canconical_urls_ for the specified url. |
- CanonicalURLs::iterator GetCanonicalURLsIterator(const GURL& url); |
+ // Returns the iterator into canonical_urls_ for the |url|. If |match_prefix| |
+ // is true, then returns the first iterator into canonical_urls_ that has |
+ // |urL| as a path-prefix. |
beaudoin
2013/09/03 23:22:39
Nit: |url|
huangs
2013/09/04 02:02:05
Done.
|
+ CanonicalURLs::iterator GetCanonicalURLsIterator(const GURL& url, |
+ bool match_prefix); |
// The top sites. |
MostVisitedURLList top_sites_; |