| Index: chrome/common/visitedlink_common.h
 | 
| diff --git a/chrome/common/visitedlink_common.h b/chrome/common/visitedlink_common.h
 | 
| deleted file mode 100644
 | 
| index 546bd4fa3cbaeadaae5a07f014bf070fb929f9a3..0000000000000000000000000000000000000000
 | 
| --- a/chrome/common/visitedlink_common.h
 | 
| +++ /dev/null
 | 
| @@ -1,134 +0,0 @@
 | 
| -// Copyright (c) 2006-2008 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_COMMON_VISITEDLINK_COMMON_H__
 | 
| -#define CHROME_COMMON_VISITEDLINK_COMMON_H__
 | 
| -
 | 
| -#include <vector>
 | 
| -
 | 
| -#include "base/basictypes.h"
 | 
| -
 | 
| -class GURL;
 | 
| -
 | 
| -// number of bytes in the salt
 | 
| -#define LINK_SALT_LENGTH 8
 | 
| -
 | 
| -// A multiprocess-safe database of the visited links for the browser. There
 | 
| -// should be exactly one process that has write access (implemented by
 | 
| -// VisitedLinkMaster), while all other processes should be read-only
 | 
| -// (implemented by VisitedLinkSlave). These other processes add links by calling
 | 
| -// the writer process to add them for it. The writer may also notify the readers
 | 
| -// to replace their table when the table is resized.
 | 
| -//
 | 
| -// IPC is not implemented in these classes. This is done through callback
 | 
| -// functions supplied by the creator of these objects to allow more flexibility,
 | 
| -// especially for testing.
 | 
| -//
 | 
| -// This class defines the common base for these others. We implement accessors
 | 
| -// for looking things up in the hash table, and for computing hash values and
 | 
| -// fingerprints. Both the master and the slave inherit from this, and add their
 | 
| -// own code to set up and change these values as their design requires. The
 | 
| -// slave pretty much just sets up the shared memory and saves the pointer. The
 | 
| -// master does a lot of work to manage the table, reading and writing it to and
 | 
| -// from disk, and resizing it when it gets too full.
 | 
| -//
 | 
| -// To ask whether a page is in history, we compute a 64-bit fingerprint of the
 | 
| -// URL. This URL is hashed and we see if it is in the URL hashtable. If it is,
 | 
| -// we consider it visited. Otherwise, it is unvisited. Note that it is possible
 | 
| -// to get collisions, which is the penalty for not storing all URL strings in
 | 
| -// memory (which could get to be more than we want to have in memory). We use
 | 
| -// a salt value for the links on one computer so that an attacker can not
 | 
| -// manually create a link that causes a collision.
 | 
| -class VisitedLinkCommon {
 | 
| - public:
 | 
| -  // A number that identifies the URL.
 | 
| -  typedef uint64 Fingerprint;
 | 
| -  typedef std::vector<Fingerprint> Fingerprints;
 | 
| -
 | 
| -  // A hash value of a fingerprint
 | 
| -  typedef int32 Hash;
 | 
| -
 | 
| -  // A fingerprint or hash value that does not exist
 | 
| -  static const Fingerprint null_fingerprint_;
 | 
| -  static const Hash null_hash_;
 | 
| -
 | 
| -  VisitedLinkCommon();
 | 
| -  virtual ~VisitedLinkCommon();
 | 
| -
 | 
| -  // Returns the fingerprint for the given URL.
 | 
| -  Fingerprint ComputeURLFingerprint(const char* canonical_url,
 | 
| -                                    size_t url_len) const {
 | 
| -    return ComputeURLFingerprint(canonical_url, url_len, salt_);
 | 
| -  }
 | 
| -
 | 
| -  // Looks up the given key in the table. The fingerprint for the URL is
 | 
| -  // computed if you call one with the string argument. Returns true if found.
 | 
| -  // Does not modify the hastable.
 | 
| -  bool IsVisited(const char* canonical_url, size_t url_len) const;
 | 
| -  bool IsVisited(const GURL& url) const;
 | 
| -  bool IsVisited(Fingerprint fingerprint) const;
 | 
| -
 | 
| -#ifdef UNIT_TEST
 | 
| -  // Returns statistics about DB usage
 | 
| -  void GetUsageStatistics(int32* table_size,
 | 
| -                          VisitedLinkCommon::Fingerprint** fingerprints) {
 | 
| -    *table_size = table_length_;
 | 
| -    *fingerprints = hash_table_;
 | 
| -  }
 | 
| -#endif
 | 
| -
 | 
| - protected:
 | 
| -  // This structure is at the beginning of the shared memory so that the slaves
 | 
| -  // can get stats on the table
 | 
| -  struct SharedHeader {
 | 
| -    // see goes into table_length_
 | 
| -    uint32 length;
 | 
| -
 | 
| -    // goes into salt_
 | 
| -    uint8 salt[LINK_SALT_LENGTH];
 | 
| -  };
 | 
| -
 | 
| -  // Returns the fingerprint at the given index into the URL table. This
 | 
| -  // function should be called instead of accessing the table directly to
 | 
| -  // contain endian issues.
 | 
| -  Fingerprint FingerprintAt(int32 table_offset) const {
 | 
| -    if (!hash_table_)
 | 
| -      return null_fingerprint_;
 | 
| -    return hash_table_[table_offset];
 | 
| -  }
 | 
| -
 | 
| -  // Computes the fingerprint of the given canonical URL. It is static so the
 | 
| -  // same algorithm can be re-used by the table rebuilder, so you will have to
 | 
| -  // pass the salt as a parameter. See the non-static version above if you
 | 
| -  // want to use the current class' salt.
 | 
| -  static Fingerprint ComputeURLFingerprint(const char* canonical_url,
 | 
| -                                           size_t url_len,
 | 
| -                                           const uint8 salt[LINK_SALT_LENGTH]);
 | 
| -
 | 
| -  // Computes the hash value of the given fingerprint, this is used as a lookup
 | 
| -  // into the hashtable.
 | 
| -  static Hash HashFingerprint(Fingerprint fingerprint, int32 table_length) {
 | 
| -    if (table_length == 0)
 | 
| -      return null_hash_;
 | 
| -    return static_cast<Hash>(fingerprint % table_length);
 | 
| -  }
 | 
| -  // Uses the current hashtable.
 | 
| -  Hash HashFingerprint(Fingerprint fingerprint) const {
 | 
| -    return HashFingerprint(fingerprint, table_length_);
 | 
| -  }
 | 
| -
 | 
| -  // pointer to the first item
 | 
| -  VisitedLinkCommon::Fingerprint* hash_table_;
 | 
| -
 | 
| -  // the number of items in the hash table
 | 
| -  int32 table_length_;
 | 
| -
 | 
| -  // salt used for each URL when computing the fingerprint
 | 
| -  uint8 salt_[LINK_SALT_LENGTH];
 | 
| -
 | 
| - private:
 | 
| -  DISALLOW_COPY_AND_ASSIGN(VisitedLinkCommon);
 | 
| -};
 | 
| -
 | 
| -#endif  // CHROME_COMMON_VISITEDLINK_COMMON_H_
 | 
| 
 |