8180 Commits

Author SHA1 Message Date
Jeff Brown
d5ea3b4647 Merge "Add initial multi-display support." into jb-mr1-dev 2012-08-29 15:43:55 -07:00
Jeff Brown
bd6e1500ae Add initial multi-display support.
Split the DisplayManager into two parts.  One part is bound
to a Context and takes care of Display compatibility and
caching Display objects on behalf of the Context.  The other
part is global and takes care of communicating with the
DisplayManagerService, handling callbacks, and caching
DisplayInfo objects on behalf of the process.

Implemented support for enumerating Displays and getting
callbacks when displays are added, removed or changed.

Elaborated the roles of DisplayManagerService, DisplayAdapter,
and DisplayDevice.  We now support having multiple display
adapters registered, each of which can register multiple display
devices and configure them dynamically.

Added an OverlayDisplayAdapter which is used to simulate
secondary displays by means of overlay windows.  Different
configurations of overlays can be selected using a new
setting in the Developer Settings panel.  The overlays can
be repositioned and resized by the user for convenience.

At the moment, all displays are mirrors of display 0 and
no display transformations are applied.  This will be improved
in future patches.

Refactored the way that the window manager creates its threads.
The OverlayDisplayAdapter needs to be able to use hardware
acceleration so it must share the same UI thread as the Keyguard
and window manager policy.  We now handle this explicitly as
part of starting up the system server.  This puts us in a
better position to consider how we might want to share (or not
share) Loopers among components.

Overlay displays are disabled when in safe mode or in only-core
mode to reduce the number of dependencies started in these modes.

Change-Id: Ic2a661d5448dde01b095ab150697cb6791d69bb5
2012-08-29 15:34:17 -07:00
Benoit Goby
37ce5c5d5e UsbDebuggingManager: add missing break in switch
Bug: 7079044
Change-Id: Icf4090e79af47db7d068981537c97f2028d8e405
2012-08-29 13:52:17 -07:00
Amith Yamasani
4e2820c22b Fix adding live wallpaper in a second user
When the second user downloads a new wallpaper service, Wallpaper
service needs to query the correct user's package state to figure
out if it is available and bind to it.

Change-Id: Ifb95db1c859887f996f5b2e821b4b46510ee7016
2012-08-28 22:45:17 -07:00
Craig Mautner
c479b55abe Merge "Check proximity detector before powering off." into jb-mr1-dev 2012-08-28 17:16:28 -07:00
Craig Mautner
4ccbdd1770 Check proximity detector before powering off.
Do not automatically power off if the proximity detector wakelock is
active.

Fixes bug 7047455.

Change-Id: I44e30bf388292e5c476dfb5d0de9226d21853e4d
2012-08-28 17:12:52 -07:00
Amith Yamasani
c3815a5679 Merge "Fix PendingIntent caching for multiuser" into jb-mr1-dev 2012-08-28 16:56:19 -07:00
Dianne Hackborn
def8b0f011 Merge "Fix infinite loop when uninstalling apps." into jb-mr1-dev 2012-08-28 16:01:53 -07:00
Dianne Hackborn
377de7b13e Fix infinite loop when uninstalling apps.
Change-Id: Ibdf7fa832529a358d1115fc300651101c5185484
2012-08-28 15:57:33 -07:00
rich cannings
2deaa3698d Merge "Add permission checks for Verification API calls" into jb-mr1-dev 2012-08-28 15:14:26 -07:00
Amith Yamasani
4ea6069323 Fix PendingIntent caching for multiuser
Store the userId in the PendingIntentRecord.Key, so that it doesn't match
an identical pending intent from another user.

Change-Id: Icfc39e0f717c902dc3a60bdf5283a3402bbd2eaa
2012-08-28 14:34:53 -07:00
rich cannings
7e67151b91 Add permission checks for Verification API calls
Ensure that only applications with
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT can call application
verification APIs, like PackageManager.verifyPendingInstall and
PackageManager.extendVerificationTimeout

Bug: 7049083
Change-Id: I5fc28b37e864d67cd319a1ed9d03a90dd15ad052
2012-08-28 14:00:46 -07:00
Irfan Sheriff
da6da0907b Captive portal handling
We now notify the user of a captive portal before switching to the network as default.
This allows background applications to continue to work until the user confirms he
wants to sign in to the captive portal.

