Bug 1191178 - Part 2: Add PerformanceRenderTiming and PerformanceCompositeTiming. r=smaug

--HG--
extra : rebase_source : a0cb9f4b60bfaa82dc07e231c8adfbe5eb430df4
This commit is contained in:
Hiroyuki Ikezoe 2015-08-19 15:14:05 -07:00
Родитель 0761bd2b97
Коммит ff8c9910b9
8 изменённых файлов: 201 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,30 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "PerformanceCompositeTiming.h"
#include "mozilla/dom/PerformanceCompositeTimingBinding.h"
using namespace mozilla::dom;
PerformanceCompositeTiming::PerformanceCompositeTiming(nsISupports* aParent,
const nsAString& aName,
const DOMHighResTimeStamp& aStartTime,
uint32_t aSourceFrameNumber)
: PerformanceEntry(aParent, aName, NS_LITERAL_STRING("composite"))
, mStartTime(aStartTime)
, mSourceFrameNumber(aSourceFrameNumber)
{
MOZ_ASSERT(aParent, "Parent performance object should be provided");
}
PerformanceCompositeTiming::~PerformanceCompositeTiming()
{
}
JSObject*
PerformanceCompositeTiming::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
{
return PerformanceCompositeTimingBinding::Wrap(aCx, this, aGivenProto);
}

Просмотреть файл

@ -0,0 +1,44 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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_performancecompositetiming_h___
#define mozilla_dom_performancecompositetiming_h___
#include "mozilla/dom/PerformanceEntry.h"
namespace mozilla {
namespace dom {
// http://www.w3.org/TR/frame-timing/#performancecompositetiming
class PerformanceCompositeTiming final : public PerformanceEntry
{
public:
PerformanceCompositeTiming(nsISupports* aParent,
const nsAString& aName,
const DOMHighResTimeStamp& aStartTime,
uint32_t aSourceFrameNumber);
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
virtual DOMHighResTimeStamp StartTime() const override
{
return mStartTime;
}
uint32_t SourceFrameNumber() const
{
return mSourceFrameNumber;
}
protected:
virtual ~PerformanceCompositeTiming();
DOMHighResTimeStamp mStartTime;
uint32_t mSourceFrameNumber;
};
} // namespace dom
} // namespace mozilla
#endif /* mozilla_dom_performancecompositetiming_h___ */

Просмотреть файл

@ -0,0 +1,32 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "PerformanceRenderTiming.h"
#include "mozilla/dom/PerformanceRenderTimingBinding.h"
using namespace mozilla::dom;
PerformanceRenderTiming::PerformanceRenderTiming(nsISupports* aParent,
const nsAString& aName,
const DOMHighResTimeStamp& aStartTime,
const DOMHighResTimeStamp& aDuration,
uint32_t aSourceFrameNumber)
: PerformanceEntry(aParent, aName, NS_LITERAL_STRING("render"))
, mStartTime(aStartTime)
, mDuration(aDuration)
, mSourceFrameNumber(aSourceFrameNumber)
{
MOZ_ASSERT(aParent, "Parent performance object should be provided");
}
PerformanceRenderTiming::~PerformanceRenderTiming()
{
}
JSObject*
PerformanceRenderTiming::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
{
return PerformanceRenderTimingBinding::Wrap(aCx, this, aGivenProto);
}

Просмотреть файл

@ -0,0 +1,51 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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_performancerendertiming_h___
#define mozilla_dom_performancerendertiming_h___
#include "mozilla/dom/PerformanceEntry.h"
namespace mozilla {
namespace dom {
// http://www.w3.org/TR/frame-timing/#performancerendertiming
class PerformanceRenderTiming final : public PerformanceEntry
{
public:
PerformanceRenderTiming(nsISupports* aParent,
const nsAString& aName,
const DOMHighResTimeStamp& aStartTime,
const DOMHighResTimeStamp& aDuration,
uint32_t aSourceFrameNumber);
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
virtual DOMHighResTimeStamp StartTime() const override
{
return mStartTime;
}
virtual DOMHighResTimeStamp Duration() const override
{
return mDuration;
}
uint32_t SourceFrameNumber() const
{
return mSourceFrameNumber;
}
protected:
virtual ~PerformanceRenderTiming();
DOMHighResTimeStamp mStartTime;
DOMHighResTimeStamp mDuration;
uint32_t mSourceFrameNumber;
};
} // namespace dom
} // namespace mozilla
#endif /* mozilla_dom_performancerendertiming_h___ */

