Bug 1318506 - Label PluginInstance IPC messages with plugin's DocGroup (r?jimm)
The goal here is to assign a DocGroup to every runnable. This patch labels all
IPC message handlers for PPluginInstance with the DocGroup of the plugin
instance's document.
MozReview-Commit-ID: 6OIard9n2GB
--- a/dom/plugins/ipc/PluginModuleParent.cpp
+++ b/dom/plugins/ipc/PluginModuleParent.cpp
@@ -2751,16 +2751,29 @@ PluginModuleParent::NPP_NewInternal(NPMI
}
// Release the surrogate reference that was in pdata
RefPtr<PluginAsyncSurrogate> surrogate(
dont_AddRef(PluginAsyncSurrogate::Cast(instance)));
// Now replace it with the instance
instance->pdata = static_cast<PluginDataResolver*>(parentInstance);
+ // Any IPC messages for the PluginInstance actor should be dispatched to the
+ // DocGroup for the plugin's document.
+ RefPtr<nsPluginInstanceOwner> owner = parentInstance->GetOwner();
+ nsCOMPtr<nsIDOMElement> elt;
+ owner->GetDOMElement(getter_AddRefs(elt));
+ if (nsCOMPtr<nsINode> node = do_QueryInterface(elt)) {
+ nsCOMPtr<nsIDocument> doc = node->OwnerDoc();
+ if (doc) {
+ nsCOMPtr<nsIEventTarget> eventTarget = doc->EventTargetFor(dom::TaskCategory::Other);
+ SetEventTargetForActor(parentInstance, eventTarget);
+ }
+ }
+
if (!SendPPluginInstanceConstructor(parentInstance,
nsDependentCString(pluginType), mode,
names, values)) {
// |parentInstance| is automatically deleted.
instance->pdata = nullptr;
*error = NPERR_GENERIC_ERROR;
return NS_ERROR_FAILURE;
}