gecko-dev/netwerk/protocol/http/nsServerTiming.h
Kershaw Chang 73d9823e67 Bug 1413999 Part2: Take http trailers from chunk decoder and add serverTiming attribute in nsITimedChannel r=dragana
This patch includes:
1. Save http trailers in the header array in chunk decoder.
2. Take trailers from chunk decoder in OnStopRequest().
3. Add serverTiming attribute in nsITimedChannel.
4. Parse server timing header when GetServerTiming() is called.

--HG--
extra : rebase_source : 77c92b8a31d3d7eebb33aea266888f944af33327
2018-01-03 02:04:00 +02:00

66 lines
1.3 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 nsServerTiming_h__
#define nsServerTiming_h__
#include "nsITimedChannel.h"
#include "nsString.h"
#include "nsTArray.h"
class nsServerTiming final : public nsIServerTiming
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISERVERTIMING
nsServerTiming() = default;
void SetName(const nsACString &aName)
{
mName = aName;
}
void SetDuration(double aDuration)
{
mDuration = aDuration;
}
void SetDescription(const nsACString &aDescription)
{
mDescription = aDescription;
}
private:
virtual ~nsServerTiming() = default;
nsCString mName;
double mDuration;
nsCString mDescription;
};
namespace mozilla {
namespace net {
class ServerTimingParser
{
public:
explicit ServerTimingParser(const nsCString &value)
: mValue(value)
{}
void Parse();
nsTArray<nsCOMPtr<nsIServerTiming>>&& TakeServerTimingHeaders();
private:
nsCString mValue;
nsTArray<nsCOMPtr<nsIServerTiming>> mServerTimingHeaders;
};
} // namespace net
} // namespace mozilla
#endif