Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Unified Diff: third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp

Issue 2713553010: Migrate performance monitor to inspector instrumentation. (Closed)
Patch Set: Introduce progress monitor Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp
diff --git a/third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp b/third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp
index a8990cd56f8e0573455df2abc88bbf4acb951306..4721fbc8ce4c771be9274d2e657f3a2f27a07396 100644
--- a/third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp
+++ b/third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp
@@ -7,6 +7,7 @@
#include "bindings/core/v8/ScheduledAction.h"
#include "bindings/core/v8/ScriptEventListener.h"
#include "bindings/core/v8/SourceLocation.h"
+#include "core/InstrumentingAgents.h"
#include "core/dom/Document.h"
#include "core/dom/ExecutionContext.h"
#include "core/events/EventListener.h"
@@ -61,78 +62,6 @@ PerformanceMonitor::HandlerCall::~HandlerCall() {
}
// static
-void PerformanceMonitor::willExecuteScript(ExecutionContext* context) {
- PerformanceMonitor* performanceMonitor = PerformanceMonitor::monitor(context);
- if (performanceMonitor)
- performanceMonitor->alwaysWillExecuteScript(context);
-}
-
-// static
-void PerformanceMonitor::didExecuteScript(ExecutionContext* context) {
- PerformanceMonitor* performanceMonitor = PerformanceMonitor::monitor(context);
- if (performanceMonitor)
- performanceMonitor->alwaysDidExecuteScript();
-}
-
-// static
-void PerformanceMonitor::willCallFunction(ExecutionContext* context) {
- PerformanceMonitor* performanceMonitor = PerformanceMonitor::monitor(context);
- if (performanceMonitor)
- performanceMonitor->alwaysWillCallFunction(context);
-}
-
-// static
-void PerformanceMonitor::didCallFunction(ExecutionContext* context,
- v8::Local<v8::Function> function) {
- PerformanceMonitor* performanceMonitor = PerformanceMonitor::monitor(context);
- if (performanceMonitor)
- performanceMonitor->alwaysDidCallFunction(context, function);
-}
-
-// static
-void PerformanceMonitor::willUpdateLayout(Document* document) {
- PerformanceMonitor* performanceMonitor =
- PerformanceMonitor::instrumentingMonitor(document);
- if (performanceMonitor)
- performanceMonitor->willUpdateLayout();
-}
-
-// static
-void PerformanceMonitor::didUpdateLayout(Document* document) {
- PerformanceMonitor* performanceMonitor =
- PerformanceMonitor::instrumentingMonitor(document);
- if (performanceMonitor)
- performanceMonitor->didUpdateLayout();
-}
-
-// static
-void PerformanceMonitor::willRecalculateStyle(Document* document) {
- PerformanceMonitor* performanceMonitor =
- PerformanceMonitor::instrumentingMonitor(document);
- if (performanceMonitor)
- performanceMonitor->willRecalculateStyle();
-}
-
-// static
-void PerformanceMonitor::didRecalculateStyle(Document* document) {
- PerformanceMonitor* performanceMonitor =
- PerformanceMonitor::instrumentingMonitor(document);
- if (performanceMonitor)
- performanceMonitor->didRecalculateStyle();
-}
-
-// static
-void PerformanceMonitor::documentWriteFetchScript(Document* document) {
- PerformanceMonitor* performanceMonitor =
- PerformanceMonitor::instrumentingMonitor(document);
- if (!performanceMonitor)
- return;
- String text = "Parser was blocked due to document.write(<script>)";
- performanceMonitor->innerReportGenericViolation(document, kBlockedParser,
- text, 0, nullptr);
-}
-
-// static
double PerformanceMonitor::threshold(ExecutionContext* context,
Violation violation) {
PerformanceMonitor* monitor =
@@ -177,10 +106,11 @@ PerformanceMonitor::PerformanceMonitor(LocalFrame* localRoot)
: m_localRoot(localRoot) {
std::fill(std::begin(m_thresholds), std::end(m_thresholds), 0);
Platform::current()->currentThread()->addTaskTimeObserver(this);
+ m_localRoot->instrumentingAgents()->addPerformanceMonitor(this);
}
PerformanceMonitor::~PerformanceMonitor() {
- shutdown();
+ DCHECK(!m_localRoot);
}
void PerformanceMonitor::subscribe(Violation violation,
@@ -203,9 +133,13 @@ void PerformanceMonitor::unsubscribeAll(Client* client) {
}
void PerformanceMonitor::shutdown() {
+ if (!m_localRoot)
+ return;
m_subscriptions.clear();
updateInstrumentation();
Platform::current()->currentThread()->removeTaskTimeObserver(this);
+ m_localRoot->instrumentingAgents()->removePerformanceMonitor(this);
+ m_localRoot = nullptr;
}
void PerformanceMonitor::updateInstrumentation() {
@@ -225,7 +159,7 @@ void PerformanceMonitor::updateInstrumentation() {
static_cast<int>(kAfterLast);
}
-void PerformanceMonitor::alwaysWillExecuteScript(ExecutionContext* context) {
+void PerformanceMonitor::willExecuteScript(ExecutionContext* context) {
// Heuristic for minimal frame context attribution: note the frame context
// for each script execution. When a long task is encountered,
// if there is only one frame context involved, then report it.
@@ -240,22 +174,21 @@ void PerformanceMonitor::alwaysWillExecuteScript(ExecutionContext* context) {
m_taskHasMultipleContexts = true;
}
-void PerformanceMonitor::alwaysDidExecuteScript() {
+void PerformanceMonitor::didExecuteScript() {
--m_scriptDepth;
}
-void PerformanceMonitor::alwaysWillCallFunction(ExecutionContext* context) {
- alwaysWillExecuteScript(context);
+void PerformanceMonitor::willCallFunction(ExecutionContext* context) {
+ willExecuteScript(context);
if (!m_enabled)
return;
if (m_scriptDepth == 1 && m_thresholds[m_handlerType])
m_scriptStartTime = WTF::monotonicallyIncreasingTime();
}
-void PerformanceMonitor::alwaysDidCallFunction(
- ExecutionContext* context,
- v8::Local<v8::Function> function) {
- alwaysDidExecuteScript();
+void PerformanceMonitor::didCallFunction(ExecutionContext* context,
+ v8::Local<v8::Function> function) {
+ didExecuteScript();
if (!m_enabled)
return;
if (m_scriptDepth)
@@ -277,12 +210,16 @@ void PerformanceMonitor::alwaysDidCallFunction(
}
void PerformanceMonitor::willUpdateLayout() {
+ if (!m_enabled)
+ return;
if (m_thresholds[kLongLayout] && m_scriptDepth && !m_layoutDepth)
m_layoutStartTime = WTF::monotonicallyIncreasingTime();
++m_layoutDepth;
}
void PerformanceMonitor::didUpdateLayout() {
+ if (!m_enabled)
+ return;
--m_layoutDepth;
if (m_thresholds[kLongLayout] && m_scriptDepth && !m_layoutDepth) {
m_perTaskStyleAndLayoutTime +=
@@ -290,18 +227,30 @@ void PerformanceMonitor::didUpdateLayout() {
}
}
-void PerformanceMonitor::willRecalculateStyle() {
+void PerformanceMonitor::willRecalculateStyle(Document*) {
+ if (!m_enabled)
+ return;
+
if (m_thresholds[kLongLayout] && m_scriptDepth)
m_styleStartTime = WTF::monotonicallyIncreasingTime();
}
void PerformanceMonitor::didRecalculateStyle() {
+ if (!m_enabled)
+ return;
if (m_thresholds[kLongLayout] && m_scriptDepth) {
m_perTaskStyleAndLayoutTime +=
WTF::monotonicallyIncreasingTime() - m_styleStartTime;
}
}
+void PerformanceMonitor::documentWriteFetchScript(Document* document) {
+ if (!m_enabled)
+ return;
+ String text = "Parser was blocked due to document.write(<script>)";
+ innerReportGenericViolation(document, kBlockedParser, text, 0, nullptr);
+}
+
void PerformanceMonitor::willProcessTask(scheduler::TaskQueue*,
double startTime) {
// Reset m_taskExecutionContext. We don't clear this in didProcessTask

Powered by Google App Engine
This is Rietveld 408576698