Bug 1348426 - Add profiler labels to RecvSync/Async/RpcMessage that include the message name. r?billm
MozReview-Commit-ID: F7MZhgV12DZ
--- a/dom/base/nsFrameMessageManager.cpp
+++ b/dom/base/nsFrameMessageManager.cpp
@@ -615,16 +615,21 @@ nsFrameMessageManager::SendMessage(const
JS::Handle<JS::Value> aJSON,
JS::Handle<JS::Value> aObjects,
nsIPrincipal* aPrincipal,
JSContext* aCx,
uint8_t aArgc,
JS::MutableHandle<JS::Value> aRetval,
bool aIsSync)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMessageName);
+ PROFILER_LABEL_DYNAMIC("nsFrameMessageManager", "SendMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
NS_ASSERTION(!IsGlobal(), "Should not call SendSyncMessage in chrome");
NS_ASSERTION(!IsBroadcaster(), "Should not call SendSyncMessage in chrome");
NS_ASSERTION(!mParentManager, "Should not have parent manager in content!");
aRetval.setUndefined();
NS_ENSURE_TRUE(mCallback, NS_ERROR_NOT_INITIALIZED);
if (sSendingSyncMessage && aIsSync) {
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -194,16 +194,17 @@
#include "mozilla/widget/PuppetBidiKeyboard.h"
#include "mozilla/RemoteSpellCheckEngineChild.h"
#include "GMPServiceChild.h"
#include "GfxInfoBase.h"
#include "gfxPlatform.h"
#include "nscore.h" // for NS_FREE_PERMANENT_DATA
#include "VRManagerChild.h"
#include "private/pprio.h"
+#include "nsString.h"
#ifdef MOZ_WIDGET_GTK
#include "nsAppRunner.h"
#endif
#ifdef MOZ_CRASHREPORTER
#include "mozilla/ipc/CrashReporterClient.h"
#endif
@@ -2132,16 +2133,21 @@ ContentChild::RecvLoadProcessScript(cons
}
mozilla::ipc::IPCResult
ContentChild::RecvAsyncMessage(const nsString& aMsg,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
const ClonedMessageData& aData)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMsg);
+ PROFILER_LABEL_DYNAMIC("ContentChild", "RecvAsyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
CrossProcessCpowHolder cpows(this, aCpows);
RefPtr<nsFrameMessageManager> cpm =
nsFrameMessageManager::GetChildProcessManager();
if (cpm) {
StructuredCloneData data;
ipc::UnpackClonedMessageDataForChild(aData, data);
cpm->ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(cpm.get()),
nullptr, aMsg, false, &data, &cpows, aPrincipal,
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -115,16 +115,17 @@
#include "FrameLayerBuilder.h"
#include "VRManagerChild.h"
#include "nsICommandParams.h"
#include "nsISHistory.h"
#include "nsQueryObject.h"
#include "GroupedSHistory.h"
#include "nsIHttpChannel.h"
#include "mozilla/dom/DocGroup.h"
+#include "nsString.h"
#include "nsISupportsPrimitives.h"
#include "mozilla/Telemetry.h"
#ifdef XP_WIN
#include "mozilla/plugins/PluginWidgetChild.h"
#endif
#ifdef NS_PRINTING
@@ -2193,16 +2194,21 @@ TabChild::RecvLoadRemoteScript(const nsS
}
mozilla::ipc::IPCResult
TabChild::RecvAsyncMessage(const nsString& aMessage,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
const ClonedMessageData& aData)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMessage);
+ PROFILER_LABEL_DYNAMIC("TabChild", "RecvAsyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
CrossProcessCpowHolder cpows(Manager(), aCpows);
if (!mTabChildGlobal) {
return IPC_OK();
}
// We should have a message manager if the global is alive, but it
// seems sometimes we don't. Assert in aurora/nightly, but don't
// crash in release builds.
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -93,16 +93,17 @@
#include "nsIAuthPrompt2.h"
#include "gfxDrawable.h"
#include "ImageOps.h"
#include "UnitTransforms.h"
#include <algorithm>
#include "mozilla/WebBrowserPersistDocumentParent.h"
#include "nsIGroupedSHistory.h"
#include "PartialSHistory.h"
+#include "nsString.h"
#ifdef XP_WIN
#include "mozilla/plugins/PluginWidgetParent.h"
#endif
#if defined(XP_WIN) && defined(ACCESSIBILITY)
#include "mozilla/a11y/AccessibleWrap.h"
#include "mozilla/a11y/nsWinUtils.h"
@@ -1560,16 +1561,21 @@ TabParent::SendHandleTap(TapType aType,
mozilla::ipc::IPCResult
TabParent::RecvSyncMessage(const nsString& aMessage,
const ClonedMessageData& aData,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
nsTArray<StructuredCloneData>* aRetVal)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMessage);
+ PROFILER_LABEL_DYNAMIC("TabParent", "RecvSyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
StructuredCloneData data;
ipc::UnpackClonedMessageDataForParent(aData, data);
CrossProcessCpowHolder cpows(Manager(), aCpows);
if (!ReceiveMessage(aMessage, true, &data, &cpows, aPrincipal, aRetVal)) {
return IPC_FAIL_NO_REASON(this);
}
return IPC_OK();
@@ -1577,32 +1583,42 @@ TabParent::RecvSyncMessage(const nsStrin
mozilla::ipc::IPCResult
TabParent::RecvRpcMessage(const nsString& aMessage,
const ClonedMessageData& aData,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
nsTArray<StructuredCloneData>* aRetVal)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMessage);
+ PROFILER_LABEL_DYNAMIC("TabParent", "RecvRpcMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
StructuredCloneData data;
ipc::UnpackClonedMessageDataForParent(aData, data);
CrossProcessCpowHolder cpows(Manager(), aCpows);
if (!ReceiveMessage(aMessage, true, &data, &cpows, aPrincipal, aRetVal)) {
return IPC_FAIL_NO_REASON(this);
}
return IPC_OK();
}
mozilla::ipc::IPCResult
TabParent::RecvAsyncMessage(const nsString& aMessage,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
const ClonedMessageData& aData)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMessage);
+ PROFILER_LABEL_DYNAMIC("TabParent", "RecvAsyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
StructuredCloneData data;
ipc::UnpackClonedMessageDataForParent(aData, data);
CrossProcessCpowHolder cpows(Manager(), aCpows);
if (!ReceiveMessage(aMessage, false, &data, &cpows, aPrincipal, nullptr)) {
return IPC_FAIL_NO_REASON(this);
}
return IPC_OK();
--- a/dom/ipc/nsIContentChild.cpp
+++ b/dom/ipc/nsIContentChild.cpp
@@ -179,16 +179,21 @@ nsIContentChild::DeallocPFileDescriptorS
}
mozilla::ipc::IPCResult
nsIContentChild::RecvAsyncMessage(const nsString& aMsg,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
const ClonedMessageData& aData)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMsg);
+ PROFILER_LABEL_DYNAMIC("nsIContentChild", "RecvAsyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
CrossProcessCpowHolder cpows(this, aCpows);
RefPtr<nsFrameMessageManager> cpm = nsFrameMessageManager::GetChildProcessManager();
if (cpm) {
ipc::StructuredCloneData data;
ipc::UnpackClonedMessageDataForChild(aData, data);
cpm->ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(cpm.get()), nullptr,
aMsg, false, &data, &cpows, aPrincipal, nullptr);
--- a/dom/ipc/nsIContentParent.cpp
+++ b/dom/ipc/nsIContentParent.cpp
@@ -213,16 +213,21 @@ nsIContentParent::GetOrCreateActorForBlo
mozilla::ipc::IPCResult
nsIContentParent::RecvSyncMessage(const nsString& aMsg,
const ClonedMessageData& aData,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
nsTArray<ipc::StructuredCloneData>* aRetvals)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMsg);
+ PROFILER_LABEL_DYNAMIC("nsIContentParent", "RecvSyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
CrossProcessCpowHolder cpows(this, aCpows);
RefPtr<nsFrameMessageManager> ppm = mMessageManager;
if (ppm) {
ipc::StructuredCloneData data;
ipc::UnpackClonedMessageDataForParent(aData, data);
ppm->ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm.get()), nullptr,
aMsg, true, &data, &cpows, aPrincipal, aRetvals);
@@ -232,16 +237,21 @@ nsIContentParent::RecvSyncMessage(const
mozilla::ipc::IPCResult
nsIContentParent::RecvRpcMessage(const nsString& aMsg,
const ClonedMessageData& aData,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
nsTArray<ipc::StructuredCloneData>* aRetvals)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMsg);
+ PROFILER_LABEL_DYNAMIC("nsIContentParent", "RecvRpcMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
CrossProcessCpowHolder cpows(this, aCpows);
RefPtr<nsFrameMessageManager> ppm = mMessageManager;
if (ppm) {
ipc::StructuredCloneData data;
ipc::UnpackClonedMessageDataForParent(aData, data);
ppm->ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm.get()), nullptr,
aMsg, true, &data, &cpows, aPrincipal, aRetvals);
@@ -289,16 +299,21 @@ nsIContentParent::DeallocPParentToChildS
}
mozilla::ipc::IPCResult
nsIContentParent::RecvAsyncMessage(const nsString& aMsg,
InfallibleTArray<CpowEntry>&& aCpows,
const IPC::Principal& aPrincipal,
const ClonedMessageData& aData)
{
+ NS_LossyConvertUTF16toASCII messageNameCStr(aMsg);
+ PROFILER_LABEL_DYNAMIC("nsIContentParent", "RecvAsyncMessage",
+ js::ProfileEntry::Category::EVENTS,
+ messageNameCStr.get());
+
CrossProcessCpowHolder cpows(this, aCpows);
RefPtr<nsFrameMessageManager> ppm = mMessageManager;
if (ppm) {
ipc::StructuredCloneData data;
ipc::UnpackClonedMessageDataForParent(aData, data);
ppm->ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm.get()), nullptr,
aMsg, false, &data, &cpows, aPrincipal, nullptr);