Adds functions for skipping child component layout measuring.
Removes unnecessary code from VScrollTable.
1. case: no components
- render time without the fix: ~105ms
- render time with fix: ~105ms
2. case: 2 button and 2 textfield cols
- render time without the fix: ~279ms
- render time with fix: ~240ms (~17% faster)
3. case: 3 button and 3 textfield cols
- render time without the fix: ~350ms
- render time with fix: ~281ms (~20% faster)
Change-Id: I6025f8ee2fd438d228ff3b65f43535961cf12c0b
This change removes the method LayoutDependenyTree.setNeedsMeasure which
takes a connectorId as first param.
In all places where it is used, the ComponentConnector is actually known,
so this change avoids looking it up over and over again.
Also The lookup would need to lookup the ConnectorMap every time.
Change-Id: I2593b0bede05cd69889ba68aac854cfba43f70b1
Improve performance of getMeasureTargetsJsArray (#16973).
This change optimizes the method
LayoutDependenyTree.getMeasureTargetsJsArray.
The previous code dumps both MeasureQueues and then iterates over the
vertical one and then checks if it is present in the horizontal one.
If it is not present it pushes the element to the array (which usually
invokes an arraycopy in js).
The new code adds both Queues to a new FastStringSet which does deal
with duplicates nicely.
While this is not much faster than the dumps, it avoids the array
allocations and the separate iteration for duplicate checking.
Change-Id: I2f643a2d0b32e4c2517efff16c196387f38f0d8a
Run scrollbar fix for the next ancestor where it might be needed (#8615)
The previous behavior of only running it for the direct parent if
applicable didn't catch all situations where the fix was needed.
Also postpone layout fix until no interfering changes are expected.