gecko-dev/dom/workers/WorkerChannelInfo.cpp
Eden Chuang bf3fa5100a Bug 1819570 - P4 Propagte stack trace notification back to the content process for PFetch. r=asuth
After PFetch is enabled, fetch() call in workers will not create a channel in the content process anymore.
Although netmonitor watches channels and NetEvents, stack traces are only caught in the content process.
That means PFetch should notify the netmonitor about the stack trace of the fetch at the proper moment.

In original fetch steps, FetchDriver would notify the netmonitor the fetch stack trace at
https://searchfox.org/mozilla-central/rev/cdddec7fd690700efa4d6b48532cf70155e0386b/dom/fetch/FetchDriver.cpp#834

When PFetch is enabled, PFetch needs also to propagate this notification back to the content process.

Depends on D174442

Differential Revision: https://phabricator.services.mozilla.com/D174443
2023-05-05 15:24:10 +00:00

67 lines
1.8 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "WorkerChannelInfo.h"
#include "mozilla/dom/BrowsingContext.h"
namespace mozilla::dom {
// WorkerChannelLoadInfo
NS_IMPL_ISUPPORTS(WorkerChannelLoadInfo, nsIWorkerChannelLoadInfo)
NS_IMETHODIMP
WorkerChannelLoadInfo::GetWorkerAssociatedBrowsingContextID(uint64_t* aResult) {
*aResult = mWorkerAssociatedBrowsingContextID;
return NS_OK;
}
NS_IMETHODIMP
WorkerChannelLoadInfo::SetWorkerAssociatedBrowsingContextID(uint64_t aID) {
mWorkerAssociatedBrowsingContextID = aID;
return NS_OK;
}
NS_IMETHODIMP
WorkerChannelLoadInfo::GetWorkerAssociatedBrowsingContext(
dom::BrowsingContext** aResult) {
*aResult = BrowsingContext::Get(mWorkerAssociatedBrowsingContextID).take();
return NS_OK;
}
// WorkerChannelInfo
NS_IMPL_ISUPPORTS(WorkerChannelInfo, nsIWorkerChannelInfo)
WorkerChannelInfo::WorkerChannelInfo(uint64_t aChannelID,
uint64_t aBrowsingContextID)
: mChannelID(aChannelID) {
mLoadInfo = new WorkerChannelLoadInfo();
mLoadInfo->SetWorkerAssociatedBrowsingContextID(aBrowsingContextID);
}
NS_IMETHODIMP
WorkerChannelInfo::SetLoadInfo(nsIWorkerChannelLoadInfo* aLoadInfo) {
MOZ_ASSERT(aLoadInfo);
mLoadInfo = aLoadInfo;
return NS_OK;
}
NS_IMETHODIMP
WorkerChannelInfo::GetLoadInfo(nsIWorkerChannelLoadInfo** aLoadInfo) {
*aLoadInfo = do_AddRef(mLoadInfo).take();
return NS_OK;
}
NS_IMETHODIMP
WorkerChannelInfo::GetChannelId(uint64_t* aChannelID) {
NS_ENSURE_ARG_POINTER(aChannelID);
*aChannelID = mChannelID;
return NS_OK;
}
} // end of namespace mozilla::dom