Don't clear IntentRequest callback pointers on stop()
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Feb 2012 04:58:34 +0000 (04:58 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Feb 2012 04:58:34 +0000 (04:58 +0000)
commit5922dada8b4925aab554dbe340b3a5f24318987c
treefc10f8277dab5ffbd5caa64f37b83ad4da7aa2df
parent8efc812355ecda6550afada39c5d51d6d8a696de
Don't clear IntentRequest callback pointers on stop()

This causes re-entry into ScriptExecutionContext when
the ActiveDOMCallback objects get deleted, which crashes.
Instead, just de-activate the object and wait for
context destruction to clean up.

Test crashes consistently without fix and passes with fix.
Added some test infrastructure to support this test.
https://bugs.webkit.org/show_bug.cgi?id=78638

Patch by Greg Billock <gbillock@google.com> on 2012-02-23
Reviewed by Adam Barth.

* Modules/intents/IntentRequest.cpp:
(WebCore::IntentRequest::IntentRequest):
(WebCore::IntentRequest::stop):
(WebCore::IntentRequest::postResult):
(WebCore::IntentRequest::postFailure):
* Modules/intents/IntentRequest.h:
(IntentRequest):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108724 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/webintents/resources/pass.html [new file with mode: 0644]
LayoutTests/webintents/resources/web-intents-reload-orig.html [new file with mode: 0644]
LayoutTests/webintents/web-intents-reload-expected.txt [new file with mode: 0644]
LayoutTests/webintents/web-intents-reload.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/Modules/intents/IntentRequest.cpp
Source/WebCore/Modules/intents/IntentRequest.h
Tools/DumpRenderTree/chromium/WebViewHost.cpp
Tools/DumpRenderTree/chromium/WebViewHost.h