| Index: chrome/browser/safe_browsing/prefix_set.h
|
| diff --git a/chrome/browser/safe_browsing/prefix_set.h b/chrome/browser/safe_browsing/prefix_set.h
|
| index cb2cd9f6debfa64071cc776fed1993682aab6505..246beea5d28140fa6858d48104caa0c66ef09e1b 100644
|
| --- a/chrome/browser/safe_browsing/prefix_set.h
|
| +++ b/chrome/browser/safe_browsing/prefix_set.h
|
| @@ -37,8 +37,7 @@
|
| // 2^16 apart, which would need 512k (versus 256k to store the raw
|
| // data).
|
| //
|
| -// TODO(shess): Write serialization code. Something like this should
|
| -// work:
|
| +// The on-disk format looks like:
|
| // 4 byte magic number
|
| // 4 byte version number
|
| // 4 byte |index_.size()|
|
| @@ -55,6 +54,8 @@
|
|
|
| #include "chrome/browser/safe_browsing/safe_browsing_util.h"
|
|
|
| +class FilePath;
|
| +
|
| namespace safe_browsing {
|
|
|
| class PrefixSet {
|
| @@ -65,6 +66,10 @@ class PrefixSet {
|
| // |true| if |prefix| was in |prefixes| passed to the constructor.
|
| bool Exists(SBPrefix prefix) const;
|
|
|
| + // Persist the set on disk.
|
| + static PrefixSet* LoadFile(const FilePath& filter_name);
|
| + bool WriteFile(const FilePath& filter_name) const;
|
| +
|
| // Regenerate the vector of prefixes passed to the constructor into
|
| // |prefixes|. Prefixes will be added in sorted order.
|
| void GetPrefixes(std::vector<SBPrefix>* prefixes);
|
| @@ -78,6 +83,11 @@ class PrefixSet {
|
| // for |Exists()| under control.
|
| static const size_t kMaxRun = 100;
|
|
|
| + // Helper for |LoadFile()|. Steals the contents of |index| and
|
| + // |deltas| using |swap()|.
|
| + PrefixSet(std::vector<std::pair<SBPrefix,size_t> > *index,
|
| + std::vector<uint16> *deltas);
|
| +
|
| // Top-level index of prefix to offset in |deltas_|. Each pair
|
| // indicates a base prefix and where the deltas from that prefix
|
| // begin in |deltas_|. The deltas for a pair end at the next pair's
|
|
|