Hello Grace,
It is ok to have the self and total times different for these views.
Consider the no-groupping case first.
The root items of the call tree are the ones that lay at the bottom of execution stack, i.e. they are the ones browser starts tasks execution with.
Examples are TimerFired event, XHR state change, etc. They in turn usually cause JS code starts execution building the call tree further.
These root items usually have longer total times, but smaller self times as they usually just pass execution to their children.
In contrary the root level of bottom-up tree consists of all nodes ever present in the call tree (not just root ones).
Each function has aggregated self time, e.g. the time when it was on top of the stack across all its occurances.
The aggregated total time corresponds to the time when a node was present somewhere on the stack (no necessary at the top).
Therefore the total and self times can be different for these trees as they just calculated across the different set of nodes.
When the groupping kicks in, it justs groups together root nodes that share the same property, e.g. frame or url.
Thus times can be different for groupped case, just because it is built upon the non-groupped case which already can produce different times for items.
As for Function vs. Activity it's just a pure rename, as the items in this column are not always JS functions, but can be Layouts, GCs etc.
Group by frame is indeed a new option, but in fact it is similar in behavior to the ones existed before. In just groups together root level items having identical frame property.
Cheers,
Alex