WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
80127
Web Inspector: add timeline instrumentation for frame events
https://bugs.webkit.org/show_bug.cgi?id=80127
Summary
Web Inspector: add timeline instrumentation for frame events
Andrey Kosyakov
Reported
2012-03-02 01:45:45 PST
This adds an instrumentation interfaces and some visualization for frame-related events: - beginning and end of frame rendering (end is currently ignored) - layer compositing events When frame marks are available, these are displayed in "start at zero" overview mode as vertical lines on main timeline grid, provided it is zoomed to 1 second per screen or closer. Also, start at zero aggregates events by frames.
Attachments
Patch
(38.81 KB, patch)
2012-03-02 01:49 PST
,
Andrey Kosyakov
no flags
Details
Formatted Diff
Diff
Patch
(42.11 KB, patch)
2012-03-02 06:05 PST
,
Andrey Kosyakov
no flags
Details
Formatted Diff
Diff
Patch
(41.09 KB, patch)
2012-03-02 11:47 PST
,
Andrey Kosyakov
pfeldman
: review+
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Andrey Kosyakov
Comment 1
2012-03-02 01:49:45 PST
Created
attachment 129844
[details]
Patch
WebKit Review Bot
Comment 2
2012-03-02 01:54:04 PST
Please wait for approval from
fishd@chromium.org
before submitting because this patch contains changes to the Chromium public API.
WebKit Review Bot
Comment 3
2012-03-02 04:05:04 PST
Comment on
attachment 129844
[details]
Patch
Attachment 129844
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11776932
New failing tests: inspector/timeline/timeline-enum-stability.html
Timothy Hatcher
Comment 4
2012-03-02 05:06:26 PST
Comment on
attachment 129844
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=129844&action=review
> Source/WebKit/chromium/ChangeLog:20 > + * public/WebWidget.h: > + (WebWidget): > + (WebKit::WebWidget::willBeginUpdate): > + (WebKit::WebWidget::didEndUpdate): > + * src/WebDevToolsAgentImpl.cpp: > + (WebKit::WebDevToolsAgentImpl::willComposeLayers): > + (WebKit): > + (WebKit::WebDevToolsAgentImpl::didComposeLayers): > + (WebKit::WebDevToolsAgentImpl::willBeginFrameUpdate): > + (WebKit::WebDevToolsAgentImpl::didEndFrameUpdate):
Please file bugs for the other WebKit ports to hook this up.
Andrey Kosyakov
Comment 5
2012-03-02 06:05:42 PST
Created
attachment 129892
[details]
Patch
Pavel Feldman
Comment 6
2012-03-02 07:41:14 PST
Comment on
attachment 129892
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=129892&action=review
> Source/WebCore/inspector/InspectorController.cpp:214 > +void InspectorController::willBeginFrameUpdate()
We use will*/did* notation for non-atomic actions, we use did* notation for atomic actions. Should either be didBeginFrame() / didEndFrame() or willProcessFrame / didProcessFrame.
> Source/WebCore/inspector/InspectorController.h:83 > + void willBeginFrameUpdate();
I would move it into the instrumentation.
> Source/WebCore/inspector/InspectorController.h:85 > + void willBeginCompositing();
What does Begin / End compositing mean? Can it contain nested paints? If yes, when and why? Also, seems unrelated to the change.
> Source/WebCore/inspector/InspectorTimelineAgent.cpp:64 > +static const char LayersCompositing[] = "LayersCompositing";
This will make test fail.
> Source/WebCore/inspector/front-end/TimelineOverviewPane.js:792 > + var lastFrameTime = records[0] && records[0].startTime;
records.length && ... ?
> Source/WebCore/inspector/front-end/TimelineOverviewPane.js:828 > + for (; currentFrame < lastIndex && currentRecord < records.length; ++currentRecord) {
Could you extract method?
> Source/WebCore/inspector/front-end/TimelineOverviewPane.js:-856 > - var rightIndex = rightOffset + barWidth >= this.element.clientWidth ? null : Math.ceil((rightOffset - offset0 - 2) / barWidth * this._recordsPerBar);
What is 2 ?
> Source/WebCore/inspector/front-end/TimelineOverviewPane.js:909 > + endTime: rightOffset + 3 > windowSpan ? null : this._barTimes[lastBar].endTime
What is 3?
> Source/WebKit/chromium/public/WebWidget.h:83 > + virtual void willBeginUpdate() { }
1) "update" looks to generic, WebWidget may be updated in various ways 2) We should emphasize the instrumenting nature of these methods. debugWillBeginUpdate instrumentBeginFrame()
> Source/WebKit/chromium/public/WebWidget.h:84 > + virtual void didEndUpdate() { }
nuke this?
> Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:234 > +void WebDevToolsAgentImpl::willBeginFrameUpdate()
revert?
> Source/WebKit/chromium/src/WebDevToolsAgentImpl.h:72 > + virtual void willBeginFrameUpdate();
revert?
> Source/WebKit/chromium/src/WebDevToolsAgentPrivate.h:46 > + virtual void willBeginFrameUpdate() = 0;
revert?
> Source/WebKit/chromium/src/WebViewImpl.cpp:1271 > + if (m_devToolsAgent)
InspectorInstrumentation::didBeginFrame(m_page.get())
> Source/WebKit/chromium/src/WebViewImpl.cpp:1421 > + if (m_devToolsAgent)
Separate change please.
Andrey Kosyakov
Comment 7
2012-03-02 11:47:50 PST
Created
attachment 129932
[details]
Patch
Pavel Feldman
Comment 8
2012-03-05 00:31:38 PST
Comment on
attachment 129932
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=129932&action=review
> Source/WebCore/inspector/front-end/TimelineOverviewPane.js:283 > + return this._windowEndTime || this._presentationModel.maximumRecordTime();
!!this._windowEndTime ?
> Source/WebCore/inspector/front-end/TimelineOverviewPane.js:809 > + var scale = (this.element.clientHeight - 4) / boundarySpan;
Please use const paddingTop = 4;
Pavel Feldman
Comment 9
2012-03-05 00:35:19 PST
I don't think we should wait for Darin's approval for the WebView::instrumentBeginFrame() and it can be landed safely. Darin, if you have any concerns about the changes to the API, please let us know and we will fix it.
Andrey Kosyakov
Comment 10
2012-03-05 00:50:14 PST
Committed
r109724
: <
http://trac.webkit.org/changeset/109724
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug