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

Unified Diff: third_party/WebKit/Source/core/timing/Performance.cpp

Issue 2515993002: Replace DOMWindow with iframe attrs: src, id, name (Closed)
Patch Set: move getattribute to helper method Created 4 years, 1 month 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/timing/Performance.cpp
diff --git a/third_party/WebKit/Source/core/timing/Performance.cpp b/third_party/WebKit/Source/core/timing/Performance.cpp
index e8402d527b83e817adafcd38c2ec1c91a1b20a52..edca848e8888fdeea689dee819eb9ff13d37b78b 100644
--- a/third_party/WebKit/Source/core/timing/Performance.cpp
+++ b/third_party/WebKit/Source/core/timing/Performance.cpp
@@ -34,12 +34,17 @@
#include "bindings/core/v8/ScriptValue.h"
#include "bindings/core/v8/V8ObjectBuilder.h"
#include "core/dom/Document.h"
+#include "core/dom/QualifiedName.h"
+#include "core/frame/DOMWindow.h"
#include "core/frame/LocalFrame.h"
#include "core/frame/UseCounter.h"
+#include "core/html/HTMLFrameOwnerElement.h"
#include "core/loader/DocumentLoader.h"
#include "core/origin_trials/OriginTrials.h"
#include "core/timing/PerformanceTiming.h"
+#include <tuple>
+
static const double kLongTaskThreshold = 0.05;
static const char kUnknownAttribution[] = "unknown";
@@ -51,6 +56,22 @@ static const char kCrossOriginAttribution[] = "cross-origin-unreachable";
namespace blink {
+namespace {
+
+String getFrameAttribute(HTMLFrameOwnerElement* frameOwner,
+ const QualifiedName& attrName,
+ bool truncate) {
+ String attrValue;
+ if (frameOwner->hasAttribute(attrName)) {
+ attrValue = frameOwner->getAttribute(attrName);
+ if (truncate && attrValue.length() > 100)
+ attrValue = attrValue.substring(0, 100); // Truncate to 100 chars
+ }
+ return attrValue;
+}
+
+} // namespace
+
static double toTimeOrigin(LocalFrame* frame) {
if (!frame)
return 0.0;
@@ -189,13 +210,31 @@ std::pair<String, DOMWindow*> Performance::sanitizedAttribution(
return std::make_pair(kCrossOriginAttribution, nullptr);
}
+std::tuple<String, String, String> Performance::culpritFrameAttributes(
skobes 2016/11/22 00:21:25 It seems unnecessary to wrap these in a std::tuple
panicker 2016/11/22 00:39:47 Agreed. Done.
+ HTMLFrameOwnerElement* frameOwner) {
+ return std::make_tuple(
+ getFrameAttribute(frameOwner, HTMLNames::srcAttr, false),
+ getFrameAttribute(frameOwner, HTMLNames::idAttr, true),
+ getFrameAttribute(frameOwner, HTMLNames::nameAttr, true));
+}
+
void Performance::reportLongTask(
double startTime,
double endTime,
const HeapHashSet<Member<Frame>>& contextFrames) {
std::pair<String, DOMWindow*> attribution =
Performance::sanitizedAttribution(contextFrames, frame());
- addLongTaskTiming(startTime, endTime, attribution.first, attribution.second);
+ DOMWindow* culpritDomWindow = attribution.second;
+ if (!culpritDomWindow || !culpritDomWindow->document() ||
+ !culpritDomWindow->document()->localOwner()) {
+ addLongTaskTiming(startTime, endTime, attribution.first, "", "", "");
+ } else {
+ std::tuple<String, String, String> frameAttribution =
+ culpritFrameAttributes(culpritDomWindow->document()->localOwner());
+ addLongTaskTiming(
+ startTime, endTime, attribution.first, std::get<0>(frameAttribution),
+ std::get<1>(frameAttribution), std::get<2>(frameAttribution));
+ }
}
} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/core/timing/Performance.h ('k') | third_party/WebKit/Source/core/timing/PerformanceBase.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698