ControllerServiceWorkerConnector: Remove DCHECK.
All of this happens when S13nServiceWorker is enabled.
The removed DCHECK was here to enforce that the ControllerServiceWorker
is not updated after container host connection has been closed.
A race condition can happen and triggers this DCHECK. After
CommitNavigation(), if the browser process is slow enough, a javascript
call can delete the iframe before the OnProviderCreated/SetController
round trip between the browser and the renderer has been made.
Deleting the iframe cause OnContainerHostConnectionClose() to be called. It
happens before receiving the SetController call.
┌───────┐ ┌────────┐
│Browser│ │Renderer│
└───┬───┘ └───┬────┘
│CommitNavigation() │
│──────────────────>│ (ResetController())
│ │
│OnProviderCreated()│
│<──────────────────│
│─┐ │─┐
│ │ │ │ Remove the iframe.
│ │ │ │ (OnContainerHostConnectionClose())
│ │ Sleep... │<┘
│ │ │
│<┘ │
│ │
│ SetController() │
│──────────────────>│ (ResetController())
┌───┴───┐ ┌───┴────┐
│Browser│ │Renderer│
└───────┘ └────────┘
Note: The CL...
https://chromium-review.googlesource.com/897629
...shows adding a delay in the browser process causes several service
worker tests to fail.
Note: Doing SetController() on response to OnProviderCreated() is no really
necessary since thttps://goo.gl/UztxVi was implemented by
https://chromium-review.googlesource.com/742961.
This was kept to update UseCounter.
Bug: 808071
Change-Id: I46c4fd8e4db7eb4ed5e304bb1989d36d552567ad
Reviewed-on: https://chromium-review.googlesource.com/899143
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by:
Matt Falkenhagen <falken@chromium.org>
Reviewed-by:
Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534706}
Showing
Please register or sign in to comment