Skip to content

Note new web inspector frontend

Brian Burg edited this page Jun 30, 2013 · 6 revisions

TODOs - Replay Dashboard

  • port the capturing ticker-tape widget
  • add stop button to ticker-tape
  • play/pause button on replay dashboard
  • eject button on replay dashboard
  • port overview timeline widget + replay slider (no zoom)
  • scroll zoom
  • zoom horizon
  • zoom horizon markers
  • zoom buttons
  • screenshots?

TODOs - Other

  • add current recording/other recordings to hierarchical navigation bar

Event dispatching

In addition to dispatching events to listeners on the object instance, events also propagate up the constructor chain. See Object.js for more details.

Model and View lifecycles

brrian: xenon: JoePeck: what's the lifecycle story for models and Views? do they never die?
[2:11pm] JoePeck: brrian: Main.js owns a bunch of things which never die. (Navigation and Detail SidebarPanels, ContentBrowser, QuickConsole)
[2:12pm] xenon: brrian: most views are closed on navigation
[2:12pm] xenon: brrian: timeline and console are exceptions
[2:12pm] JoePeck: brrian: Model objects (often stuff created from backend messages) are often held in Managers. Observer -> Manager. And those Managers clear things on page navigations. Typically handlers of the  "WebInspector.FrameResourceManager.Event.MainFrameDidChange" event
[2:12pm] xenon: look for lines like this:
[2:12pm] xenon:         WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ResourceClusterContentView);
[2:12pm] JoePeck: and WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype
JoePeck: brrian: ahh, it looks like "WebInspector.Frame.Event.MainResourceDidChange" is more common. Which makes sense
[2:14pm] JoePeck: you can see almost all the Managers register for that event and clear state when it happens
[2:18pm] xenon: which we should clean up
[2:18pm] brrian: so ContentView.{shown,hidden,closed,updateLayout} seem to resemble the old View.{wasShown,willDispose} etc
[2:20pm] brrian: i assume updateLayout() is mostly for refreshing view for any changed model state, but has same representedObject
[2:20pm] JoePeck: - shown/hidden happen when the ContentView is shown/hidden in the ContentBrowser.
[2:20pm] JoePeck: - close happens when the ContentView is going to be deleted, so I suppose close relates to willDispose.
[2:20pm] JoePeck: - I donno what "wasShown" meant
brrian: JoePeck: what is ClusterContentView for?
[6:10pm] JoePeck: brrian: When a Represented Object has multiple ContentViews. Like DOM Tree + Source Code.
[6:10pm] JoePeck: brrian: and ResourceClusterContentView would be for showing Request (like POST data in the request) and Response
[6:10pm] brrian: hm okay
[6:11pm] JoePeck: brrian: so in the UI a ClusterContentView shows up with up/down picker arrows in the main nav bar
[6:11pm] brrian: trying to figure out how to add in a ticker tape to my dashboard during capture, then show a different view when it's done recording
[6:12pm] brrian: they should be content views of some sort because they are tied to specific Objects
[6:13pm] JoePeck: brrian: is the ticker ever used after recording?
[6:13pm] brrian: no. fresh one on each recording
[6:13pm] JoePeck: brrian: ResourceContentView totally replaces its content once the type comes in. Hence the indeterminate state. So you could do something like that
[6:14pm] brrian: ok
[6:15pm] brrian: what's ContentViewContainer for then if that class can do replacement?
[6:15pm] JoePeck: brrian: hmm, ugh oh.
[6:15pm] JoePeck: brrian: So ResourceContentView registers "_resourceTypeDidChange" on WebInspector.Resource.Event.TypeDidChange
[6:15pm] JoePeck: brrian: but it looks like that moved. to ResourceClusterContentView
[6:15pm] JoePeck: so there might be a bug there...
[6:16pm] brrian: hmm
[6:16pm] JoePeck: brrian: but, yes that was exactly what i was looking for. It calls "this.contentViewContainer.replaceContentView"
[6:16pm] brrian: JoePeck: also, the dashboard contents are kinda hardcoded, i would have expected each object to manage its own listeners and be a NavigationItem
[6:16pm] JoePeck: which replaces the current content view with a new one. You could do that to replace a temporary Ticker view.
[6:17pm] JoePeck: brrian: feel free to refactor. I didn't work at all on the Dashboard. graouts and xenon both touched it
[6:17pm] brrian: k
[6:17pm] JoePeck: brrian: I saw your imgs on Twitter
[6:17pm] JoePeck: brrian: I wouldn't mind if recording took over the entire dashboard
[6:18pm] JoePeck: nifty film icon
[6:18pm] brrian: that's what xenon said
[6:18pm] jeffreylin joined the chat room.
[6:18pm] jeffreylin left the chat room. (Changing host)
[6:18pm] jeffreylin joined the chat room.
[6:19pm] brrian: i guess my main confusion is that the content views have obvious life cycles while navigation items do not
[6:19pm] brrian: unless some navigation items are also content views (kinda what i'm proposing)
[6:19pm] JoePeck: brrian: ahh, so what I mentioned above wasn't necessarily a bug. Just the line in ResourceContentView is stale and can be removed. I'll fix that
[6:20pm]