Chromium Code Reviews| Index: tools/android/loading/loading_model.py |
| diff --git a/tools/android/loading/loading_model.py b/tools/android/loading/loading_model.py |
| index 155da1ddf8ef201e5e732a8abe6e93c148dc2fd8..0c4ffda04cf4bdbf2f194a4318f18f499bbd4df1 100644 |
| --- a/tools/android/loading/loading_model.py |
| +++ b/tools/android/loading/loading_model.py |
| @@ -30,14 +30,17 @@ class ResourceGraph(object): |
| Set parameters: |
| cache_all: if true, assume zero loading time for all resources. |
| """ |
| - def __init__(self, trace): |
| + def __init__(self, trace, content_lens=None): |
| """Create from a LoadingTrace (or json of a trace). |
| Args: |
| trace: (LoadingTrace/JSON) Loading trace or JSON of a trace. |
| + content_lens: (ContentClassificationLens) Lens used to annotate the |
| + nodes, or None. |
| """ |
| if type(trace) == dict: |
| trace = loading_trace.LoadingTrace.FromJsonDict(trace) |
| + self._content_lens = content_lens |
| self._BuildDag(trace) |
| self._global_start = min([n.StartTime() for n in self._node_info]) |
| # Sort before splitting children so that we can correctly dectect if a |
| @@ -331,14 +334,18 @@ class ResourceGraph(object): |
| We also store the request on the node, and expose request-derived |
| information like content type. |
| """ |
| - def __init__(self, node, request): |
| + def __init__(self, node, request, is_ad, is_tracking): |
| """Create a new node info. |
| Args: |
| node: The node to augment. |
| request: The request associated with this node. |
| + is_ad: (bool) Whether the request is an Ad. |
| + is_tracking: (bool) Whether the request is related to tracking. |
| """ |
| self._request = request |
| + self._is_ad = is_ad |
| + self._is_tracking = is_tracking |
| self._node = node |
| self._edge_costs = {} |
| self._edge_annotations = {} |
| @@ -357,6 +364,12 @@ class ResourceGraph(object): |
| def Index(self): |
| return self._node.Index() |
| + def IsAd(self): |
| + return self._is_ad |
| + |
| + def IsTracking(self): |
| + return self._is_tracking |
| + |
| def Request(self): |
| return self._request |
| @@ -480,7 +493,11 @@ class ResourceGraph(object): |
| assert request not in index_by_request |
| index_by_request[request] = next_index |
| node = dag.Node(next_index) |
| - node_info = self._NodeInfo(node, request) |
| + is_ad = (self._content_lens.IsAdRequest(request) |
| + if self._content_lens else False) |
| + is_tracking = (self._content_lens.IsTrackingRequest(request) |
| + if self._content_lens else False) |
| + node_info = self._NodeInfo(node, request, is_ad, is_tracking) |
|
mattcary
2016/01/25 16:08:58
I think it would be nicer to add setters to NodeIn
Benoit L
2016/01/26 13:31:13
Absolutely, thanks for the suggestion.
Done.
|
| self._nodes.append(node) |
| self._node_info.append(node_info) |
| @@ -606,6 +623,8 @@ class ResourceGraph(object): |
| if fragment in node_info.Url(): |
| styles.append('dotted') |
| break |
| + if node_info.IsAd() or node_info.IsTracking(): |
| + styles += ['bold', 'diagonals'] |
| return ('%d [label = "%s\\n%.2f->%.2f (%.2f)"; style = "%s"; ' |
| 'fillcolor = %s; shape = %s];\n' |
| % (index, node_info.ShortName(), |