gecko-dev/dom/performance/PerformanceStorageWorker.h
Kershaw Chang ext:(%2C%20Valentin%20Gosu%20%3Cvalentin.gosu%40gmail.com%3E) 042ac19155 Bug 1423495 - Part4: Create doc entry form http channel if server timing headers are found for a document load r=baku
Currently, the document entry is created at the first time when some JS code tries to access it. But for the case when server timing headers exist for a document loading channel, we need to create the document entry and save the server timing data in the document entry.
If we don’t do this, the server timing data would be lost since the http channel will be deleted.

MozReview-Commit-ID: B5ksAZvZACq

--HG--
extra : rebase_source : 27bc6284ec417b2ff430a59cd9eeddc56b7a77ac
2018-01-12 03:13:00 +01:00

55 lines
1.4 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/. */
#ifndef mozilla_dom_PerformanceStorageWorker_h
#define mozilla_dom_PerformanceStorageWorker_h
#include "PerformanceStorage.h"
namespace mozilla {
namespace dom {
class WeakWorkerRef;
class WorkerPrivate;
class PerformanceProxyData;
class PerformanceStorageWorker final : public PerformanceStorage
{
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(PerformanceStorageWorker, override)
static already_AddRefed<PerformanceStorageWorker>
Create(WorkerPrivate* aWorkerPrivate);
void ShutdownOnWorker();
void AddEntry(nsIHttpChannel* aChannel,
nsITimedChannel* aTimedChannel) override;
void CreateDocumentEntry(nsITimedChannel* aChannel) override
{
MOZ_CRASH("This should not be called on workers.");
}
void AddEntryOnWorker(UniquePtr<PerformanceProxyData>&& aData);
private:
PerformanceStorageWorker();
~PerformanceStorageWorker();
Mutex mMutex;
// Protected by mutex.
// Created and released on worker-thread. Used also on main-thread.
RefPtr<WeakWorkerRef> mWorkerRef;
};
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_PerformanceStorageWorker_h