Просмотреть файл

@ -186,11 +186,13 @@ EXPORTS.mozilla.dom += [
'NodeInfo.h', 'NodeInfo.h',
'NodeInfoInlines.h', 'NodeInfoInlines.h',
'NodeIterator.h', 'NodeIterator.h',
'PerformanceCompositeTiming.h',
'PerformanceEntry.h', 'PerformanceEntry.h',
'PerformanceMark.h', 'PerformanceMark.h',
'PerformanceMeasure.h', 'PerformanceMeasure.h',
'PerformanceObserver.h', 'PerformanceObserver.h',
'PerformanceObserverEntryList.h', 'PerformanceObserverEntryList.h',
'PerformanceRenderTiming.h',
'PerformanceResourceTiming.h', 'PerformanceResourceTiming.h',
'ProcessGlobal.h', 'ProcessGlobal.h',
'ResponsiveImageSelector.h', 'ResponsiveImageSelector.h',
@ -327,11 +329,13 @@ UNIFIED_SOURCES += [
'nsXMLContentSerializer.cpp', 'nsXMLContentSerializer.cpp',
'nsXMLHttpRequest.cpp', 'nsXMLHttpRequest.cpp',
'nsXMLNameSpaceMap.cpp', 'nsXMLNameSpaceMap.cpp',
'PerformanceCompositeTiming.cpp',
'PerformanceEntry.cpp', 'PerformanceEntry.cpp',
'PerformanceMark.cpp', 'PerformanceMark.cpp',
'PerformanceMeasure.cpp', 'PerformanceMeasure.cpp',
'PerformanceObserver.cpp', 'PerformanceObserver.cpp',
'PerformanceObserverEntryList.cpp', 'PerformanceObserverEntryList.cpp',
'PerformanceRenderTiming.cpp',
'PerformanceResourceTiming.cpp', 'PerformanceResourceTiming.cpp',
'PostMessageEvent.cpp', 'PostMessageEvent.cpp',
'ProcessGlobal.cpp', 'ProcessGlobal.cpp',

Просмотреть файл

@ -0,0 +1,19 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*
* The origin of this IDL file is
* http://www.w3.org/TR/frame-timing/#performancecompositetiming
*
* Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C
* liability, trademark and document use rules apply.
*/
[Pref="dom.enable_frame_timing"]
interface PerformanceCompositeTiming : PerformanceEntry
{
readonly attribute unsigned long sourceFrameNumber;
jsonifier;
};

Просмотреть файл

@ -0,0 +1,19 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*
* The origin of this IDL file is
* http://www.w3.org/TR/frame-timing/#performancerendertiming
*
* Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C
* liability, trademark and document use rules apply.
*/
[Pref="dom.enable_frame_timing"]
interface PerformanceRenderTiming : PerformanceEntry
{
readonly attribute unsigned long sourceFrameNumber;
jsonifier;
};

Просмотреть файл

@ -349,12 +349,14 @@ WEBIDL_FILES = [
'PannerNode.webidl', 'PannerNode.webidl',
'ParentNode.webidl', 'ParentNode.webidl',
'Performance.webidl', 'Performance.webidl',
'PerformanceCompositeTiming.webidl',
'PerformanceEntry.webidl', 'PerformanceEntry.webidl',
'PerformanceMark.webidl', 'PerformanceMark.webidl',
'PerformanceMeasure.webidl', 'PerformanceMeasure.webidl',
'PerformanceNavigation.webidl', 'PerformanceNavigation.webidl',
'PerformanceObserver.webidl', 'PerformanceObserver.webidl',
'PerformanceObserverEntryList.webidl', 'PerformanceObserverEntryList.webidl',
'PerformanceRenderTiming.webidl',
'PerformanceResourceTiming.webidl', 'PerformanceResourceTiming.webidl',
'PerformanceTiming.webidl', 'PerformanceTiming.webidl',
'PeriodicWave.webidl', 'PeriodicWave.webidl',