There could be two different places to make it work:
1. Redirect for main resource navigation: this needs to be handled in NavigationURLLoaderNetworkService plus each loaders and request handlers. Currently MichealN is working on the change that plumbs the basic skeleton and make it work with AppCache. (https://chromium-review.googlesource.com/c/chromium/src/+/654143 is the patch, the CL probably gives you some ideas about how this needs to be handled)
In this case it's possible that a redirect coming from, say, URLLoader in Network Service, may need to be handled by different URLLoader like Service Worker.
2. Redirect for sub-resource loading: this needs to be handled in ServiceWorkerSubresourceLoader and the code around it. In this case we don't need to think about handling redirects that come from Network Service, but Service Worker may return a redirect response and we may need to start over the response handling. (For reference, AppCache's corresponding patch is: https://chromium-review.googlesource.com/c/chromium/src/+/633922)
In both cases the very basic handling would be something like: store redirected request info in OnReceiveRedirect(), and then perform the actual redirect handling in FollowRedirect(). I don't have a clear idea about how much code / logic can be shared between main-resource and sub-resource cases yet.
Comment 1 by kinuko@chromium.org
, Sep 12 2017