Commit Graph

4372 Commits

Author SHA1 Message Date
John Spurlock
44b1edd948 Fix typo in View.java javadocs
Change-Id: I85b9b2bd30d1f9d38954c31f24a352930a230ced
2013-05-28 11:40:58 -04:00
Romain Guy
2f35d2441e Merge "Avoid extraneous EGL surface allocations Bug #8667873" into jb-mr2-dev 2013-05-22 02:08:24 +00:00
Romain Guy
370ab062a0 Avoid extraneous EGL surface allocations
Bug #8667873

windowShouldResize means we need to layout the window, it doesn't mean
the dimensions of the surface have changed. We should only check the
width and the height. With this fix we can avoid a surface allocation
every time the window shade is opened or closed.

Change-Id: I8afe97b820a865723f2aab7a5aa4ddc8eaaec6e1
2013-05-21 12:15:07 -07:00
Svetoslav Ganov
78a4630eda Merge "Taking into account data change for AbsListView when prefetching node infos." into jb-mr2-dev 2013-05-20 22:41:28 +00:00
Chet Haase
d8b0b23324 Add null check in ViewOverlay
View.getOverlay().clear() can failed with an NPE if there are
no drawables in the overlay. Fix: add a null check before dereferencing
the mDrawables field.

Issue #8895794 getOverlay.clear() crashes if drawables were not added previously

Change-Id: I9b2a63036450915681ba3a89a0911e2490063702
2013-05-20 07:57:02 -07:00
Svetoslav Ganov
50776863a2 Taking into account data change for AbsListView when prefetching node infos.
We are prefetching accessibility node infos to minimize the number of IPC
calls when an accessibility service introspects the screen. It is however,
possible that the view we are prefetching is a child of an AbsListView whose
adapter changed its data but the AbsListView still did not perform a layout
pass to sync its children with the new adapter state. This may lead to an
exeption when trying to query for the state of a child's position. If the
data of the adapter is changed and the layout pass still not performed,
we return null for the AbsLIstView's children. When the layout pass
completes we already notify the accessibliity layer so it will be able to
refetch the children of the AbsListView.

bug:8433433

Change-Id: I56313c721aef3848b15fad50027d068ba1d291f7
2013-05-17 18:36:57 -07:00
Chet Haase
5495c72612 Dirty rect must expand, not contract.
Different devices have different precision, leading to different pixels
being touched during rendering operations. We need to ensure that the
dirty rect we draw with (and which gets erased on the following frame)
encompasses all possible pixels instead of some ideal rounded rectangle.

The bug from this code led to dropped-pixels artifacts on some devices,
where we'd scale a view, drawing it into some pixels, then invalidate
that same area on the next frame, but the invalidation rectangle didn't
cover the same pixels as the device drew into.

The fix is to floor() the left/top pixels and ceil() the right/bottom
pixels of the transformed invalidation rectangle.

Issue #8971348 dropped pixel artifacts during some scaling operations

Change-Id: Iedb1afd5621dff43bf7a3919bdbd8d2251647fd2
2013-05-14 21:19:48 -07:00
Svetoslav
c0a979ce30 Merge "Fixing the accessibility text traversal in extend mode." into jb-mr2-dev 2013-05-14 17:39:36 +00:00
Kristian Monsen
6e7ed13b12 Merge "Fix for bug 8623163: Call view methods on the UI thread" into jb-mr2-dev 2013-05-13 09:30:07 +00:00
Svetoslav
abad55d860 Fixing the accessibility text traversal in extend mode.
We added APIs to allow an accessibility service to extend the
selection while moving the cursor at a given granularity such
as word, character, etc. The problem is that the traversal was
extending only the end of the selection while moving forward
and the start of the selection while moving backward. This leads
to a case in which the user cannot shrink/extend the selection
because for example instead of shrinking the end of the selection
the implementation was extending the start.

Now extending the selection moves only the selection end. This is
the same behavior as text view using a keyboard.

Tests: https://googleplex-android-review.googlesource.com/#/c/307062

bug:8839844

Change-Id: Id6965b102647df909f61301fcc8ec05458dd5881
2013-05-10 20:14:40 -07:00
Svetoslav
b3c2b21b5b Merge "Accessibility should not query for list items when data set changed." into jb-mr2-dev 2013-05-10 20:06:42 +00:00
Chet Haase
fb32c82412 Merge "Fix start delay jank in ViewPropertyAnimator" into jb-mr2-dev 2013-05-09 22:09:18 +00:00
Chet Haase
dcfbd6a2c9 Fix start delay jank in ViewPropertyAnimator
Issue #8892620 start delay jank in ViewPropertyAnimator

