The native-side death recipient object holds a global reference
to the DVM-side DeathRecipient instance. This is necessary so
that the DeathRecipient isn't GC'd early in the case when the
caller of linkToDeath() doesn't retain their own reference to
the recipient instance.
However, that global reference was never being released in
association with the delivery of the actual binderDied() event.
In that case, if the death recipient did not explicitly call
unlinkToDeath() themselves, the hard global reference was
maintained and a hard-reference cycle was perpetuated, crossing
the native <-> DVM boundary. This was visible as a gradual
leakage of DVM-side DeathRecipient and BinderProxy instances.
The one problematic constraint is that it needs to be valid to
call unlinkToDeath() cleanly *after* binderDied() is delivered
to the given recipient; that requires that we have the hard reference
linkage described above. The fix is to replace the hard global
reference with a weak reference to the DVM-side DeathRecipient
after we deliver binderDied() to that recipient. In the case
where the caller has retained their own reference to the instance
(i.e. they might still call unlinkToDeath() on it later), the
weak reference stays live and everything works cleanly (and is
reaped explicitly by unlinkToDeath() as usual). In the case where
the caller has *not* retained the instance to call unlinkToDeath()
themselves, demoting to a weak DeathRecipient reference allows
the DeathRecipient to be GC'd, which in turn frees the DVM-side
BinderProxy it's tied to, and so on around the chain to free
all of the associated allocations.
Fixes bug 5174537
Change-Id: Ia4ad76e667140cc2a1b74508bbba652ab31ab876
Fix some bugs related to how action item slots are allocated in menus.
Fix some padding/margins in ActivityChooserView.
Change-Id: I12096b0165daca902c5bc8e24c1e8d54a35e9557
NumberPicker was making incorrect assumptions about how text was
positioned and centered inside of its controls. This fix changes
the logic of how the scroll wheel draws its text items based on where
the text is positioned inside the EditText that displays the text
by default. This should ensure that the text of the scroll wheel
exactly overlays the text in the EditText view.
Change-Id: I4a7694931f19042bd4142232612490c2ab912d11
- use the real TextDirectionHeuristics constants
- make more formal that LayoutDirection should be resolved BEFORE TextDirection
- reset TextDirection if LayoutDirection is recomputed
- remove non used TextDirectionHeuristic.isRtl(CharSequence...)
Change-Id: I1d53a7e3ee324cfd27785bb4d715d93de8d9ff4d
Bug: 5178204
Update the focused state drawables when focus changes. Blue
underlines were not showing up consistently.
Bug: 5174426
Also use the correct style for the search icon so that it matches
other actionbar actions.
Change-Id: I8beed4cf435b074280a5dd79f7a4da4a39152b71
Adjust preferences ListView to use direct padding instead of applying
to outer parent. Also display scrollbars outsideOverlay on small
screens.
Change-Id: I750c53d2452d8842d487a091075c32f009f2c2fc
When restricting background data, show ongoing notification to give
easy access to re-enable. Deprecate getBackgroundDataSetting() API
to always return true, since NetworkInfo.isConnected() is new source
of truth. Handle upgrade path by reading from existing secure value,
and kick one last broadcast when changing value. Remove background
data code from ConnectivityService.
Remove warning alerts, since they push ifaces into restricted list;
should only happen when iface has limit.
Bug: 5163559, 5129421
Change-Id: I0064d9d643656a4d32aaae51d4a58bce49fe295f
Tagging is conditional on having some useful info to tag.
But untagging had not such restriction leading to unnecessary kernel
calls that just fail with EINVAL.
b/5165619
Change-Id: Idd4b1dc45db04429f85e3ba37656640a8d33046a