This change adds notification to find out when the device policy
has changed. When an admin adds or changes a policy, we get notified
and reset the state of keyguard to be enabled.
It also moves disabling keyguard into the TokenWatcher.acquired()
method to avoid disabling keyguard when a policy doesn't permit it.
This avoids reference counting issues in TokenWatcher and hence relieves
the ordering issue.
There is one remaining caveat. An application that uses KeyguardManager
to disable keyguard will need to disable keyguard again after any
policy change.
Tested:
Install and run app that disables keyguard with no admin. Result: keyguard is enabled/disabled as expected.
Enable admin and set quality = "something" after installing & running app. Result: keyguard is enabled.
Change admin password quality to "unspecified" and re-run app (per caveat). Result: keyguard is disabled.
Change admin password quality to "something" again. Result: keyguard is enabled.
Disable admin : Result: keyguard is enabled until app runs again (per caveat).
Added minor cosmetic changes after review.
Change-Id: I302f2b01446bf031f746b0f3e8b5fd7a6cc0e648
This fix disables KeyguardManager's enable/disable API when any
device policy admin requests a policy that enforces a password.
Change-Id: Idb1da16b14ed8963142f7b1f62d2b060d84ffa65
The preboot upgrade handling was bringing up the acore process with a default
application object, then the normal "start the HOME app" code was bringing up
Launcher2 [hosted in acore] in anticipation of boot completion... but then it
saw that the host process was alive and continued with Launcher2's init.
Launcher2 depends on a custom application object, however, so it crashed
immediately.
This change ensures that the HOME app is not actually initted at that level
until after boot has completed, at which point its proper application class
can be instantiated.
Fixes bug #2732250
Change-Id: I1a15384e2c0d50e14300df0c0db236bd7b1a187c
The kernel threads are appended to the usual /data/anr/traces.txt file
and dropboxed along with the usual Dalvik stack dumps.
Change-Id: I120f1f5ee54c965efe9ac0c7f40fdef56385f1fa
NOTE: this change depends on the kernel publishing /proc/$PID/stack
Rather than come out of the user-modifiable APN DB, the DUN APN data will
come first from a built-in resource and then potentially overriden by a secure
setting (which is gservices upgradable).
Also made the "require-dun" setting secure-setting overridable.
bug:2736390
Change-Id: I1e4644c3839f06c977b83797641f3948785146a2
This gives us a snapshot of what the system process was doing after 30 seconds
of apparent inactivity as well as after 1 minute, to help distinguishing actual
deadlocks from too-slow progress, livelock, etc.
Change-Id: I19758861d1b25f298e88788e8f1c7ec7bf828823
They're designed to handle one time upgrade code, which may
take a significant amount of time. Third party code cannot
receive this broadcast so the timing should be able to be
kept under control.
Bug: 2713849
Change-Id: I3733b6530198bebd9b8c2ba6f9f27a7999336b8d
Initialize the cache path only if the container exists.
This did exist before but was somehow removed.
Fix a known test failure as well.
Change-Id: I63219369b0e7abca4919fbde2a04035a0fea9e35
This is to avoid flashlight apps that had been using reflection to access
this API after this class was removed after eclair.
Change-Id: I26ed929abad93345468eb33d4a15977a31ebea7e
Signed-off-by: Mike Lockwood <lockwood@android.com>
Fixes a problem with Network Location not working after SetupWizard until the
network state changes.
Change-Id: Ief81b76beb5cc90b2ca7d8aa2d4c99221898f01d
BUG: 2671347
Signed-off-by: Mike Lockwood <lockwood@android.com>
When the user selects a "Silent" notification sound, the Uri encoded
path is an empty string. Setting this Uri as the data source of the
MediaPlayer used to play notifications caused the completion listener
to not be called, which with the AudioFocus logic causes the Music
app to pause and never resume. The NotificationPlayer modifications
cause the MediaPlayer for the notification to only request audio
focus when the data source is not empty.
The audio focus code in AudioService is defensively synchronized
against a unique lock, and the exception observed in bug 2670395
is explicitely caught in case another edge case wasn't caught by
this fix.
The AudioFocus handling in AudioManager is modified so only the
requestAudioFocus and abandonAudioFocus methods are meant to be
used, as registerAudioFocusListener and unregisterAudioFocusListener
provided no additional functionality over the request/abandon
methods. abandonAudioFocus() also removes the listener from the
map in AudioManager since after abandonning focus, the listener
would no longer be called.
Change-Id: I3b553ee8a8163c25e01117d7e5479dd5fdfa7c6b
It looks like there was a subtle bug where Process.setOomAdj() could
return false just because the given process doesn't exist, even though
it is documented to only return false if OOM killing is not supported
at all. This would cause the activity manager to fall into its code
path of trying to clean up processes itself, which it does a much
poorer problem at. I am thinking we may be seeing this problem more
now that the activity manager is killing background processes itself
when there are too many of them.
In addition, this change cleans up and reduces some of the logging
around killing processes.
Finally, try to improve process LRU management a bit by taking
into account process dependencies. Any dependent processes are
pulled up in the LRU list with the processes that is actually
moving. Also, we bring a process up if someone accesses its content
provider.
Change-Id: I34ea161f839679345578ffe681e8d9c5d26ab948
When we switch to another network (or even just lose mobile data) the mobile
interface is either brought down or destroyed altogether. That means any
throttling rules we've told the kernel about get lost.
This change notices when our interface comes up and reinstates throttling
if needed.
bug:2660287
Change-Id: I4c6ebf78acc59ed66b95984a1e8b7c2ffbc22dcb
With the .apk file names now changing during an update, we need
to make sure to flush all caches related to a package when the
package is removed. Otherwise we can continue to use the old
package, since its old file may still exist if we try to load it
too soon.
Change-Id: I15f08dffca3feac999dbca4f24bef12a30ca0a66
The SimpleDateFormat was being cached and new timezone not being applied. Make sure
to apply the new timezone to the format object as soon as it changes.
Change-Id: I72abfef2e14cf5db5a6e8cb71b053380b695495c
The Looper on the thread created in order to be notified of the
playback completion of notification sounds, was never stopped, causing
the threads to stay around in wait state.
The fix consists in quitting the Looper used for the previous sound
when a new sound is started.
Change-Id: Ia4b3d16b5447ffafacc093db3a7fe05574089935
The start and end times were precisely the same so, a ">" check needed to be ">=".
Also removed useless code and removed the potential problem where continuous gradual
advancement of your start and end times would prevent resets.
bug:2629717
Change-Id: Ieced1965a5611a9b555e92bcf924ec350f2a80db
We were updating limits and such before, but we were not applying them
to the current situation if we were already throttled. Now it can result in
us throttling or changing our throttle rate or unthrottling or even making
the ui come or go (disabling/enable throttling)
bug:2622543
bug:2619879
Change-Id: I64a62634d54f4768ab8625f8d72f9f66a239cb19