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

Unified Diff: tools/android/loading/request_dependencies_lens.py

Issue 1813723002: clovis: Identify prefetchable resources from dependencies and tracing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: tools/android/loading/request_dependencies_lens.py
diff --git a/tools/android/loading/request_dependencies_lens.py b/tools/android/loading/request_dependencies_lens.py
index 4a72a4f1d6bee1242ca1649c0809c6b8e2eb06fb..168954797bff5bfb5d015945f5211257a3b54ee6 100644
--- a/tools/android/loading/request_dependencies_lens.py
+++ b/tools/android/loading/request_dependencies_lens.py
@@ -30,6 +30,7 @@ class RequestDependencyLens(object):
self._requests = self.loading_trace.request_track.GetEvents()
self._requests_by_id = {r.request_id: r for r in self._requests}
self._requests_by_url = collections.defaultdict(list)
+ self._deps = None
for request in self._requests:
self._requests_by_url[request.url].append(request)
self._frame_to_parent = {}
@@ -45,12 +46,36 @@ class RequestDependencyLens(object):
request_track.Request, and reason is in DEPENDENCIES. The second request
depends on the first one, with the listed reason.
"""
- deps = []
+ self._ComputeRequestDependencies()
+ return copy.copy(self._deps)
+
+ def GetRedirectChain(self, request):
+ """Returns the whole redirect chain for a given request.
+
+ Note that this misses some JS-based redirects.
+
+ Returns:
+ A list of request, containing the request passed as a parameter.
+ """
+ self._ComputeRequestDependencies()
+ chain = [request]
+ while True:
+ for (first_request, second_request, why) in self._deps:
+ if first_request == request and why == 'redirect':
+ chain.append(second_request)
+ request = second_request
+ break
+ else:
+ return chain
+
+ def _ComputeRequestDependencies(self):
+ if self._deps is not None:
+ return
+ self._deps = []
for request in self._requests:
dependency = self._GetDependency(request)
if dependency:
- deps.append(dependency)
- return deps
+ self._deps.append(dependency)
def _GetDependency(self, request):
"""Returns (first, second, reason), or None.
« no previous file with comments | « tools/android/loading/prefetch_view_unittest.py ('k') | tools/android/loading/request_dependencies_lens_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698