Also, moved out captive portal handling out of wifi as a seperate component.

Change-Id: I7c7507481967e33a1afad0b4961688bd192f0d31
2012-08-27 22:27:06 -07:00
Amith Yamasani
10a0df8459 Merge "Relax permission requirement for sending broadcasts to other users" into jb-mr1-dev 2012-08-27 19:33:42 -07:00
Amith Yamasani
8bf06edac2 Relax permission requirement for sending broadcasts to other users
Also handle USER_CURRENT for broadcasts

Change-Id: I2df5616ac22b7c670a7d007b8d505d4d4d99a24e
2012-08-27 19:30:30 -07:00
Jeff Brown
dc7d8008ec Merge "Add plumbing for new surface flinger display API." into jb-mr1-dev 2012-08-27 17:16:53 -07:00
Dianne Hackborn
0e17e5bc43 Merge "Fix installing applications from non-primary users." into jb-mr1-dev 2012-08-27 15:59:56 -07:00
Dianne Hackborn
786b44046a Fix installing applications from non-primary users.
We also now send the correct broadcasts to each user.

You no longer need to be running the shell as root
to be able to create/remove users.

Also added some more man page material to the pm command, and
got rid of a bunch of showUsage() calls that now make error
messages completely buried because of how large the usage info
has become.

And the package manager now shows the user each historical broadcast
was sent to.

Change-Id: Iab42498e1352a0c023069139c80fc04d2d69ab4b
2012-08-27 15:16:33 -07:00
Brian Muramatsu
a97ec810e0 Merge "Remove unused IntentFilter in LocationManager" into jb-mr1-dev 2012-08-27 14:59:11 -07:00
Jeff Brown
64a55af0ac Add plumbing for new surface flinger display API.
Cleaned up the implementation of Surface and SurfaceSession
to use more consistent naming and structure.

Added JNI for all of the new surface flinger display API calls.

Enforced the requirement that all Surfaces created by
the window manager be named.

Updated the display manager service to use the new methods.

Change-Id: I2a658f1bfd0437e1c6f9d22df8d4ffcce7284ca2
2012-08-27 14:34:54 -07:00
Jeff Sharkey
116ee10b95 Merge "Always-on VPN." into jb-mr1-dev 2012-08-27 13:57:58 -07:00
Jeff Sharkey
69ddab4575 Always-on VPN.
Adds support for always-on VPN profiles, also called "lockdown." When
enabled, LockdownVpnTracker manages the netd firewall to prevent
unencrypted traffic from leaving the device. It creates narrow rules
to only allow traffic to the selected VPN server. When an egress
network becomes available, LockdownVpnTracker will try bringing up
the VPN connection, and will reconnect if disconnected.

ConnectivityService augments any NetworkInfo based on the lockdown
VPN status to help apps wait until the VPN is connected.

This feature requires that VPN profiles use an IP address for both
VPN server and DNS. It also blocks non-default APN access when
enabled. Waits for USER_PRESENT after boot to check KeyStore status.

Bug: 5756357
Change-Id: If615f206b1634000d78a8350a17e88bfcac8e0d0
2012-08-27 12:35:05 -07:00
Andy Stadler
be7ddb9f29 Merge "Fix package verifier lookup" into jb-mr1-dev 2012-08-27 12:28:05 -07:00
Amith Yamasani
a84a4af9b1 Merge "Fix adb install" into jb-mr1-dev 2012-08-27 12:24:24 -07:00
Amith Yamasani
2b91465233 Fix adb install
Was not properly handling creating DefContainerService when the installation was
for USER_ALL. Not a problem for Market installs.

Bug: 7061571
Change-Id: I4528b4c56e38effa137da56460e78c55b242ba45
2012-08-27 12:04:40 -07:00
Irfan Sheriff
63dc027be2 Merge "Fix permission issue on channel" into jb-mr1-dev 2012-08-27 11:59:16 -07:00
Craig Mautner
3486b9696d Fix drag bug.
Previous assumption -- that the drag window was defined at time of
DragState construction -- was false. The window, and hence the
Display, is not known until performDrag. This change delays assigning
DragState.mDisplayContent until the window/Display is known.

Fixes bug 7028203.

