| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 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 """Inspection of the prefetch predictor database. | 6 """Inspection of the prefetch predictor database. |
| 7 | 7 |
| 8 On Android, the database can be extracted using: | 8 On Android, the database can be extracted using: |
| 9 adb pull \ | 9 adb pull \ |
| 10 '/data/user/0/$package_name/app_chrome/Default/Network Action Predictor' | 10 '/data/user/0/$package_name/app_chrome/Default/Network Action Predictor' |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 self, main_page_url, resource_url, proto_buffer): | 24 self, main_page_url, resource_url, proto_buffer): |
| 25 self.main_page_url = main_page_url | 25 self.main_page_url = main_page_url |
| 26 self.resource_url = resource_url | 26 self.resource_url = resource_url |
| 27 self.proto = ResourceData() | 27 self.proto = ResourceData() |
| 28 self.proto.ParseFromString(proto_buffer) | 28 self.proto.ParseFromString(proto_buffer) |
| 29 self.confidence = float(self.proto.number_of_hits / ( | 29 self.confidence = float(self.proto.number_of_hits / ( |
| 30 self.proto.number_of_hits + self.proto.number_of_misses)) | 30 self.proto.number_of_hits + self.proto.number_of_misses)) |
| 31 self.score = self._Score() | 31 self.score = self._Score() |
| 32 | 32 |
| 33 def _Score(self): | 33 def _Score(self): |
| 34 """Mirrors ResourcePrefetchPredictorTables::ResourceRow::UpdateScore.""" | 34 """Mirrors ResourcePrefetchPredictorTables::ComputeResourceScore.""" |
| 35 multiplier = 1 | 35 priority_multiplier = 1 |
| 36 type_multiplier = 1 |
| 37 |
| 38 if self.proto.priority == ResourceData.REQUEST_PRIORITY_HIGHEST: |
| 39 priority_multiplier = 3 |
| 40 elif self.proto.priority == ResourceData.REQUEST_PRIORITY_MEDIUM: |
| 41 priority_multiplier = 2 |
| 42 |
| 36 if self.proto.resource_type in (ResourceData.RESOURCE_TYPE_STYLESHEET, | 43 if self.proto.resource_type in (ResourceData.RESOURCE_TYPE_STYLESHEET, |
| 37 ResourceData.RESOURCE_TYPE_SCRIPT, | 44 ResourceData.RESOURCE_TYPE_SCRIPT): |
| 38 ResourceData.RESOURCE_TYPE_FONT_RESOURCE): | 45 type_multiplier = 3 |
| 39 multiplier = 2 | 46 elif self.proto.resource_type == ResourceData.RESOURCE_TYPE_FONT_RESOURCE: |
| 40 return multiplier * 100 - self.proto.average_position | 47 type_multiplier = 2 |
| 48 |
| 49 return (100 * (priority_multiplier * 100 + type_multiplier * 10) |
| 50 - self.proto.average_position) |
| 41 | 51 |
| 42 @classmethod | 52 @classmethod |
| 43 def FromRow(cls, row): | 53 def FromRow(cls, row): |
| 44 """Builds an entry from a database row.""" | 54 """Builds an entry from a database row.""" |
| 45 return Entry(*row) | 55 return Entry(*row) |
| 46 | 56 |
| 47 def __str__(self): | 57 def __str__(self): |
| 48 return 'score: %s\nmain_page_url: %s\nconfidence: %f"\n%s' % ( | 58 return 'score: %s\nmain_page_url: %s\nconfidence: %f"\n%s' % ( |
| 49 self.score, self.main_page_url, self.confidence, self.proto) | 59 self.score, self.main_page_url, self.confidence, self.proto) |
| 50 | 60 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 76 parser = argparse.ArgumentParser() | 86 parser = argparse.ArgumentParser() |
| 77 parser.add_argument('-f', dest='database_filename', required=True, | 87 parser.add_argument('-f', dest='database_filename', required=True, |
| 78 help='Path to the database') | 88 help='Path to the database') |
| 79 parser.add_argument('-d', dest='domain', default=None, help='Domain') | 89 parser.add_argument('-d', dest='domain', default=None, help='Domain') |
| 80 args = parser.parse_args() | 90 args = parser.parse_args() |
| 81 DatabaseStats(args.database_filename, args.domain) | 91 DatabaseStats(args.database_filename, args.domain) |
| 82 | 92 |
| 83 | 93 |
| 84 if __name__ == '__main__': | 94 if __name__ == '__main__': |
| 85 main() | 95 main() |
| OLD | NEW |