Change-Id: I17a57ac3351fb2c1516b594d135aa9ce9f78c88e
2013-05-09 14:40:21 -07:00
Svetoslav
5b578daac9 Accessibility should not query for list items when data set changed.
AbsListView is backed by an adapter. After the adapter data changes
the view sets a flag that its state is dirty and requests a layout.
If an accessibility service asks for the state of a list item at
this point, it may incur an error since the views and the adapter
are not in sync.

Now if an accessibility service queries for a list item when the
data set is changed and the item views are dirty, we pretend the
children do not exist. After the layout happens, we notify the
accessibility layer that the screen content changed so it can
refetch the views if desired (this notification mechanism is
already in place in AbsListView#handleDataChanged()).

bug:8433433

Change-Id: I4287a0ac2ef6bb33f1f988d5ddad973556c305ca
2013-05-08 14:23:38 -07:00
Michael Jurka
f42d9010f1 Fix bug where thumbnails flashed more often in Recents
Bug: 8867698

Change-Id: I2773601d83507dbb55c3a1d0b723e3853e22d352
2013-05-08 20:48:36 +02:00
Fabrice Di Meglio
366b97ba25 Merge "Fix bug #8839681 Reversed Textbox focus order on RTL and android:imeOptions="flagNoExtractUi"" into jb-mr2-dev 2013-05-08 17:56:17 +00:00
Alan Viverette
239a0c0e6a Ensure ViewRootImpl.setAccessibilityFocus() doesn't crash when reentrant.
Internal state must be cleared before calling any methods on the focus
host, since the method may be called again from the host and attempt to
recycle the same AccessibilityNodeInfo twice.

BUG: 8856860
Change-Id: I0410989fd6f3ce3ce29de8edebdfbf3847188843
2013-05-07 17:17:35 -07:00
Fabrice Di Meglio
3167c88c2c Fix bug #8839681 Reversed Textbox focus order on RTL and android:imeOptions="flagNoExtractUi"
- make SequentialFocusComparator RTL-aware

Change-Id: I3d9cc81f777d16933a8e1b69f8ed63efa5be0925
2013-05-07 15:46:22 -07:00
Romain Guy
5549cb590d Optimize list view scrolls
Bug #8108706

Change-Id: I8679b584132e82b7bb3301a38800de4ddfc57be6
2013-05-06 18:42:08 -07:00
Dave Burke
236cc476e6 Temporarily revert field name change (DO NOT MERGE)
VisualOn is using hidden fields, causing HBO and Xfinity to crash.
Bug: 8549617
Bug: 8331866

Change-Id: I35a9fe66dea8d56f4fcff9b492679226a17f4acc
2013-05-06 00:21:30 -07:00
Fabrice Di Meglio
09ecb255a6 Optimize RTL properties resolution
- dont bother children about resolving RTL properties if the ViewGroup parent
has not done anything

Change-Id: Iedf8a337097e04e1ab0054d59fc347e06b347ea7
2013-05-03 17:33:31 -07:00
Jeff Brown
17cf4e4d4a Merge "Really make Surface thread-safe." into jb-mr2-dev 2013-05-03 02:11:03 +00:00
Kristian Monsen
97e8f62804 Fix for bug 8623163: Call view methods on the UI thread
Routing all methods invoked via reflection to the UI
thread and waiting for the the return value.

Change-Id: I8c38309253187f752b715453acb7f4f7bf54f9f8
2013-05-02 18:57:21 -07:00
Jeff Brown
fc0ebd7d37 Really make Surface thread-safe.
There were many places where the native object was being
accessed improperly.  Also some places where CloseGuard might
not be acquired or released correctly or where the generation
count might not be updated.

Fixed them all.

That said, Surface isn't intended to be used concurrently
so please don't do it.  This is only intended to make
hard to find crashes less likely.

Bug: 8328715
Change-Id: I981ef33425823e0fd7ad6b64443f2ec9b0c8335e
2013-05-01 15:28:01 -07:00
Romain Guy
b107b7e9ec Merge "Prevent TextureView from ever setting a null layer paint Bug #8760436" into jb-mr2-dev 2013-05-01 01:14:41 +00:00
Romain Guy
efb709adfe Prevent TextureView from ever setting a null layer paint
Bug #8760436

DO NOT MERGE

Change-Id: I7e4d09fa534f539cb99ebeaa8159fb11920460cf
2013-04-30 11:13:00 -07:00
Chet Haase
45c89c2fad Clarify behavior of fullscreen mode and softInputMode's adjustResize
Fullscreen window's will not resize when the keyboard comes on screen,
regardless of the setting of the window's softInputMode field. This fix
clarifies the docs to make this behavior more obvious.

Issue #8754615 Clarify behavior of adjustResize and fullscreen interaction

Change-Id: Ie056db4e328cefaf0edb54fe8cfa7a08f320c8d0
2013-04-29 16:04:40 -07:00
Svetoslav Ganov
951ce6c966 Merge "Revert change f449c0c381239dc0f78b0f01ecfb3889e056a597." into jb-mr2-dev 2013-04-26 16:35:49 +00:00
Chris Craik
addc906f70 Merge "Force clipping on layers that fail to be allocated" into jb-mr2-dev 2013-04-26 02:15:45 +00:00
Alan Viverette
e7a4e636ac Revert change f449c0c381.
Previously, onHoverEvent() would return true if a view was hoverable
and consume the event. After the change, it would return the result of
dispatchGenericMotionEventInternal(). As a result, touch exploration
caused multiple hover events to be sent from every view under a given
touch point. This change reverts to the original behavior and fixes
touch exploration.

BUG: 8723842
Change-Id: I0c7362f19c51bf21ed842711a03b7f02613958d2
2013-04-25 17:32:45 -07:00
Chris Craik
eaddac6d26 Force clipping on layers that fail to be allocated
bug:8666842

In SW rendering, a previous optimization avoided clipping to the
bounds of views that are layers. This breaks if the view fails to
create a layer (such as if it's too big), so instead look at whether
the view has a layer.

Change-Id: I653882035512012aefd91f06ff0bdc73aa5e4430
2013-04-25 15:32:40 -07:00
Svetoslav
c38bc5ab6b Merge "Lockscreen widgets not always announced." into jb-mr2-dev 2013-04-25 21:49:00 +00:00
Michael Wright
b044c40c15 Merge "Fixed javadoc in input related classes" into jb-mr2-dev 2013-04-25 21:43:03 +00:00
Svetoslav
4293e233dc Lockscreen widgets not always announced.
1. The accessibility events for switching a widget were dispatched
   before we update the important for accessibility property. We
   were lucky to get events in some cases since the pages in the
   pager had alpha grater than zero, i.e. the page was already
   set as important for accessibility, due to a running animation.

2. Accessibility focus clear event not fired if we give focus to
   another view. The old focus was correctly cleared just the
   events were not dispatched.

bug:8599670

Change-Id: Ia2647d77eaa4e10fbaf3a047dc9ea5b728f9c3c3
2013-04-25 13:25:11 -07:00
Michael Wright
072137c80a Fixed javadoc in input related classes
Change-Id: Ie415f812a0f473488d74119dab18296a488db6b9
2013-04-24 20:41:20 -07:00
Chet Haase
0187a5d424 Document behavior and usage of ViewGroup.bringChildToFront()
A call to ViewGroup.bringChildToFront() or View.bringToFront()
(which delegates to the parent's bringChildToFront() method) needs
to be followed by a call to requestLayout() and invalidate() on the
parent container in order for the changes to
actually happen. That is, the order of the child views would change, but
the parent container would not run layout or even invalidation without
being told to, so there would be no visible change until something else
caused a layout and invalidation to occur.

This change clarifies this requirement in the javadocs.

Issue #8667065 bringtoTop does not work

Change-Id: Ibe41a6318dddf9fb79382e1c9fd1d21ab4510976
2013-04-24 12:37:36 -07:00
Svetoslav
4c78306617 Merge "Fixing bugs exposed when moving accessibility CTS tests to UiAutomation." into jb-mr2-dev 2013-04-24 01:05:38 +00:00
Svetoslav
db7da0eb8b Fixing bugs exposed when moving accessibility CTS tests to UiAutomation.
1. UiAutomation#executeAndWaitForEvent method was invoking the passed
   runnable while holding the lock which may lead to a deadlock. For
   example: a runnable that calls getActivity() gets us into a state
   like this.

2. UI automation services did not get all capabilities such a
   service can have. Now a UI test service gets all of them.

3. When UiAutomation was exiting for event fired as a result of a
   performed action, it was checking whether the received evnet time
   is strictly before the time of executing the command that should
   fire the event. However, if the execution is fast enough, i.e.
   less than one millisecond, then the event time and the execution
   time are the same. This was leading to a missed signal in rare
   cases.

4. AccessibilityNodeInfoCache was not clearing the relevant state
   for accessibility focus clearing event.

5. Accessibility text traversal in TextView was partially using text
   and partially content description - broken. Now we are using the
   text since for text view and content desc for other views. In other
   words, we are using the most precise text we have.

6. AccessibilityManagerService was not granting capabilities of a
   UiAutomation service - plainly wrong.

CTS change:https://googleplex-android-review.googlesource.com/#/c/300693/

bug:8695422
bug:8657560

Change-Id: I9afc5c3c69eb51f1c01930959232f44681b15e86
2013-04-23 17:44:00 -07:00
Chet Haase
5e650cef53 Merge "Expand invalidation rectangle when clipChildren == false" into jb-mr2-dev 2013-04-23 02:50:54 +00:00
Michael Wright
5fe6e4c4c9 Merge "Rewrite input handling for native applications" into jb-mr2-dev 2013-04-23 00:04:44 +00:00
Michael Wright
a44dd26a75 Rewrite input handling for native applications
Bug: 8473020
Change-Id: Ic4353d8924ab877bec21aff8c2dba9fe725bf906
2013-04-22 17:01:51 -07:00
Svetoslav
9fa1ee563b Making new node id APIs return strings.
The node id does not have to be decorated with spans like spannable
so it makes no sense to have these APIs use anything else but string.

bug:8657338

Change-Id: I2e7c31128ee9f2933bd0d58beac4ba31a498bb09
2013-04-22 12:43:07 -07:00
Chet Haase
a4f14ebe29 Expand invalidation rectangle when clipChildren == false
The current invalidation logic does not take into account the clipChildren
flag. When this flag is set to false on a container (an uncommon but
possible case), it is possible for views in the child hierarchy of
the container to be draw outside of the container's bounds. But invalidations
on that view hiearrchy can be clipped to the container's bounds, causing us to
not redraw views outside of those bounds.

Fix is to expand the dirty rect of an invalidation to encompass the complete
bounds of any container with clipChildren==false.

Issue #680037 Some transform combinations can leave old pixel values on the screen

Change-Id: I426beee15d04145fac2f6b4203748ae309e392b4
2013-04-22 11:11:39 -07:00
Chet Haase
339ac85483 Merge "Fix quickReject logic to account for setClipChildren() setting" into jb-mr2-dev 2013-04-20 21:02:21 +00:00
Chet Haase
dd671599be Fix quickReject logic to account for setClipChildren() setting
The rendering code optimizes by rejecting drawing operations that
lie outside of the bounds of their views. This works in most
situations, but breaks down when containers have called
setClipChildren(false), because we reject drawing that is outside
of that container, but which should be drawn anyway.

Fix is to pass in the value of that flag to the DisplayList drawing
routines which take that flag into account when deciding whether
to quickReject any particular operation.

Issue #8659277 animation clipping

Change-Id: Ief568e4db01b533a97b3c5ea5ad777c03c0eea71
2013-04-19 15:36:37 -07:00
Craig Mautner
c1876b256c Merge "Improve javadoc for rotationAnimation." into jb-mr2-dev 2013-04-19 21:30:21 +00:00
Craig Mautner
bdcc9a5811 Improve javadoc for rotationAnimation.
Clarified use of rotationAnimation. Did not add a comment
for ROTATION_ANIMATION_CHANGED as that would be inconsistent
with the other twelve <parameter>_CHANGED flags that it
follows in the source code.

Fixes bug 8657715.

Change-Id: I03b5caf3d6a93ca0044f58485c94c7a600e835a8
2013-04-19 13:08:47 -07:00
Fabrice Di Meglio
2623a24ffa Merge "Fix bug #8654490 android:paddingStart doesn't override android:paddingLeft" into jb-mr2-dev 2013-04-19 17:56:22 +00:00
Ying Wang
4e0eb22fdf Fix doc build.
Change-Id: Ibf0d998721a2851c31529d5b44bf86b1b3df5791
2013-04-18 20:39:48 -07:00
Fabrice Di Meglio
1ae3b6aedd Fix bug #8654490 android:paddingStart doesn't override android:paddingLeft
- in RTL mode only and if you have left/start or right/end at the same time,
the initial left/right padding (coming from the background drawable or from
some explicit definition) was still used.

- now, override the background left/right initial pading by the left/right one
only and only if there is no start/end padding defined at the same time
(because when start/end are defined, we do not care about left/right padding
except the background ones)

Change-Id: Icc6e69c95ace1307b0c5e9673cbdf3b611b62733
2013-04-18 18:23:01 -07:00