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

Side by Side Diff: tools/android/loading/analyze.py

Issue 1626393002: tools/android/loading: ContentClassificationLens, ads and tracking requests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 4 years, 10 months 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
« no previous file with comments | « no previous file | tools/android/loading/content_classification_lens.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #! /usr/bin/python 1 #! /usr/bin/python
2 # Copyright 2015 The Chromium Authors. All rights reserved. 2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import argparse 6 import argparse
7 import cgi 7 import cgi
8 import json 8 import json
9 import logging 9 import logging
10 import os 10 import os
11 import subprocess 11 import subprocess
12 import sys 12 import sys
13 import tempfile 13 import tempfile
14 import time 14 import time
15 15
16 _SRC_DIR = os.path.abspath(os.path.join( 16 _SRC_DIR = os.path.abspath(os.path.join(
17 os.path.dirname(__file__), '..', '..', '..')) 17 os.path.dirname(__file__), '..', '..', '..'))
18 18
19 sys.path.append(os.path.join(_SRC_DIR, 'third_party', 'catapult', 'devil')) 19 sys.path.append(os.path.join(_SRC_DIR, 'third_party', 'catapult', 'devil'))
20 from devil.android import device_utils 20 from devil.android import device_utils
21 from devil.android.sdk import intent 21 from devil.android.sdk import intent
22 22
23 sys.path.append(os.path.join(_SRC_DIR, 'build', 'android')) 23 sys.path.append(os.path.join(_SRC_DIR, 'build', 'android'))
24 import devil_chromium 24 import devil_chromium
25 from pylib import constants 25 from pylib import constants
26 26
27 import content_classification_lens
27 import device_setup 28 import device_setup
28 import loading_model 29 import loading_model
29 import loading_trace 30 import loading_trace
30 import trace_recorder 31 import trace_recorder
31 32
32 33
33 # TODO(mattcary): logging.info isn't that useful, as the whole (tools) world 34 # TODO(mattcary): logging.info isn't that useful, as the whole (tools) world
34 # uses logging info; we need to introduce logging modules to get finer-grained 35 # uses logging info; we need to introduce logging modules to get finer-grained
35 # output. For now we just do logging.warning. 36 # output. For now we just do logging.warning.
36 37
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 _WriteJson(f, cold_data) 141 _WriteJson(f, cold_data)
141 logging.warning('Wrote ' + json_output + '.cold') 142 logging.warning('Wrote ' + json_output + '.cold')
142 else: 143 else:
143 with open(json_output, 'w') as f: 144 with open(json_output, 'w') as f:
144 _WriteJson(f, cold_data) 145 _WriteJson(f, cold_data)
145 logging.warning('Wrote ' + json_output) 146 logging.warning('Wrote ' + json_output)
146 147
147 148
148 # TODO(mattcary): it would be nice to refactor so the --noads flag gets dealt 149 # TODO(mattcary): it would be nice to refactor so the --noads flag gets dealt
149 # with here. 150 # with here.
150 def _ProcessRequests(filename): 151 def _ProcessRequests(filename, ad_rules_filename='',
152 tracking_rules_filename=''):
151 with open(filename) as f: 153 with open(filename) as f:
152 return loading_model.ResourceGraph( 154 trace = loading_trace.LoadingTrace.FromJsonDict(json.load(f))
153 loading_trace.LoadingTrace.FromJsonDict(json.load(f))) 155 content_lens = (
156 content_classification_lens.ContentClassificationLens.WithRulesFiles(
157 trace, ad_rules_filename, tracking_rules_filename))
158 return loading_model.ResourceGraph(trace, content_lens)
154 159
155 160
156 def InvalidCommand(cmd): 161 def InvalidCommand(cmd):
157 sys.exit('Invalid command "%s"\nChoices are: %s' % 162 sys.exit('Invalid command "%s"\nChoices are: %s' %
158 (cmd, ' '.join(COMMAND_MAP.keys()))) 163 (cmd, ' '.join(COMMAND_MAP.keys())))
159 164
160 165
161 def DoCost(arg_str): 166 def DoCost(arg_str):
162 parser = argparse.ArgumentParser(description='Tabulates cost') 167 parser = argparse.ArgumentParser(description='Tabulates cost')
163 parser.add_argument('request_json') 168 parser.add_argument('request_json')
(...skipping 14 matching lines...) Expand all
178 183
179 184
180 def DoPng(arg_str): 185 def DoPng(arg_str):
181 parser = argparse.ArgumentParser( 186 parser = argparse.ArgumentParser(
182 description='Generates a PNG from a trace') 187 description='Generates a PNG from a trace')
183 parser.add_argument('request_json') 188 parser.add_argument('request_json')
184 parser.add_argument('png_output', nargs='?') 189 parser.add_argument('png_output', nargs='?')
185 parser.add_argument('--eog', action='store_true') 190 parser.add_argument('--eog', action='store_true')
186 parser.add_argument('--highlight') 191 parser.add_argument('--highlight')
187 parser.add_argument('--noads', action='store_true') 192 parser.add_argument('--noads', action='store_true')
193 parser.add_argument('--ad_rules', default='')
194 parser.add_argument('--tracking_rules', default='')
188 args = parser.parse_args(arg_str) 195 args = parser.parse_args(arg_str)
189 graph = _ProcessRequests(args.request_json) 196 graph = _ProcessRequests(
197 args.request_json, args.ad_rules, args.tracking_rules)
190 if args.noads: 198 if args.noads:
191 graph.Set(node_filter=graph.FilterAds) 199 graph.Set(node_filter=graph.FilterAds)
192 tmp = tempfile.NamedTemporaryFile() 200 tmp = tempfile.NamedTemporaryFile()
193 graph.MakeGraphviz( 201 graph.MakeGraphviz(
194 tmp, 202 tmp,
195 highlight=args.highlight.split(',') if args.highlight else None) 203 highlight=args.highlight.split(',') if args.highlight else None)
196 tmp.flush() 204 tmp.flush()
197 png_output = args.png_output 205 png_output = args.png_output
198 if not png_output: 206 if not png_output:
199 if args.request_json.endswith('.json'): 207 if args.request_json.endswith('.json'):
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 parser.add_argument('command', help=' '.join(COMMAND_MAP.keys())) 327 parser.add_argument('command', help=' '.join(COMMAND_MAP.keys()))
320 parser.add_argument('rest', nargs=argparse.REMAINDER) 328 parser.add_argument('rest', nargs=argparse.REMAINDER)
321 args = parser.parse_args() 329 args = parser.parse_args()
322 devil_chromium.Initialize() 330 devil_chromium.Initialize()
323 COMMAND_MAP.get(args.command, 331 COMMAND_MAP.get(args.command,
324 lambda _: InvalidCommand(args.command))(args.rest) 332 lambda _: InvalidCommand(args.command))(args.rest)
325 333
326 334
327 if __name__ == '__main__': 335 if __name__ == '__main__':
328 main() 336 main()
OLDNEW
« no previous file with comments | « no previous file | tools/android/loading/content_classification_lens.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698