Commit Graph

2711 Commits

Author SHA1 Message Date
Svetoslav Ganov
6da9677f49 Merge "Views with zero alpha are shown for accessibility." 2012-04-17 19:29:42 -07:00
Svetoslav Ganov
b3830f6737 Views with zero alpha are shown for accessibility.
1. Views that a user cannot see should not be reported for
   accessibility. The check for zero alpha was missing.

bug:6291855

Change-Id: I3cb4c19cccf0dc2427677df630d124c36bd4770b
2012-04-17 19:27:38 -07:00
John Reck
06fd472390 Merge "Fix a bug with enterTouchMode removing focus" 2012-04-17 15:37:48 -07:00
John Reck
09dd116cd3 Fix a bug with enterTouchMode removing focus
Bug: 6347083
 Fix an issue where enterTouchMode would remove focus from the
 view that already has focus and is focusableInTouchMode. This
 causes issues with WebView, as it updates internal state when
 losing and gaining focus.

Change-Id: I5c1f72cc08baf3445e2be9e0496606a53fb9929e
2012-04-17 14:29:05 -07:00
Chet Haase
7dd4a536a1 Adding new CHANGING transition to LayoutTransition.
LayoutTransition used to depend on child views being added/removed or
shown/hidden in the transition container. These evens would trigger animations
to fade the child view as well as those to animate the side-affected changes
to sibling views. This CL enables a new feature in LayoutTransition that
enables animating any changes to the layout of the children in the container
whenever a layout occurs. For example, you can change the LayoutParams of a
child view and call requestLayout() to automatically animate those changes.

This capability is not enabled by default. To enable, call the new
LayoutTransition.enableTransitionType(LayoutTransition.CHANGING) method.

Change-Id: I4d07a3b36245353b2151f0dca4f75080ab6a4592
2012-04-17 13:33:55 -07:00
satok
fbf7e1f343 Merge "Get rid of "isSentenceLevelSpellCheckSupported"" 2012-04-16 22:07:45 -07:00
Svetoslav Ganov
21d1251637 Merge "Fixing broken add focusables behavior I have introduced." 2012-04-16 19:15:27 -07:00
Svetoslav Ganov
3cb889caa3 Fixing broken add focusables behavior I have introduced.
bug:6344608

Change-Id: I1d241c02bc22c5ef3f4b4b69a756772e8b2ef902
2012-04-16 19:14:41 -07:00
Dianne Hackborn
ac76e72272 Merge "Add new scale-up window manager animation." 2012-04-16 17:34:25 -07:00
Dianne Hackborn
eabfb3a36e Add new scale-up window manager animation.
Like zoom thumbnail, but without the thumbnail.

Change-Id: I9486dd204398b87c9e70ff0d05d03f4a22449cd6
2012-04-16 17:32:50 -07:00
Philip Milne
455cfc8dca Merge "Minor doc fix." 2012-04-16 16:28:16 -07:00
Philip Milne
fcc6a0f145 Minor doc fix.
Change-Id: I8f20c4751b599e0108c9373caef7e672d1cd4821
2012-04-16 16:12:19 -07:00
Jamie Gennis
d1661dcc90 Merge "Unhide new SurfaceTexture & TextureView APIs" 2012-04-16 13:21:53 -07:00
Philip Milne
a5d552fc2b Fix for doc error.
Change-Id: I8aa029d96d4cd28354ecc742007e0fc35b05b705
2012-04-16 10:47:21 -07:00
Philip Milne
4e1cb3b794 Merge "Fix for bug 6110465." 2012-04-16 10:03:17 -07:00
satok
c7ee1b9369 Get rid of "isSentenceLevelSpellCheckSupported"
Bug: 6320351
Change-Id: I0e931b7248f8c65268b60af599c07432d58d2f1f
2012-04-16 20:02:37 +09:00
Svetoslav Ganov
4213804541 Accessibility focus - framework
Usefulness: Keep track of the current user location in the screen when
            traversing the it. Enabling structural and directional
            navigation over all elements on the screen. This enables
            blind users that know the application layout to efficiently
            locate desired elements as opposed to try touch exploring the
            region where the the element should be - very tedious.