Change-Id: I5799005652c484ff0c45ab340ce3b9e4b784883e
2012-08-27 11:31:24 -07:00
Jean-Baptiste Queru
af18865486 am ba37d595: am e70a32af: am eb00f951: Merge "VibratorService: Fix to ensure actual delay in a vibrate pattern"
* commit 'ba37d595f70d348987a9e60c56c071fdd319260f':
  VibratorService: Fix to ensure actual delay in a vibrate pattern
2012-08-27 08:16:02 -07:00
Jean-Baptiste Queru
ba37d595f7 am e70a32af: am eb00f951: Merge "VibratorService: Fix to ensure actual delay in a vibrate pattern"
* commit 'e70a32afc5b27ddc9681efd867780a0c4c77edd3':
  VibratorService: Fix to ensure actual delay in a vibrate pattern
2012-08-27 08:13:27 -07:00
Jean-Baptiste Queru
eb00f95143 Merge "VibratorService: Fix to ensure actual delay in a vibrate pattern" 2012-08-27 07:55:41 -07:00
Jeff Brown
d59db50ab0 Merge "Initialize screen state earlier in the boot process." into jb-mr1-dev 2012-08-25 13:46:49 -07:00
Jeff Brown
04a286b955 Merge "Fix GpsLocationProvider wake lock book keeping." into jb-mr1-dev 2012-08-25 13:44:51 -07:00
Jeff Brown
f85ddd6571 Merge "Make it easier to create asynchronous Handlers." into jb-mr1-dev 2012-08-25 13:43:48 -07:00
Jeff Brown
f75724b3d3 Initialize screen state earlier in the boot process.
The system depends on receiving reliable vsync signals from
surface flinger during the boot process.  If it doesn't get them
because the screen is off then a hang may occur.

This isn't a problem when surface flinger manages the screen
blanking itself but it is a problem for devices that still
rely on early-suspend.  When early-suspend is involved, the
screen may be off without surface flinger knowing.  This is a
problem because surface flinger will only synthesize fake
vsyncs when it knows the screen is off, otherwise relying
on the hardware to generate vsync signals itself.  Unfortunately,
the hardware won't generate vsync signals if the screen was
turned off by early-suspend, so we have a problem.

Bug: 6975688
Change-Id: Iaf4527f716bf4ea72cc3e6fdaf060855697b02f2
2012-08-25 13:41:35 -07:00
Jeff Brown
028872fe07 Fix GpsLocationProvider wake lock book keeping.
The GpsLocationProvider typically acquires a wake lock
before sending a message to its handler then releases it
after the message has been handled.

There were two cases where messages might be removed from
the handler, resulting in the wake lock being released.

There were also two cases where background tasks were being
started while not holding a wake lock for the duration.

Fixed these issues and marked the GpsLocationProvider handler
as asynchronous too so that it doesn't accidentally get
blocked by traversals if it happens to share a thread with some UI.

Bug: 7057752
Change-Id: I8e12fc91ae943e84db068c08ec809879537503c6
2012-08-25 13:40:28 -07:00
Jeff Brown
a2910d0abb Make it easier to create asynchronous Handlers.
There are potentially very many Handlers owned by services
that should not be blocked by barriers introduced by UI traversals
occurring on the same thread (if that ever happens).
Add some convenience constructors to make it easy to switch
these Handlers over to being async.

Bug: 7057752
Change-Id: I64d9bffe81e7c52ada4cfad4e89d4340153f4688
2012-08-25 13:40:26 -07:00
Amith Yamasani
080ca09c7f Merge "Bind to the correct default container service when installing/moving/measuring pkgs" into jb-mr1-dev 2012-08-25 07:25:42 -07:00
Amith Yamasani
6ec101288b Bind to the correct default container service when installing/moving/measuring pkgs
Change-Id: I0acfe955b5d57b4985d1922fe3dd841a81c824ed
2012-08-25 07:17:29 -07:00
Dianne Hackborn
ba94170a7a Merge "Some clean up of app install and user management." into jb-mr1-dev 2012-08-24 18:03:56 -07:00
Dianne Hackborn
4428e17c5e Some clean up of app install and user management.
UserManagerService is now closely tied to PackageManagerService,
sharing the same locks.  There is no longer direct access of
Installer by UserManagerService, instead the package manager is
back to solely owning it.

