| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/inspector/InspectorTraceEvents.h" | 6 #include "core/inspector/InspectorTraceEvents.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/ScriptCallStackFactory.h" | 8 #include "bindings/core/v8/ScriptCallStackFactory.h" |
| 9 #include "bindings/core/v8/ScriptGCEvent.h" | 9 #include "bindings/core/v8/ScriptGCEvent.h" |
| 10 #include "bindings/core/v8/ScriptSourceCode.h" | 10 #include "bindings/core/v8/ScriptSourceCode.h" |
| 11 #include "core/animation/Animation.h" | 11 #include "core/animation/Animation.h" |
| 12 #include "core/animation/AnimationPlayer.h" | 12 #include "core/animation/AnimationPlayer.h" |
| 13 #include "core/css/invalidation/DescendantInvalidationSet.h" | 13 #include "core/css/invalidation/DescendantInvalidationSet.h" |
| 14 #include "core/dom/StyleChangeReason.h" | 14 #include "core/dom/StyleChangeReason.h" |
| 15 #include "core/events/Event.h" | 15 #include "core/events/Event.h" |
| 16 #include "core/fetch/CSSStyleSheetResource.h" | 16 #include "core/fetch/CSSStyleSheetResource.h" |
| 17 #include "core/frame/FrameView.h" | 17 #include "core/frame/FrameView.h" |
| 18 #include "core/frame/LocalFrame.h" | 18 #include "core/frame/LocalFrame.h" |
| 19 #include "core/inspector/IdentifiersFactory.h" | 19 #include "core/inspector/IdentifiersFactory.h" |
| 20 #include "core/inspector/InspectorNodeIds.h" | 20 #include "core/inspector/InspectorNodeIds.h" |
| 21 #include "core/inspector/ScriptCallStack.h" | 21 #include "core/inspector/ScriptCallStack.h" |
| 22 #include "core/layout/Layer.h" | 22 #include "core/layout/Layer.h" |
| 23 #include "core/layout/LayoutObject.h" |
| 23 #include "core/page/Page.h" | 24 #include "core/page/Page.h" |
| 24 #include "core/rendering/RenderImage.h" | 25 #include "core/rendering/RenderImage.h" |
| 25 #include "core/rendering/RenderObject.h" | |
| 26 #include "core/workers/WorkerThread.h" | 26 #include "core/workers/WorkerThread.h" |
| 27 #include "core/xmlhttprequest/XMLHttpRequest.h" | 27 #include "core/xmlhttprequest/XMLHttpRequest.h" |
| 28 #include "platform/JSONValues.h" | 28 #include "platform/JSONValues.h" |
| 29 #include "platform/TracedValue.h" | 29 #include "platform/TracedValue.h" |
| 30 #include "platform/graphics/GraphicsLayer.h" | 30 #include "platform/graphics/GraphicsLayer.h" |
| 31 #include "platform/network/ResourceRequest.h" | 31 #include "platform/network/ResourceRequest.h" |
| 32 #include "platform/network/ResourceResponse.h" | 32 #include "platform/network/ResourceResponse.h" |
| 33 #include "platform/weborigin/KURL.h" | 33 #include "platform/weborigin/KURL.h" |
| 34 #include "wtf/Vector.h" | 34 #include "wtf/Vector.h" |
| 35 #include <inttypes.h> | 35 #include <inttypes.h> |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 value->pushDouble(quad.p1().y()); | 288 value->pushDouble(quad.p1().y()); |
| 289 value->pushDouble(quad.p2().x()); | 289 value->pushDouble(quad.p2().x()); |
| 290 value->pushDouble(quad.p2().y()); | 290 value->pushDouble(quad.p2().y()); |
| 291 value->pushDouble(quad.p3().x()); | 291 value->pushDouble(quad.p3().x()); |
| 292 value->pushDouble(quad.p3().y()); | 292 value->pushDouble(quad.p3().y()); |
| 293 value->pushDouble(quad.p4().x()); | 293 value->pushDouble(quad.p4().x()); |
| 294 value->pushDouble(quad.p4().y()); | 294 value->pushDouble(quad.p4().y()); |
| 295 value->endArray(); | 295 value->endArray(); |
| 296 } | 296 } |
| 297 | 297 |
| 298 static void setGeneratingNodeInfo(TracedValue* value, const RenderObject* render
er, const char* idFieldName, const char* nameFieldName = nullptr) | 298 static void setGeneratingNodeInfo(TracedValue* value, const LayoutObject* render
er, const char* idFieldName, const char* nameFieldName = nullptr) |
| 299 { | 299 { |
| 300 Node* node = nullptr; | 300 Node* node = nullptr; |
| 301 for (; renderer && !node; renderer = renderer->parent()) | 301 for (; renderer && !node; renderer = renderer->parent()) |
| 302 node = renderer->generatingNode(); | 302 node = renderer->generatingNode(); |
| 303 if (!node) | 303 if (!node) |
| 304 return; | 304 return; |
| 305 | 305 |
| 306 setNodeInfo(value, node, idFieldName, nameFieldName); | 306 setNodeInfo(value, node, idFieldName, nameFieldName); |
| 307 } | 307 } |
| 308 | 308 |
| 309 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::endData(R
enderObject* rootForThisLayout) | 309 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::endData(L
ayoutObject* rootForThisLayout) |
| 310 { | 310 { |
| 311 Vector<FloatQuad> quads; | 311 Vector<FloatQuad> quads; |
| 312 rootForThisLayout->absoluteQuads(quads); | 312 rootForThisLayout->absoluteQuads(quads); |
| 313 | 313 |
| 314 RefPtr<TracedValue> value = TracedValue::create(); | 314 RefPtr<TracedValue> value = TracedValue::create(); |
| 315 if (quads.size() >= 1) { | 315 if (quads.size() >= 1) { |
| 316 createQuad(value.get(), "root", quads[0]); | 316 createQuad(value.get(), "root", quads[0]); |
| 317 setGeneratingNodeInfo(value.get(), rootForThisLayout, "rootNode"); | 317 setGeneratingNodeInfo(value.get(), rootForThisLayout, "rootNode"); |
| 318 } else { | 318 } else { |
| 319 ASSERT_NOT_REACHED(); | 319 ASSERT_NOT_REACHED(); |
| 320 } | 320 } |
| 321 return value.release(); | 321 return value.release(); |
| 322 } | 322 } |
| 323 | 323 |
| 324 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutInvalidationTrac
kingEvent::data(const RenderObject* renderer) | 324 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutInvalidationTrac
kingEvent::data(const LayoutObject* renderer) |
| 325 { | 325 { |
| 326 ASSERT(renderer); | 326 ASSERT(renderer); |
| 327 RefPtr<TracedValue> value = TracedValue::create(); | 327 RefPtr<TracedValue> value = TracedValue::create(); |
| 328 value->setString("frame", toHexString(renderer->frame())); | 328 value->setString("frame", toHexString(renderer->frame())); |
| 329 setGeneratingNodeInfo(value.get(), renderer, "nodeId", "nodeName"); | 329 setGeneratingNodeInfo(value.get(), renderer, "nodeId", "nodeName"); |
| 330 if (RefPtrWillBeRawPtr<ScriptCallStack> stackTrace = createScriptCallStack(m
axInvalidationTrackingCallstackSize, true)) | 330 if (RefPtrWillBeRawPtr<ScriptCallStack> stackTrace = createScriptCallStack(m
axInvalidationTrackingCallstackSize, true)) |
| 331 stackTrace->toTracedValue(value.get(), "stackTrace"); | 331 stackTrace->toTracedValue(value.get(), "stackTrace"); |
| 332 return value.release(); | 332 return value.release(); |
| 333 } | 333 } |
| 334 | 334 |
| 335 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintInvalidationTrack
ingEvent::data(const RenderObject* renderer, const RenderObject* paintContainer) | 335 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintInvalidationTrack
ingEvent::data(const LayoutObject* renderer, const LayoutObject* paintContainer) |
| 336 { | 336 { |
| 337 ASSERT(renderer); | 337 ASSERT(renderer); |
| 338 RefPtr<TracedValue> value = TracedValue::create(); | 338 RefPtr<TracedValue> value = TracedValue::create(); |
| 339 value->setString("frame", toHexString(renderer->frame())); | 339 value->setString("frame", toHexString(renderer->frame())); |
| 340 setGeneratingNodeInfo(value.get(), paintContainer, "paintId"); | 340 setGeneratingNodeInfo(value.get(), paintContainer, "paintId"); |
| 341 setGeneratingNodeInfo(value.get(), renderer, "nodeId", "nodeName"); | 341 setGeneratingNodeInfo(value.get(), renderer, "nodeId", "nodeName"); |
| 342 return value.release(); | 342 return value.release(); |
| 343 } | 343 } |
| 344 | 344 |
| 345 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data
(unsigned long identifier, LocalFrame* frame, const ResourceRequest& request) | 345 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data
(unsigned long identifier, LocalFrame* frame, const ResourceRequest& request) |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrLoadEvent::data(Exe
cutionContext* context, XMLHttpRequest* request) | 486 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrLoadEvent::data(Exe
cutionContext* context, XMLHttpRequest* request) |
| 487 { | 487 { |
| 488 RefPtr<TracedValue> value = TracedValue::create(); | 488 RefPtr<TracedValue> value = TracedValue::create(); |
| 489 value->setString("url", request->url().string()); | 489 value->setString("url", request->url().string()); |
| 490 if (LocalFrame* frame = frameForExecutionContext(context)) | 490 if (LocalFrame* frame = frameForExecutionContext(context)) |
| 491 value->setString("frame", toHexString(frame)); | 491 value->setString("frame", toHexString(frame)); |
| 492 setCallStack(value.get()); | 492 setCallStack(value.get()); |
| 493 return value.release(); | 493 return value.release(); |
| 494 } | 494 } |
| 495 | 495 |
| 496 static void localToPageQuad(const RenderObject& renderer, const LayoutRect& rect
, FloatQuad* quad) | 496 static void localToPageQuad(const LayoutObject& renderer, const LayoutRect& rect
, FloatQuad* quad) |
| 497 { | 497 { |
| 498 LocalFrame* frame = renderer.frame(); | 498 LocalFrame* frame = renderer.frame(); |
| 499 FrameView* view = frame->view(); | 499 FrameView* view = frame->view(); |
| 500 FloatQuad absolute = renderer.localToAbsoluteQuad(FloatQuad(rect)); | 500 FloatQuad absolute = renderer.localToAbsoluteQuad(FloatQuad(rect)); |
| 501 quad->setP1(view->contentsToRootView(roundedIntPoint(absolute.p1()))); | 501 quad->setP1(view->contentsToRootView(roundedIntPoint(absolute.p1()))); |
| 502 quad->setP2(view->contentsToRootView(roundedIntPoint(absolute.p2()))); | 502 quad->setP2(view->contentsToRootView(roundedIntPoint(absolute.p2()))); |
| 503 quad->setP3(view->contentsToRootView(roundedIntPoint(absolute.p3()))); | 503 quad->setP3(view->contentsToRootView(roundedIntPoint(absolute.p3()))); |
| 504 quad->setP4(view->contentsToRootView(roundedIntPoint(absolute.p4()))); | 504 quad->setP4(view->contentsToRootView(roundedIntPoint(absolute.p4()))); |
| 505 } | 505 } |
| 506 | 506 |
| 507 const char InspectorLayerInvalidationTrackingEvent::SquashingLayerGeometryWasUpd
ated[] = "Squashing layer geometry was updated"; | 507 const char InspectorLayerInvalidationTrackingEvent::SquashingLayerGeometryWasUpd
ated[] = "Squashing layer geometry was updated"; |
| 508 const char InspectorLayerInvalidationTrackingEvent::AddedToSquashingLayer[] = "T
he layer may have been added to an already-existing squashing layer"; | 508 const char InspectorLayerInvalidationTrackingEvent::AddedToSquashingLayer[] = "T
he layer may have been added to an already-existing squashing layer"; |
| 509 const char InspectorLayerInvalidationTrackingEvent::RemovedFromSquashingLayer[]
= "Removed the layer from a squashing layer"; | 509 const char InspectorLayerInvalidationTrackingEvent::RemovedFromSquashingLayer[]
= "Removed the layer from a squashing layer"; |
| 510 const char InspectorLayerInvalidationTrackingEvent::ReflectionLayerChanged[] = "
Reflection layer change"; | 510 const char InspectorLayerInvalidationTrackingEvent::ReflectionLayerChanged[] = "
Reflection layer change"; |
| 511 const char InspectorLayerInvalidationTrackingEvent::NewCompositedLayer[] = "Assi
gned a new composited layer"; | 511 const char InspectorLayerInvalidationTrackingEvent::NewCompositedLayer[] = "Assi
gned a new composited layer"; |
| 512 | 512 |
| 513 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayerInvalidationTrack
ingEvent::data(const Layer* layer, const char* reason) | 513 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayerInvalidationTrack
ingEvent::data(const Layer* layer, const char* reason) |
| 514 { | 514 { |
| 515 const RenderObject* paintInvalidationContainer = layer->renderer()->containe
rForPaintInvalidation(); | 515 const LayoutObject* paintInvalidationContainer = layer->renderer()->containe
rForPaintInvalidation(); |
| 516 | 516 |
| 517 RefPtr<TracedValue> value = TracedValue::create(); | 517 RefPtr<TracedValue> value = TracedValue::create(); |
| 518 value->setString("frame", toHexString(paintInvalidationContainer->frame())); | 518 value->setString("frame", toHexString(paintInvalidationContainer->frame())); |
| 519 setGeneratingNodeInfo(value.get(), paintInvalidationContainer, "paintId"); | 519 setGeneratingNodeInfo(value.get(), paintInvalidationContainer, "paintId"); |
| 520 value->setString("reason", reason); | 520 value->setString("reason", reason); |
| 521 return value.release(); | 521 return value.release(); |
| 522 } | 522 } |
| 523 | 523 |
| 524 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(Rende
rObject* renderer, const LayoutRect& clipRect, const GraphicsLayer* graphicsLaye
r) | 524 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(Layou
tObject* renderer, const LayoutRect& clipRect, const GraphicsLayer* graphicsLaye
r) |
| 525 { | 525 { |
| 526 RefPtr<TracedValue> value = TracedValue::create(); | 526 RefPtr<TracedValue> value = TracedValue::create(); |
| 527 value->setString("frame", toHexString(renderer->frame())); | 527 value->setString("frame", toHexString(renderer->frame())); |
| 528 FloatQuad quad; | 528 FloatQuad quad; |
| 529 localToPageQuad(*renderer, clipRect, &quad); | 529 localToPageQuad(*renderer, clipRect, &quad); |
| 530 createQuad(value.get(), "clip", quad); | 530 createQuad(value.get(), "clip", quad); |
| 531 setGeneratingNodeInfo(value.get(), renderer, "nodeId"); | 531 setGeneratingNodeInfo(value.get(), renderer, "nodeId"); |
| 532 int graphicsLayerId = graphicsLayer ? graphicsLayer->platformLayer()->id() :
0; | 532 int graphicsLayerId = graphicsLayer ? graphicsLayer->platformLayer()->id() :
0; |
| 533 value->setInteger("layerId", graphicsLayerId); | 533 value->setInteger("layerId", graphicsLayerId); |
| 534 setCallStack(value.get()); | 534 setCallStack(value.get()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 549 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorCommitLoadEvent::data(
LocalFrame* frame) | 549 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorCommitLoadEvent::data(
LocalFrame* frame) |
| 550 { | 550 { |
| 551 return frameEventData(frame); | 551 return frameEventData(frame); |
| 552 } | 552 } |
| 553 | 553 |
| 554 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorMarkLoadEvent::data(Lo
calFrame* frame) | 554 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorMarkLoadEvent::data(Lo
calFrame* frame) |
| 555 { | 555 { |
| 556 return frameEventData(frame); | 556 return frameEventData(frame); |
| 557 } | 557 } |
| 558 | 558 |
| 559 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorScrollLayerEvent::data
(RenderObject* renderer) | 559 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorScrollLayerEvent::data
(LayoutObject* renderer) |
| 560 { | 560 { |
| 561 RefPtr<TracedValue> value = TracedValue::create(); | 561 RefPtr<TracedValue> value = TracedValue::create(); |
| 562 value->setString("frame", toHexString(renderer->frame())); | 562 value->setString("frame", toHexString(renderer->frame())); |
| 563 setGeneratingNodeInfo(value.get(), renderer, "nodeId"); | 563 setGeneratingNodeInfo(value.get(), renderer, "nodeId"); |
| 564 return value.release(); | 564 return value.release(); |
| 565 } | 565 } |
| 566 | 566 |
| 567 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorUpdateLayerTreeEvent::
data(LocalFrame* frame) | 567 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorUpdateLayerTreeEvent::
data(LocalFrame* frame) |
| 568 { | 568 { |
| 569 RefPtr<TracedValue> value = TracedValue::create(); | 569 RefPtr<TracedValue> value = TracedValue::create(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 595 | 595 |
| 596 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(
const RenderImage& renderImage) | 596 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(
const RenderImage& renderImage) |
| 597 { | 597 { |
| 598 RefPtr<TracedValue> value = TracedValue::create(); | 598 RefPtr<TracedValue> value = TracedValue::create(); |
| 599 setGeneratingNodeInfo(value.get(), &renderImage, "nodeId"); | 599 setGeneratingNodeInfo(value.get(), &renderImage, "nodeId"); |
| 600 if (const ImageResource* resource = renderImage.cachedImage()) | 600 if (const ImageResource* resource = renderImage.cachedImage()) |
| 601 value->setString("url", resource->url().string()); | 601 value->setString("url", resource->url().string()); |
| 602 return value.release(); | 602 return value.release(); |
| 603 } | 603 } |
| 604 | 604 |
| 605 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(
const RenderObject& owningRenderer, const StyleImage& styleImage) | 605 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(
const LayoutObject& owningRenderer, const StyleImage& styleImage) |
| 606 { | 606 { |
| 607 RefPtr<TracedValue> value = TracedValue::create(); | 607 RefPtr<TracedValue> value = TracedValue::create(); |
| 608 setGeneratingNodeInfo(value.get(), &owningRenderer, "nodeId"); | 608 setGeneratingNodeInfo(value.get(), &owningRenderer, "nodeId"); |
| 609 if (const ImageResource* resource = styleImage.cachedImage()) | 609 if (const ImageResource* resource = styleImage.cachedImage()) |
| 610 value->setString("url", resource->url().string()); | 610 value->setString("url", resource->url().string()); |
| 611 return value.release(); | 611 return value.release(); |
| 612 } | 612 } |
| 613 | 613 |
| 614 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(
const RenderObject* owningRenderer, const ImageResource& imageResource) | 614 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(
const LayoutObject* owningRenderer, const ImageResource& imageResource) |
| 615 { | 615 { |
| 616 RefPtr<TracedValue> value = TracedValue::create(); | 616 RefPtr<TracedValue> value = TracedValue::create(); |
| 617 setGeneratingNodeInfo(value.get(), owningRenderer, "nodeId"); | 617 setGeneratingNodeInfo(value.get(), owningRenderer, "nodeId"); |
| 618 value->setString("url", imageResource.url().string()); | 618 value->setString("url", imageResource.url().string()); |
| 619 return value.release(); | 619 return value.release(); |
| 620 } | 620 } |
| 621 | 621 |
| 622 static size_t usedHeapSize() | 622 static size_t usedHeapSize() |
| 623 { | 623 { |
| 624 HeapInfo info; | 624 HeapInfo info; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 } | 718 } |
| 719 | 719 |
| 720 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationStateEvent::d
ata(const AnimationPlayer& player) | 720 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationStateEvent::d
ata(const AnimationPlayer& player) |
| 721 { | 721 { |
| 722 RefPtr<TracedValue> value = TracedValue::create(); | 722 RefPtr<TracedValue> value = TracedValue::create(); |
| 723 value->setString("state", player.playState()); | 723 value->setString("state", player.playState()); |
| 724 return value.release(); | 724 return value.release(); |
| 725 } | 725 } |
| 726 | 726 |
| 727 } | 727 } |
| OLD | NEW |