Rationale: There are two ways to implement accessibility focus One is
           to let accessibility services keep track of it since they
           have access to the screen content, and another to let the view
           hierarchy keep track of it. While the first approach would
           require almost no work on our part it poses several challenges
           which make it a sub-optimal choice. Having the accessibility focus
           in the accessibility service would require that service to scrape
           the window content every time it changes to sync the view tree
           state and the accessibility focus location. Pretty much the service
           will have to keep an off screen model of the screen content. This
           could be quite challenging to get right and would incur performance
           cost for the multiple IPCs to repeatedly fetch the screen content.
           Further, keeping virtual accessibility focus (i.e. in the service)
           would require sync of the input and accessibility focus. This could
           be challenging to implement right as well. Also, having an unlimited
           number of accessibility services we cannot guarantee that they will
           have a proper implementation, if any, to allow users to perform structural
           navigation of the screen content. Assuming two accessibility
           services implement structural navigation via accessibility focus,
           there is not guarantee that they will behave similarly by default,
           i.e. provide some standard way to navigate the screen content.
           Also feedback from experienced accessibility researchers, specifically
           T.V Raman, provides evidence that having virtual accessibility focus
           creates many issues and it is very hard to get right.
           Therefore, keeping accessibility focus in the system will avoid
           keeping an off-screen model in accessibility services, it will always
           be in sync with the state of the view hierarchy and the input focus.
           Also this will allow having a default behavior for traversing the
           screen via this accessibility focus that is consistent in all
           accessibility services. We provide accessibility services with APIs to
           override this behavior but all of them will perform screen traversal
           in a consistent way by default.

Behavior:  If accessibility is enabled the accessibility focus is the leading one
           and the input follows it. Putting accessibility focus on a view moves
           the input focus there. Clearing the accessibility focus of a view, clears
           the input focus of this view. If accessibility focus is on a view that
           cannot take input focus, then no other view should have input focus.
           In accessibility mode we initially give accessibility focus to the topmost
           view and no view has input focus. This ensures consistent behavior accross
           all apps. Note that accessibility focus can move hierarchically in the
           view tree and having it at the root is better than putting it where the
           input focus would be - at the first input focusable which could be at
           an arbitrary depth in the view tree. By default not all views are reported
           for accessibility, only the important ones. A view may be explicitly labeled
           as important or not for accessibility, or the system determines which one
           is such - default. Important views for accessibility are all views that are
           not dumb layout managers used only to arrange their chidren. Since the same
           content arrangement can be obtained via different combintation of layout
           managers, such managers cannot be used to reliably determine the application
           structure. For example, a user should see a list as a list view with several
           list items and each list item as a text view and a button as opposed to seeing
           all the layout managers used to arrange the list item's content.
           By default only important for accessibility views are regared for accessibility
           purposes. View not regarded for accessibility neither fire accessibility events,
           nor are reported being on the screen. An accessibility service may request the
           system to regard all views. If the target SDK of an accessibility services is
           less than JellyBean, then all views are regarded for accessibility.
           Note that an accessibility service that requires all view to be ragarded for
           accessibility may put accessibility focus on any view. Hence, it may implement
           any navigational paradigm if desired. Especially considering the fact that
           the system is detecting some standard gestures and delegates their processing
           to an accessibility service. The default implementation of an accessibility
           services performs the defualt navigation.

bug:5932640
bug:5605641

Change-Id: Ieac461d480579d706a847b9325720cb254736ebe
2012-04-13 19:05:24 -07:00
Jamie Gennis
33efb231cb Unhide new SurfaceTexture & TextureView APIs
This change unhides the new SurfaceTexture and TextureView APIs that were added
to allow transferring ownership of the SurfaceTexture from the UI framework to
the application.

Change-Id: Ic4b781d907a59e99ff1a5974009305c1f9aee36a
2012-04-13 18:33:38 -07:00
Jeff Brown
90aba7caac Merge "Add support for input devices that have vibrators." 2012-04-13 17:34:20 -07:00
Jeff Brown
75e0dcbca1 Merge "Extract Vibrator implementation from interface." 2012-04-13 17:03:05 -07:00
Jeff Brown
a47425a13c Add support for input devices that have vibrators.
Added a getVibrator() method to InputDevice which returns a Vibrator
associated with that input device.  Its uses the same API as the
system vibrator which makes it easy for applications to be modified
to use one or the other.

Bug: 6334179
Change-Id: Ifc7f13dbcb778670f3f1c07ccc562334e6109d2e
2012-04-13 17:01:15 -07:00
Philip Milne
1557fd7809 Fix for bug 6110465.
Add layout bound metadata to 9-patch files and make layouts take them into account.

This CL contains a proposed API for dealing with layout bounds.

This solution exposes:

1. Class: Insets - for storing layout Insets (and later possibly padding).
2. Methods: View:(get/set)LayoutInsets() - for storing layoutBounds.
3. Methods: ViewGroup:(get/set)LayoutMode() - for controlling layoutMode.

It also iuncudes the changes to GridLayout to support layout bounds.

Change-Id: I60c836b6530b61c5abf37f93ee9c44aad73573f1
2012-04-13 16:25:08 -07:00
Svetoslav Ganov
8431f89827 Merge "Accessibility query APIs report invisible views." 2012-04-13 12:07:09 -07:00
Svetoslav Ganov
067b091d46 Accessibility query APIs report invisible views.
1. The accessibility querying APIs failed to check whether
   all predecessors of a view are visible before reporting it.