Creating a new user now correctly only installs system apps for
that user.

Fixed some misc bugs, where we were getting nulls when
querying content providers and instrumentation in uninstalled
users, incorrect locking, etc.

Change-Id: Ife69b6e373d0cf7c5cfc03fc588e36b43ad5d8b0
2012-08-24 18:00:37 -07:00
Andy Stadler
250ce28531 Fix package verifier lookup
queryIntentReceivers() needs the resolvedType string to be non-null
in order to find the receiver.

Change-Id: If473d7e08e79940c3e495bc7a9d136e4130599a1
2012-08-24 16:09:03 -07:00
Brian Muramatsu
595dda6d47 Remove unused IntentFilter in LocationManager
This intent filter isn't used anymore, since GpsLocationProvider handles
the CONNECTIVITY_ACTION broadcasts now..

Change-Id: I593a9916aa6f8086b4d684cc3e25286c1cb137cc
2012-08-24 14:54:54 -07:00
Brian Muramatsu
0b23b5f603 Merge "Fix GPS provider thread blocked by NTP and XTRA" into jb-mr1-dev 2012-08-24 14:53:14 -07:00
Kevin Tang
40e1bafc37 Fix GPS provider thread blocked by NTP and XTRA
Currently, the NTP and XTRA downloads block on the GPS provider thread.
This could potentially block the next tasks for over a minute of time.
If the upcoming task happens to be AGPS, AGPS will time out.

Placed the NTP and XTRA downloads in separate threads.

Bug: 6980618

Change-Id: I57a6aaf5348212bc1246813f6d941da7d5b19136
2012-08-24 14:06:47 -07:00
Dianne Hackborn
7767eac323 Keep track of whether an app is installed for each user.
This add a new per-user state for an app, indicating whether
it is installed for that user.

All system apps are always installed for all users (we still
use disable to "uninstall" them).

Now when you call into the package manager to install an app,
it will only install the app for that user unless you supply
a flag saying to install for all users.  Only being installed
for the user is just the normal install state, but all other
users have marked in their state for that app that it is not
installed.

When you call the package manager APIs for information about
apps, uninstalled apps are treated as really being not visible
(somewhat more-so than disabled apps), unless you use the
GET_UNINSTALLED_PACKAGES flag.

If another user calls to install an app that is already installed,
just not for them, then the normal install process takes place
but in addition that user's installed state is toggled on.

The package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,
PACKAGE_REPLACED etc broadcasts to users who don't have a package
installed or not being involved in a change in the install state.
There are a few things that are not quite right with this -- for
example if you go through a full install (with a new apk) of an
app for one user who doesn't have it already installed, you will
still get the PACKAGED_REPLACED messages even though this is
technically the first install for your user.  I'm not sure how
much of an issue this is.

When you call the existing API to uninstall an app, this toggles
the installed state of the app for that user to be off.  Only if
that is the last user user that has the app uinstalled will it
actually be removed from the device.  Again there is a new flag
you can pass in to force the app to be uninstalled for all users.

Also fixed issues with cleaning external storage of apps, which
was not dealing with multiple users.  We now keep track of cleaning
each user for each package.

Change-Id: I00e66452b149defc08c5e0183fa673f532465ed5
2012-08-24 13:53:13 -07:00
Jeff Sharkey
1552586283 Merge "Clean up firewall interface method names." into jb-mr1-dev 2012-08-24 11:46:27 -07:00
Jeff Sharkey
2c0929850a Clean up firewall interface method names.
Change-Id: I653f0a01af7c90fc96b201abb31ea8354b036e74
2012-08-24 11:44:40 -07:00
Jeff Sharkey
34f8631258 Merge "Migrate legacy VPN arguments to system_server." into jb-mr1-dev 2012-08-24 11:33:00 -07:00
Jeff Sharkey
82f8521d38 Migrate legacy VPN arguments to system_server.
Generate the racoon and mtpd daemon arguments in system_server,
instead of accepting them from Settings.

Bug: 5756357
Change-Id: I42c1a644f6add477fe4222342640d7db15982cb8
2012-08-24 11:29:58 -07:00
Jeff Sharkey
96702ad6d7 Merge "Framework interface for netd firewall." into jb-mr1-dev 2012-08-24 11:07:42 -07:00