PPAPI: Never re-enter JavaScript for PostMessage.
commitf73075c99b5ba30e8d62dc5f13fdfb210d0fc506
authordmichael <dmichael@chromium.org>
Wed, 24 Sep 2014 00:12:03 +0000 (23 17:12 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 24 Sep 2014 00:12:12 +0000 (24 00:12 +0000)
treeeebc09facafafbe6df2de70518392bd05cca04b0
parent5289ba2d6a2c1eb3f429673ac0088f658d8aee5a
PPAPI: Never re-enter JavaScript for PostMessage.

Blocking renderer->plugin messages can be interrupted by any message
from the plugin->renderer (even async ones). So while handline a blocking
message, such as HandleInputEvent or HandleBlockingMessage, it's currently
possible to re-enter JavaScript. This patch makes that impossible by
queueing up Plugin->Renderer messages sent via PPB_Messaging::PostMessage
while any renderer->plugin sync message is on the stack.

BUG=384528

Review URL: https://codereview.chromium.org/589213003

Cr-Commit-Position: refs/heads/master@{#296311}
12 files changed:
content/renderer/pepper/host_dispatcher_wrapper.cc
content/renderer/pepper/host_dispatcher_wrapper.h
content/renderer/pepper/message_channel.cc
content/renderer/pepper/message_channel.h
content/renderer/pepper/pepper_hung_plugin_filter.h
ppapi/proxy/dispatcher.cc
ppapi/proxy/dispatcher.h
ppapi/proxy/host_dispatcher.cc
ppapi/proxy/host_dispatcher.h
ppapi/proxy/ppapi_proxy_test.cc
ppapi/proxy/ppapi_proxy_test.h
ppapi/tests/test_message_handler.cc