2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 # Generates the hashed_ad_networks.[h,cc] files. Takes an input the name of a
7 # file with all ad network host patterns, new-line separated. If given an
8 # optional root output file name, generates the files <root_output_name>.h and
9 # <root_output_name>.cc. If no output name is given, the output name is
10 # 'hashed_ad_networks'.
12 # These are found at chrome/browser/extensions/activity_log/hashed_ad_networks.*
13 # and are used by the ActivityLog and HashedAdNetworkDatabase for recognizing
16 from hashlib
import sha256
17 from argparse
import ArgumentParser
21 // Copyright 2014 The Chromium Authors. All rights reserved.
22 // Use of this source code is governed by a BSD-style license that can be
23 // found in the LICENSE file.
25 // This file is automatically generated from the script in
26 // chrome/browser/extensions/activity_log/generate_ad_network_hashes.py.
27 // DO NOT MODIFY BY HAND!
32 #ifndef CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_HASHED_AD_NETWORKS_H_
33 #define CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_HASHED_AD_NETWORKS_H_
35 #include "base/basictypes.h"
37 namespace extensions {
39 extern const char* kHashedAdNetworks[];
40 extern const int kNumHashedAdNetworks;
42 } // namespace extensions
44 #endif // CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_HASHED_AD_NETWORKS_H_
49 #include "chrome/browser/extensions/activity_log/hashed_ad_networks.h"
51 #include "base/basictypes.h"
53 namespace extensions {
55 const char* const kHashedAdNetworks[] = {
59 const int kNumHashedAdNetworks = arraysize(kHashedAdNetworks);
61 } // namespace extensions
65 def Generate(input_filename
, output_root_filename
):
66 '''Generate the .h and .cc files for the hashed_ad_network source files.
68 The name of the input file, which should have one host to be hashed per
70 |output_root_filename|
71 The root name of the output files. This will generate a .h and .cc file,
72 like |output_root_filename|.[h,cc].
74 with
open(input_filename
, 'r') as file:
75 hashes
= ['"%s"' % sha256(line
.strip()).hexdigest()[:16].upper()
76 for line
in file.readlines()]
78 # Hashes should be sorted in C++ so we can do a binary search over them.
80 ad_networks
= ',\n '.join(hashes
)
81 for ext
, template
in (('.h', _H_TEMPLATE
),
82 ('.cc', _CC_TEMPLATE
)):
83 with
open(output_root_filename
+ ext
, 'w') as out
:
84 out
.write(template
% {
86 'ad_networks': ad_networks
90 if __name__
== '__main__':
91 parser
= ArgumentParser(
92 description
='Generate hashed_ad_networks.[h,cc] source files')
95 help='The name of the input file with the hosts to be hashed')
98 help='The root name of the output source file',
99 default
='hashed_ad_networks')
101 args
= parser
.parse_args()
102 Generate(args
.input_file
, args
.out
)