Bug 157934

Summary: Web Inspector: Right-clicking in Snapshot's DataGrid throws an exception
Product: WebKit Reporter: Nikita Vasilyev <nvasilyev>
Component: Web InspectorAssignee: Matt Baker <mattbaker>
Status: RESOLVED FIXED    
Severity: Normal CC: bburg, commit-queue, graouts, joepeck, mattbaker, nvasilyev, timothy, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Attachments:
Description Flags
[Animated GIF] Bug
none
[Patch] Proposed Fix none

Description Nikita Vasilyev 2016-05-19 16:44:01 PDT
Created attachment 279449 [details]
[Animated GIF] Bug

[Error] TypeError: null is not an object (evaluating 'cell.classList')
	isEventWithinDisclosureTriangle (DataGrid.js:2465)
	_clickInDataTable (DataGrid.js:1593)
	_clickInDataTable
Comment 1 Radar WebKit Bug Importer 2016-05-19 16:44:48 PDT
<rdar://problem/26380910>
Comment 2 BJ Burg 2016-05-29 08:14:22 PDT
I wasn't able to reproduce this.

In the future, please write down reproduction steps in addition to adding animated gifs. Often, the GIFs are not conclusive or do not show the user inputs or input timing requirements.

If you file such bugs using the built-in Uncaught Exception reporter, places for these details will already exist in the bug template.
Comment 3 Matt Baker 2016-05-29 12:30:36 PDT
* STEPS TO REPRODUCE:
1. Start and stop a recording. Two snapshots are created.
2. Select one of the snapshots.
3. In the Class Name column, right-click any disclosure triangle.
  => TypeError:​ null is not an object (evaluating 'cell.classList')​ (at DataGrid.js:​2469:​18)​
Comment 4 Matt Baker 2016-05-29 12:32:47 PDT
Looks like this affects all of our data grids.
Comment 5 Matt Baker 2016-05-29 12:37:42 PDT
Revised:

* STEPS TO REPRODUCE:
1. Start and stop a Timeline recording.
2. Select any timeline with nested grid rows. 
3. Right-click a disclosure triangle. Doesn't matter if the row is selected or not.
4. Dismiss popup with ESCAPE.
  => Nothing happens
5. Dismiss popup by clicking a cell in the same row, but a different column.
  => TypeError:​ null is not an object (evaluating 'cell.classList')​ (at DataGrid.js:​2469:​18)​
Comment 6 Matt Baker 2016-05-29 12:44:40 PDT
> 3. Right-click a disclosure triangle. Doesn't matter if the row is selected
> or not.

Also the row has to have been expanded. Doesn't matter if it is expanded when dismissing the popup, as long as it was expanded at least once in the past.
Comment 7 Matt Baker 2016-05-29 12:49:42 PDT
Fix coming.
Comment 8 Matt Baker 2016-05-29 13:42:35 PDT
Created attachment 280065 [details]
[Patch] Proposed Fix
Comment 9 BJ Burg 2016-05-30 09:33:42 PDT
(In reply to comment #5)
> Revised:
> 
> * STEPS TO REPRODUCE:
> 1. Start and stop a Timeline recording.
> 2. Select any timeline with nested grid rows. 
> 3. Right-click a disclosure triangle. Doesn't matter if the row is selected
> or not.
> 4. Dismiss popup with ESCAPE.
>   => Nothing happens
> 5. Dismiss popup by clicking a cell in the same row, but a different column.
>   => TypeError:​ null is not an object (evaluating 'cell.classList')​ (at
> DataGrid.js:​2469:​18)​

This is great.
Comment 10 BJ Burg 2016-05-30 09:34:06 PDT
Comment on attachment 280065 [details]
[Patch] Proposed Fix

r=me
Comment 11 WebKit Commit Bot 2016-05-30 09:55:08 PDT
Comment on attachment 280065 [details]
[Patch] Proposed Fix

Clearing flags on attachment: 280065

Committed r201499: <http://trac.webkit.org/changeset/201499>
Comment 12 WebKit Commit Bot 2016-05-30 09:55:12 PDT
All reviewed patches have been landed.  Closing bug.