bug:6291855

Change-Id: I364a6f08e8d02c7105c00c9fdff0fec033829554
2012-04-13 12:05:55 -07:00
Jeff Brown
c2346134bb Extract Vibrator implementation from interface.
Moved the core logic of Vibrator into SystemVibrator, potentially
allowing for the creation of other Vibrator subclasses.

Fixed several places where we were creating new Vibrator
instances unnecessarily instead of getting it from the Context.

It is safe to make Vibrator abstract because its constructor
was hidden from the SDK so it was not possible to subclass it.

Bug: 6334179
Change-Id: I18ece6544c26a7efb2d5099f8346a10aef8a5e18
2012-04-13 04:05:17 -07:00
Jeff Brown
882735972e Merge "Notify applications when input devices change." 2012-04-12 18:55:57 -07:00
Jeff Brown
af9e8d3818 Notify applications when input devices change.
This change allows the InputManager to keep track of what input
devices are registered with the system and when they change.
It needs to do this so that it can properly clear its cache of
input device properties (especially the key map!) when changes
occur.

Added new API so that applications can register listeners for
input device changes.

Fixed a minor bug in EventHub where it didn't handle EPOLLHUP
properly so it would spam the log about unsupposed epoll events
until inotify noticed that the device was gone and removed it.

Change-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3
2012-04-12 18:54:54 -07:00
Romain Guy
41ffd86df1 Merge "Don't update TextureView's surface if the Layer doesn't exist" 2012-04-12 16:58:47 -07:00
Romain Guy
a8a2f97c10 Don't update TextureView's surface if the Layer doesn't exist
Change-Id: Ifcc1a7a271f6c236a3aebd3726b7025348e64920
2012-04-12 16:33:44 -07:00
Dianne Hackborn
0c2acffec8 Clean up lock screen hide animation.
We now have an animation to apply to the thing behind the lock
screen animation when it isn't on the wallpaper, which looks
similar to the animation we use when both are on the wallpaper.

In implementing this, cleaned up the code to figure out up-front
which animation to run, getting rid of that kludgy thing that
cleared the window animation if the wallpaper was not being used
for the lower windows.

Change-Id: Ifc4c8a8894ad384124dcf4bbdaab134f1157b0f3
2012-04-12 15:26:11 -07:00
Svetoslav Ganov
95487eb90c Merge "Some view not shown on the screen are reported for accessibility." 2012-04-12 12:54:25 -07:00
Svetoslav Ganov
aa6f3de253 Some view not shown on the screen are reported for accessibility.
1. Some applications are keeping around visible views off screen
   to improve responsiveness by drawing them in layers, etc. While
   such a view is not visible on the screen the accessibility layer
   was reporting it since it was visible. Now the check is improved
   to verify whether the view is attached, is in visible window,
   is visible, and has a rectangle that is not clipped by its
   predecessors.

2. AccessibilityNodeInfo bounds in screen were not properly set
   since only the top left point was offset appropriately to
   take into account any predecessor's transformation matrix
   and the not transformed width and height were used. Now
   the bounds are properly offset.

bug:6291855

Change-Id: I244d1d9af81391676c1c9e0fe86cf4574ff37225
2012-04-12 12:51:27 -07:00
Romain Guy
decd3039ca Merge "Don't wait for screen on to finish animations" 2012-04-12 11:35:58 -07:00
Romain Guy
eb37889071 Don't wait for screen on to finish animations
OldAnimations™ would set their start time during the first frame drawn
after calling View.startAnimation(). If this method was invoked while
the screen was off, this would cause the animation to start playing
when the screen turned back on.

Change-Id: Ic45a1af2020a7f5e81c2544bd8f16a6bedbd6849
2012-04-12 11:33:14 -07:00
Romain Guy
f1352d87ea Merge "Fix SurfaceTexture leak in TextureView Bug #6318631" 2012-04-11 18:19:10 -07:00
Romain Guy
1ac4765e95 Fix SurfaceTexture leak in TextureView
Bug #6318631

Change-Id: I282a7c9bb648365ba61c52a84ff510c8779130ef
2012-04-11 18:15:20 -07:00
John Reck
c2676102d2 Merge "New WebView input dispatcher." 2012-04-11 16:03:46 -07:00
Adam Powell
db13a6bf78 Merge "Invalidate for scrolling animations on the animation timer" 2012-04-11 15:22:37 -07:00
Jeff Brown
9d3bdbd6b8 New WebView input dispatcher.
Bug: 6317798

Stuff that's better:

