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

Side by Side Diff: chrome/common/visitedlink_common.h

Issue 12928: Implement visited link coloring. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/common/visitedlink_common.cc » ('j') | webkit/glue/chromium_bridge_impl.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_COMMON_VISITEDLINK_COMMON_H__ 5 #ifndef CHROME_COMMON_VISITEDLINK_COMMON_H__
6 #define CHROME_COMMON_VISITEDLINK_COMMON_H__ 6 #define CHROME_COMMON_VISITEDLINK_COMMON_H__
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 // A hash value of a fingerprint 48 // A hash value of a fingerprint
49 typedef int32 Hash; 49 typedef int32 Hash;
50 50
51 // A fingerprint or hash value that does not exist 51 // A fingerprint or hash value that does not exist
52 static const Fingerprint null_fingerprint_; 52 static const Fingerprint null_fingerprint_;
53 static const Hash null_hash_; 53 static const Hash null_hash_;
54 54
55 VisitedLinkCommon(); 55 VisitedLinkCommon();
56 virtual ~VisitedLinkCommon(); 56 virtual ~VisitedLinkCommon();
57 57
58 // Computes the fingerprint of the key and looks it up in the table. We 58 // Returns the fingerprint for the given URL.
59 // return true if found. Does not modify the hastable. The input should be 59 Fingerprint ComputeURLFingerprint(const char* canonical_url,
60 // the canonical 16-bit URL. 60 size_t url_len) const {
61 return ComputeURLFingerprint(canonical_url, url_len, salt_);
62 }
63
64 // Looks up the given key in the table. The fingerprint for the URL is
65 // computed if you call one with the string argument. Returns true if found.
66 // Does not modify the hastable.
61 bool IsVisited(const char* canonical_url, size_t url_len) const; 67 bool IsVisited(const char* canonical_url, size_t url_len) const;
62 bool IsVisited(const GURL& url) const { 68 bool IsVisited(const GURL& url) const {
63 return IsVisited(url.spec().data(), url.spec().size()); 69 return IsVisited(url.spec().data(), url.spec().size());
64 } 70 }
71 bool IsVisited(Fingerprint fingerprint) const;
65 72
66 #ifdef UNIT_TEST 73 #ifdef UNIT_TEST
67 // Returns statistics about DB usage 74 // Returns statistics about DB usage
68 void GetUsageStatistics(int32* table_size, 75 void GetUsageStatistics(int32* table_size,
69 VisitedLinkCommon::Fingerprint** fingerprints) { 76 VisitedLinkCommon::Fingerprint** fingerprints) {
70 *table_size = table_length_; 77 *table_size = table_length_;
71 *fingerprints = hash_table_; 78 *fingerprints = hash_table_;
72 } 79 }
73 #endif 80 #endif
74 81
(...skipping 11 matching lines...) Expand all
86 // Returns the fingerprint at the given index into the URL table. This 93 // Returns the fingerprint at the given index into the URL table. This
87 // function should be called instead of accessing the table directly to contai n 94 // function should be called instead of accessing the table directly to contai n
88 // endian issues. 95 // endian issues.
89 Fingerprint FingerprintAt(int32 table_offset) const { 96 Fingerprint FingerprintAt(int32 table_offset) const {
90 DCHECK(hash_table_); 97 DCHECK(hash_table_);
91 if (!hash_table_) 98 if (!hash_table_)
92 return 0; 99 return 0;
93 return hash_table_[table_offset]; 100 return hash_table_[table_offset];
94 } 101 }
95 102
96 // Returns true if the given fingerprint is in the table.
97 bool IsVisited(Fingerprint fingerprint) const;
98
99 // Computes the fingerprint of the given canonical URL. It is static so the 103 // Computes the fingerprint of the given canonical URL. It is static so the
100 // same algorithm can be re-used by the table rebuilder, so you will have to 104 // same algorithm can be re-used by the table rebuilder, so you will have to
101 // pass the salt as a parameter. 105 // pass the salt as a parameter. See the non-static version above if you
106 // want to use the current class' salt.
102 static Fingerprint ComputeURLFingerprint(const char* canonical_url, 107 static Fingerprint ComputeURLFingerprint(const char* canonical_url,
103 size_t url_len, 108 size_t url_len,
104 const uint8 salt[LINK_SALT_LENGTH]); 109 const uint8 salt[LINK_SALT_LENGTH]);
105 110
106 // Computes the hash value of the given fingerprint, this is used as a lookup 111 // Computes the hash value of the given fingerprint, this is used as a lookup
107 // into the hashtable. 112 // into the hashtable.
108 static Hash HashFingerprint(Fingerprint fingerprint, int32 table_length) { 113 static Hash HashFingerprint(Fingerprint fingerprint, int32 table_length) {
109 return static_cast<Hash>(fingerprint % table_length); 114 return static_cast<Hash>(fingerprint % table_length);
110 } 115 }
111 Hash HashFingerprint(Fingerprint fingerprint) const { // uses the current hash table 116 Hash HashFingerprint(Fingerprint fingerprint) const { // uses the current hash table
112 return HashFingerprint(fingerprint, table_length_); 117 return HashFingerprint(fingerprint, table_length_);
113 } 118 }
114 119
115 // pointer to the first item 120 // pointer to the first item
116 VisitedLinkCommon::Fingerprint* hash_table_; 121 VisitedLinkCommon::Fingerprint* hash_table_;
117 122
118 // the number of items in the hash table 123 // the number of items in the hash table
119 int32 table_length_; 124 int32 table_length_;
120 125
121 // salt used for each URL when computing the fingerprint 126 // salt used for each URL when computing the fingerprint
122 uint8 salt_[LINK_SALT_LENGTH]; 127 uint8 salt_[LINK_SALT_LENGTH];
123 128
124 private: 129 private:
125 DISALLOW_EVIL_CONSTRUCTORS(VisitedLinkCommon); 130 DISALLOW_EVIL_CONSTRUCTORS(VisitedLinkCommon);
126 }; 131 };
127 132
128 #endif // WIN_COMMON_VISITEDLINK_COMMON_H__ 133 #endif // WIN_COMMON_VISITEDLINK_COMMON_H__
129 134
OLDNEW
« no previous file with comments | « no previous file | chrome/common/visitedlink_common.cc » ('j') | webkit/glue/chromium_bridge_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698