Bug 1916635 - Part 1: Create PerformanceResourceTiming entry for SharedScriptCache. r=bthrall
Differential Revision: https://phabricator.services.mozilla.com/D223357
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "mozilla/NotNull.h"
|
||||
#include "mozilla/PerfStats.h"
|
||||
#include "mozilla/ScopeExit.h"
|
||||
#include "mozilla/SharedSubResourceCache.h"
|
||||
#include "mozilla/StaticPrefs_dom.h"
|
||||
#include "mozilla/Utf8.h"
|
||||
#include "mozilla/Vector.h"
|
||||
@@ -373,6 +374,9 @@ ScriptLoadHandler::OnStreamComplete(nsIIncrementalStreamLoader* aLoader,
|
||||
nsCOMPtr<nsIRequest> channelRequest;
|
||||
aLoader->GetRequest(getter_AddRefs(channelRequest));
|
||||
|
||||
mRequest->mNetworkMetadata =
|
||||
new SubResourceNetworkMetadataHolder(channelRequest);
|
||||
|
||||
{
|
||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(channelRequest);
|
||||
channel->SetNotificationCallbacks(nullptr);
|
||||
|
||||
@@ -854,6 +854,18 @@ void ScriptLoader::PrepareRequestPriorityAndRequestDependencies(
|
||||
}
|
||||
}
|
||||
|
||||
inline nsLiteralString GetInitiatorType(ScriptLoadRequest* aRequest) {
|
||||
if (aRequest->mEarlyHintPreloaderId) {
|
||||
return u"early-hints"_ns;
|
||||
}
|
||||
|
||||
if (aRequest->GetScriptLoadContext()->IsLinkPreloadScript()) {
|
||||
return u"link"_ns;
|
||||
}
|
||||
|
||||
return u"script"_ns;
|
||||
}
|
||||
|
||||
// static
|
||||
nsresult ScriptLoader::PrepareHttpRequestAndInitiatorType(
|
||||
nsIChannel* aChannel, ScriptLoadRequest* aRequest,
|
||||
@@ -895,13 +907,7 @@ nsresult ScriptLoader::PrepareHttpRequestAndInitiatorType(
|
||||
// Set the initiator type
|
||||
nsCOMPtr<nsITimedChannel> timedChannel(do_QueryInterface(httpChannel));
|
||||
if (timedChannel) {
|
||||
if (aRequest->mEarlyHintPreloaderId) {
|
||||
timedChannel->SetInitiatorType(u"early-hints"_ns);
|
||||
} else if (aRequest->GetScriptLoadContext()->IsLinkPreloadScript()) {
|
||||
timedChannel->SetInitiatorType(u"link"_ns);
|
||||
} else {
|
||||
timedChannel->SetInitiatorType(u"script"_ns);
|
||||
}
|
||||
timedChannel->SetInitiatorType(GetInitiatorType(aRequest));
|
||||
}
|
||||
|
||||
return rv;
|
||||
@@ -1114,6 +1120,19 @@ already_AddRefed<ScriptLoadRequest> ScriptLoader::CreateLoadRequest(
|
||||
CORSModeToSecurityFlags(aCORSMode),
|
||||
nsIContentPolicy::TYPE_INTERNAL_SCRIPT);
|
||||
|
||||
{
|
||||
nsAutoCString name;
|
||||
nsString entryName;
|
||||
aURI->GetSpec(name);
|
||||
CopyUTF8toUTF16(name, entryName);
|
||||
|
||||
auto now = TimeStamp::Now();
|
||||
|
||||
SharedSubResourceCacheUtils::AddPerformanceEntryForCache(
|
||||
entryName, GetInitiatorType(aRequest),
|
||||
cacheResult.mNetworkMetadata, now, now, mDocument);
|
||||
}
|
||||
|
||||
aRequest->CacheEntryFound(cacheResult.mCompleteValue);
|
||||
return aRequest.forget();
|
||||
}
|
||||
|
||||
@@ -90,7 +90,8 @@ ScriptLoadData::ScriptLoadData(ScriptLoader* aLoader,
|
||||
: mExpirationTime(aRequest->ExpirationTime()),
|
||||
mLoader(aLoader),
|
||||
mKey(aLoader, aRequest),
|
||||
mLoadedScript(aRequest->getLoadedScript()) {}
|
||||
mLoadedScript(aRequest->getLoadedScript()),
|
||||
mNetworkMetadata(aRequest->mNetworkMetadata) {}
|
||||
|
||||
NS_IMPL_ISUPPORTS(SharedScriptCache, nsIMemoryReporter, nsIObserver)
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "js/loader/LoadedScript.h" // JS::loader::LoadedScript
|
||||
#include "js/loader/ScriptKind.h" // JS::loader::ScriptKind
|
||||
#include "js/loader/ScriptLoadRequest.h" // JS::loader::ScriptLoadRequest
|
||||
#include "mozilla/RefPtr.h" // RefPtr
|
||||
#include "mozilla/WeakPtr.h" // SupportsWeakPtr
|
||||
#include "mozilla/CORSMode.h" // mozilla::CORSMode
|
||||
#include "mozilla/MemoryReporting.h" // MallocSizeOf
|
||||
@@ -135,8 +136,7 @@ class ScriptLoadData final
|
||||
bool IsSyncLoad() const override { return true; }
|
||||
|
||||
SubResourceNetworkMetadataHolder* GetNetworkMetadata() const override {
|
||||
// TODO: Bug 1916635.
|
||||
return nullptr;
|
||||
return mNetworkMetadata.get();
|
||||
}
|
||||
|
||||
void StartLoading() override {}
|
||||
@@ -163,6 +163,7 @@ class ScriptLoadData final
|
||||
ScriptLoader* mLoader;
|
||||
ScriptHashKey mKey;
|
||||
RefPtr<JS::loader::LoadedScript> mLoadedScript;
|
||||
RefPtr<SubResourceNetworkMetadataHolder> mNetworkMetadata;
|
||||
};
|
||||
|
||||
struct SharedScriptCacheTraits {
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "mozilla/LinkedList.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "mozilla/PreloaderBase.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "mozilla/SharedSubResourceCache.h" // mozilla::SubResourceNetworkMetadataHolder
|
||||
#include "mozilla/StaticPrefs_dom.h"
|
||||
#include "mozilla/Variant.h"
|
||||
#include "mozilla/Vector.h"
|
||||
@@ -281,6 +283,7 @@ class ScriptLoadRequest : public nsISupports,
|
||||
CacheExpirationTime mExpirationTime = CacheExpirationTime::Never();
|
||||
|
||||
RefPtr<ScriptFetchOptions> mFetchOptions;
|
||||
RefPtr<mozilla::SubResourceNetworkMetadataHolder> mNetworkMetadata;
|
||||
const SRIMetadata mIntegrity;
|
||||
const nsCOMPtr<nsIURI> mReferrer;
|
||||
mozilla::Maybe<nsString>
|
||||
|
||||
Reference in New Issue
Block a user