1. We maintain two queues in a way that ensures that WebView and
WebKit both see consistent streams of events, even in cases
where WebKit times out.  We send ACTION_CANCEL if necessary, etc.

2. All pointer events go through the same channel, including
hover and click ("touch up") events, to ensure correct ordering.

3. Given that the input events are in a separate queue, we can
force execution of all of these events whenever we like, making new
latency optimizations possible.

4. The entire history of each touch event is sent to the web
application to enable smoother interaction.

5. The web application may choose to intercept a touch event stream
at any time by issuing "prevent default".  Previously, it could only
prevent default on the initial down event.  The new behavior is more
standards compliant.

Change-Id: I42d2d045e7d44af7c54b29570f188b7400d91d4e
2012-04-11 15:10:24 -07:00
Jeff Brown
4d6a82d79e Unhide new animation runnable API on View.
Change-Id: Id626688d6c7d632c01d9897777c854cb601d3301
2012-04-11 14:23:51 -07:00
Adam Powell
df3ae4f3ae Invalidate for scrolling animations on the animation timer
Change View methods awakenScrollBars and scrollTo to post their
invalidation on the animation timer. Since these are often used in
computeScroll or similar to continue scrolling or flinging it should
not prevent other posted events from being processed before the frame
is actually drawn. (All changes in scroll position, etc. are
immediately reflected after the calls and do not need a draw to
present correct data about scroll position to apps.)

Don't accumulate floating point error while dragging
ScrollView/HorizontalScrollView.

Change-Id: I05b57d75f89a806488e46a8fb79b85d80f56d45d
2012-04-11 13:01:24 -07:00
Jeff Brown
9f25b7fdf2 Request key maps from input manager service.
Instead of each application loading the KeyCharacterMap from
the file system, get them from the input manager service as
part of the InputDevice object.

Refactored InputManager to be a proper singleton instead of
having a bunch of static methods.

InputManager now maintains a cache of all InputDevice objects
that it has loaded.  Currently we never invalidate the cache
which can cause InputDevice to return stale motion ranges if
the device is reconfigured.  This will be fixed in a future change.

Added a fake InputDevice with ID -1 to represent the virtual keyboard.

Change-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7
2012-04-10 18:23:58 -07:00
Dianne Hackborn
162bc0ea0d Some small tweaks to improve memory management.
We now allow processes that currently have stopping activities to
be managed as if they were done stopping, so that memory trimming
can be done before the process goes to the background.  Hopefully
this will reduce cases where the processes goes to the background
and immediately gets killed, but wouldn't have had to be killed if
it had a chance to trim its memory.

Also change window memory trimming to always do the aggressive
trimming when memory is critical, even if not on a low-end device.

And tweak web view trimming to not trim for foreground UI events.

Change-Id: I241b3152b52d09757bd14a202477cf69c9b78786
2012-04-10 14:43:58 -07:00
Daniel Sandler
c38cf4c7db Merge "New Android Dreams architecture, disabled for now." 2012-04-10 05:33:07 -07:00
Jesse Hall
3da2dc9d4c Merge "Release the scratch pbuffer surface after use" 2012-04-09 22:41:04 -07:00
Daniel Sandler
7d276c377c New Android Dreams architecture, disabled for now.
Rather than normal Activities (which have a host of problems
when used for this purpose), screen savers are now a
special kind of Service that can add views to its own
special window (TYPE_DREAM, in the SCREENSAVER layer).

Dreams are now launched by the power manager; whenever it is
about to turn the screen off, it asks the window manager if
it wants to run a screen saver instead. (http://b/5677408)

Also, the new config_enableDreams bool allows the entire
feature to be switched on or off in one place. It is
currently switched off (and the APIs are all @hidden).

Change-Id: Idfe9d430568471d15f4b463cb70586a899a331f7
2012-04-09 15:33:26 -04:00
Jeff Brown
69bba1dfb7 Merge "Add a unique input device descriptor." 2012-04-06 15:04:53 -07:00
Jeff Brown
e38fdfae91 Add a unique input device descriptor.
The purpose of the input device descriptor is to make it possible
to associate persistent settings for each input device, such as the
keyboard layout.

The descriptor is a hash of the information we have about the
device, such as its vendor id, product id, unique id, name,
or location.

Bug: 6110399
Change-Id: Idb80f946819b3f0dbf4e661bb0a753dbc2b60981
2012-04-06 14:57:19 -07:00
Chris Craik
3d4d2159bc Merge "fix functor flag parsing, tweak process delay" 2012-04-06 12:51:36 -07:00
Jamie Gennis
335a6625b6 Merge changes Iac9cc917,I8eed4b0d
* changes:
  TextureView: add setSurfaceTexture method
  SurfaceTexture: add GL context attach & detach
2012-04-06 09:06:28 -07:00