diff options
author | horo <horo@chromium.org> | 2014-09-11 20:51:19 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-12 03:59:04 +0000 |
commit | fa444bb81a6489cf52730d3aaa0bcd34367d2685 (patch) | |
tree | fde4501a3f83b9231f54dfb2daa8337aef1f22fd /storage/browser | |
parent | aecd62ad58ca10c1589507b7da46031a4eb72f40 (diff) | |
download | chromium_src-fa444bb81a6489cf52730d3aaa0bcd34367d2685.zip chromium_src-fa444bb81a6489cf52730d3aaa0bcd34367d2685.tar.gz chromium_src-fa444bb81a6489cf52730d3aaa0bcd34367d2685.tar.bz2 |
[ServiceWorker] Check is_uninstalled in ServiceWorkerRegisterJob::ContinueWithRegistration()
In the following situations the registration may be already uninstalled.
So existing_registration->GetNewestVersion() could return NULL and crash in ContinueWithRegistration().
- register the ServiceWorker
- open the page in the ServiceWorker scope
- unregister the ServiceWorker
- register the ServiceWorker to the same scope and close the page quickly.
ServiceWorkerRegisterJob::Start() is called to register the ServiceWorker.
next_step is set to ContinueWithRegistration.
GetUninstallingRegistration() returns the uninstalling registration.
RunSoon() calls PostTask(next_step)
ServiceWorkerRegistration::Clear() is called because there is no controllee.
ContinueWithRegistration() is executed.
But at this moment the registration is already uninstalled.
And crashed while calling existing_registration->GetNewestVersion()->script_url().
https://codereview.chromium.org/506043002/ is reverted because of this crash.
So I created the revert of revert cl.
https://codereview.chromium.org/547743003
BUG=398355,408048
TEST=http/tests/serviceworker/unregister-then-register-new-script.html http/tests/serviceworker/register-same-scope-different-script-url.html in https://codereview.chromium.org/547743003
Review URL: https://codereview.chromium.org/556003006
Cr-Commit-Position: refs/heads/master@{#294540}
Diffstat (limited to 'storage/browser')
0 files changed, 0 insertions, 0 deletions