This change renames the widget-specific API to be more generic
to allow further disabling of keyguard-specific customizations
in the future. Currently only allows disabling widgets and the
secure camera but can now easily be extended to disable other
features we add.
Fixes bug: 7021368
Change-Id: I3934cc2e7c64e0c6d511efb86980fc38a849708d
Activity manager now updates window manager's current user id
directly and immediately rather than waiting for a broadcast
update. Window manager passes this through policy to the
KeyguardViewMediator and into LockPatternUtils. LockPatternUtils
no longer goes to Activity to get the current user id if it finds
that its local id is non-default.
Fixes bug 7193726.
Change-Id: Id5613e7a9fe9e5b49e83c26b74504f587c3998c2
This fixes a bug introduced in I085c5ec8 where keyguard attempts to emulate
slippery windows with views. In order to do so, the code was overloading
dispatchTouchEvent(). It would allow the super (a ViewGroup) to dispatch
the events and then would dispatch them itself to sub views. In the case
where an event overlaps an actual child view, it would result in 2 copies of the event
per window layer (there are 2). This results in 2 events per layer for the
top two views in the hierarchy. So each actual pattern attempt would count as 4
attempts to the system.
The solution is to overload onTouchEvent() at each level in the view hierarchy,
which means that we ignore events that were already handled by a child window
of the parent.
This change also disables slippery windows for keyguard because it causes
vertical patterns to be ignored.
Fixes bug 7191277
Change-Id: I4df217f2bf382134d93113b8d55b0d71e0e23677
Process any pending menu invalidations on the animation tick, before
traversals are performed. Collapse multiple menu invalidations
together.
Bug 7189372
Change-Id: I7a33ae9813980eb8fbcc958804de2c03328ecca8
Bug: 7136483
Store device policy information for each user and apply them when user switches.
Global proxy can only be controlled by owner.
Camera restriction applies to all users, if any one has an admin that disables it.
Storage encryption can only be controlled by owner, although other users can query the state.
Wipe data will only remove the user if non-zero, wipe the device, if zero.
Change-Id: I359be46c1bc3828fd13d4be3228f11495081c8f2
We seem to move carrier text around a lot. Rather than moving the support code,
this creates a smart text field that updates itself.
Change-Id: I9b5b7b22813e944f673a50e952742a1ac38c0e08
If the use deletes the widget by disabling a package or removing it,
we used to show a placeholder widget. Now it skips the widget if it's
not available.
Change-Id: I8582139bf982e41f3f16b5c002e248c5717290aa
This enables the back button on secure keyguard screens so the user can
get back to the initial screen.
Partial fix for bug 7094419
Change-Id: I4dc0ac8facfd2930ccb60710c36015ec1d2c8aa6
-> animating active user to inactive, fading out lock
selector, freezing screen, then switching users
-> for now, just using a fade, but this will likely
see iteration
Change-Id: I3acc0b53f2cbf132741e3e0529e2e53fa2824542
- New public APIs to find out when a user goes to the foreground,
background, and is first initializing.
- New activity manager callback to be involved in the user switch
process, allowing other services to let it know when it is safe
to stop freezing the screen.
- Wallpaper service now implements this to handle its user switch,
telling the activity manager when it is done. (Currently this is
only handling the old wallpaper going away, we need a little more
work to correctly wait for the new wallpaper to get added.)
- Lock screen now implements the callback to do its user switch. It
also now locks itself when this happens, instead of relying on
some other entity making sure it is locked.
- Pre-boot broadcasts now go to all users.
- WallpaperManager now has an API to find out if a named wallpaper is
in use by any users.
Change-Id: I27877aef1d82126c0a1428c3d1861619ee5f8653
This fixes an issue where the attempt count was incorrect. We now show the
dialog *after* reporting the failed attempt.
This also fixes an issue where the text wasn't being reset in the password dialog
of keyguard.
Fixes bugs 7170545 and 7120895
Change-Id: Iba2009705373758acca6e10bd670eb34744bece9
Bug: 7152537
Not all instances of LockPatternUtils are getting updated with the current user, so
query it directly from the Activity Manager.
Change-Id: I46395c3e00feecd0edfe4228f8d7966f425519f2
- fix overscroll issue with workaround described in bug 7137941
- ignore noisy signals from music player that sometimes hide it
Change-Id: I6a25674ce7157bd70409f56881ec62644f5fce9b
- View is now added or removed based on AudioManager status
- Reduced depth of hierarchy by making KeyguardTransportControl a KeyguardWidgetFrame
- Return to the status view when we return to keyguard (onScreenTurnedOn)
Change-Id: Id7f9310ce4e7daf663471117564e5670f61b1471
This is an attempt to fix bug 7137389. It forces a layout when the screen
comes back on, which should alleviate the issue.
Change-Id: I00a3829f1662a8db99d947856ca11660b4bfb805
Otherwise there would be no way to switch users if a user chooses None as lock screen.
Also adjust some layout params for Preference items to align the icons and text.
Change-Id: Ib11bb961edaef90de280bc7137d10b68765aea98
Quick Settings and global actions (aka longpress-Power) toggles are
included in this CL. The Settings app manipulations are updated in
a different CL because that's a different git package.
Bug 7132230
Change-Id: I50838f5e8d7b25a750d2bcae90bf384b09816dbb
This effectively makes the pattern view slippery, which enables the
user to start their pattern outside the view and cross the view.
Fixes bug 7118762
Change-Id: I085c5ec8f7ccd2fc37a10606a8925078dc44be13
This change removes all but the default KeyguardSelectorView from KeyguardViewHost
to (1) reduce the overall memory footprint (2) reduce initial layout inflation
time and (3) avoid initializing the camera until needed by face unlock.
Fixes bug 7127666
Change-Id: Ibac1838dd7a490dcadbfab5bdfdd82734b69055a
Originally this was done for aesthetics when we had a physical keyboard on
devices. The code also used to hide the PIN keyboard when a BT keyboard is
attached.
We now always show the keyboard, even when a physical keyboard is present.
Change-Id: I8e1f3af200071382bfe267c28d92062758ebb790
- New (hidden) isUserRunning() API.
- Maintain LRU list of visited users.
- New FLAG_IS_DATA_ONLY for ApplicationInfo.
- Clean up pending intent records when force-stopping a user (or package).
(Also fixes bug #6880627: PendingIntent.getService() returns stale
intent of force stopped app)
- Fix force-stopping when installing an app to do the force-stop across
all users for that app.
- When selecting which processes to kill during a force stop, do this
based on the actual packages loaded in the process, not just process
name matching.
- You can now use --user option in am when starting activities, services,
and instrumentation.
- The am --user option accepts "current" and "all" as arguments.
- The pm uninstall command now uninstalls for all users, so it matches
the semantics of the install command.
- PhoneWindowManager now explicitly says to start home in the current
user.
- Activity manager call to retrieve the MIME type from a content provider
now takes a user argument, so it will direct this to the proper user.
- The package manager uninstall paths are now implemented around
PackageSetting, not PackageParser.Package. This allows them to work
even if the application's apk has been removed (in which case it only
exists as a PackageSetting, not the PackageParser.Package parsed from
the apk).
Change-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40
Camera started from the secure lock screen does not
show all the pictures in the camera roll. If users
launch camera from recent apps, they may enter secure
camera mode accidentally. Pass EXCLUDE_FROM_RECENTS
flag to prevent this.
bug:7053266
Change-Id: I0ad526d919dac02f358b25493777d7d73da6987f
This change is the initial check in of the screen magnification
feature. This feature enables magnification of the screen via
global gestures (assuming it has been enabled from settings)
to allow a low vision user to efficiently use an Android device.
Interaction model:
1. Triple tap toggles permanent screen magnification which is magnifying
the area around the location of the triple tap. One can think of the
location of the triple tap as the center of the magnified viewport.
For example, a triple tap when not magnified would magnify the screen
and leave it in a magnified state. A triple tapping when magnified would
clear magnification and leave the screen in a not magnified state.
2. Triple tap and hold would magnify the screen if not magnified and enable
viewport dragging mode until the finger goes up. One can think of this
mode as a way to move the magnified viewport since the area around the
moving finger will be magnified to fit the screen. For example, if the
screen was not magnified and the user triple taps and holds the screen
would magnify and the viewport will follow the user's finger. When the
finger goes up the screen will clear zoom out. If the same user interaction
is performed when the screen is magnified, the viewport movement will
be the same but when the finger goes up the screen will stay magnified.
In other words, the initial magnified state is sticky.
3. Pinching with any number of additional fingers when viewport dragging
is enabled, i.e. the user triple tapped and holds, would adjust the
magnification scale which will become the current default magnification
scale. The next time the user magnifies the same magnification scale
would be used.
4. When in a permanent magnified state the user can use two or more fingers
to pan the viewport. Note that in this mode the content is panned as
opposed to the viewport dragging mode in which the viewport is moved.
5. When in a permanent magnified state the user can use three or more
fingers to change the magnification scale which will become the current
default magnification scale. The next time the user magnifies the same
magnification scale would be used.
6. The magnification scale will be persisted in settings and in the cloud.
Note: Since two fingers are used to pan the content in a permanently magnified
state no other two finger gestures in touch exploration or applications
will work unless the uses zooms out to normal state where all gestures
works as expected. This is an intentional tradeoff to allow efficient
panning since in a permanently magnified state this would be the dominant
action to be performed.
Design:
1. The window manager exposes APIs for setting accessibility transformation
which is a scale and offsets for X and Y axis. The window manager queries
the window policy for which windows will not be magnified. For example,
the IME windows and the navigation bar are not magnified including windows
that are attached to them.
2. The accessibility features such a screen magnification and touch
exploration are now impemented as a sequence of transformations on the
event stream. The accessibility manager service may request each
of these features or both. The behavior of the features is not changed
based on the fact that another one is enabled.
3. The screen magnifier keeps a viewport of the content that is magnified
which is surrounded by a glow in a magnified state. Interactions outside
of the viewport are delegated directly to the application without
interpretation. For example, a triple tap on the letter 'a' of the IME
would type three letters instead of toggling magnified state. The viewport
is updated on screen rotation and on window transitions. For example,
when the IME pops up the viewport shrinks.
4. The glow around the viewport is implemented as a special type of window
that does not take input focus, cannot be touched, is laid out in the
screen coordiates with width and height matching these of the screen.
When the magnified region changes the root view of the window draws the
hightlight but the size of the window does not change - unless a rotation
happens. All changes in the viewport size or showing or hiding it are
animated.
5. The viewport is encapsulated in a class that knows how to show,
hide, and resize the viewport - potentially animating that.
This class uses the new animation framework for animations.
6. The magnification is handled by a magnification controller that
keeps track of the current trnasformation to be applied to the screen
content and the desired such. If these two are not the same it is
responsibility of the magnification controller to reconcile them by
potentially animating the transition from one to the other.
7. A dipslay content observer wathces for winodw transitions, screen
rotations, and when a rectange on the screen has been reqeusted. This
class is responsible for handling interesting state changes such
as changing the viewport bounds on IME pop up or screen rotation,
panning the content to make a requested rectangle visible on the
screen, etc.
8. To implement viewport updates the window manger was updated with APIs
to watch for window transitions and when a rectangle has been requested
on the screen. These APIs are protected by a signature level permission.
Also a parcelable and poolable window info class has been added with
APIs for getting the window info given the window token. This enables
getting some useful information about a window. There APIs are also
signature protected.
bug:6795382
Change-Id: Iec93da8bf6376beebbd4f5167ab7723dc7d9bd00