23436 Commits

Author SHA1 Message Date
Olawale Ogunwale
baedbfbbb1 Merge "[ProcessStas] fix index out of bounds when add duration." 2015-04-06 15:23:30 +00:00
Olawale Ogunwale
1d359daa60 Merge "Remove the window whose client process has died or become zombie" 2015-04-04 16:12:40 +00:00
Fyodor Kupolov
3d8b7f4d50 Merge "Support for storing OAT files in app directory" 2015-04-02 23:11:11 +00:00
Olawale Ogunwale
e4d4e22f26 Merge "[ActivityManager] Avoid improper resume top activity." 2015-04-02 16:39:18 +00:00
riddle_hsu
558e849a77 [ActivityManager] Avoid improper resume top activity.
When there is a process died, only resume top if
it contains visible activity.

This can fix case 1 in
https://android-review.googlesource.com/#/c/120901/

Change-Id: I45584e76f9e863980d04bbb593d7d26a8900acd0
2015-04-02 16:43:13 +08:00
tiger_huang
950ee77fc7 Remove the window whose client process has died or become zombie
Window Manager Service would fail to report window-resized to the
process which has become zombie. This would cause the window to
freeze screen continuously. In this case, we assume the process has
died and remove its window to recycle resources and to prevent it from
freezing the screen.

Change-Id: Ic7384731bf9a1fa8b9602d4f1dbee7492db126c5
2015-04-02 06:42:18 +00:00
Ronnie Leng
4c5c6f43dd [ProcessStas] fix index out of bounds when add duration.
Root Cause:
There is a defect in current ProcessStats design
and following is the scenario:
1. Process A is started due to activity with
name of A
2. Process A creates ProessState with application
uid of A
3. Process B is started due to isolated service
declared in application A with name of A
4. Process B uses ProcessState of Process A as
it uses same application uid of A
5. Process B is finished and it leads to
ProcessState marked as dead
6. Process A still keeps using the invalid
ProcessState in dead state
7. IndexOutOfBoundsException is triggered when
system tries to update process state of Process A

Resolution:
use process uid to replace application uid for
getProcessStatLocked.

Change-Id: I881ad9fc492c9e1a892c9e957180cebcfef8352d
Signed-off-by: Ronnie Leng <ronnie.leng@gmail.com>
2015-04-01 11:23:45 -05:00
riddle_hsu
db46d6b074 [ActivityManager] Reduce report wrong anr activity
Symptom:
Report ANR on wrong activity.

Reproduce steps:
 (All launchMode, taskAffinity are default and
  without additional intent flag)
 Case 1:
  1.Launch activity A from launcher.
  2.Activity A starts B activity.
  3.Press home key.
  4.Launch activity A from launcher (B is top).
  5.Press back key twice to finish B and A,
    A sleep 10s in onResume.
  6.ANR will report on launcher.

 Case 2:
  1.Launch activity A from launcher.
  2.Press home key.
  3.Kill process of A.
  4.Launch activity A from launcher.
  5.A sleep 10s in onResume, press back key immediately.
  6.ANR will report on launcher.

Possible root cause:
Focused activity will not be updated every time when activity
resumed. (the condition to call setFocusedActivityLocked)

Case 1:
Launcher was stopped and not waitingVisible due to launcher
is not the previous one, then getWaitingHistoryRecordLocked
has no chance to correct the real ANR activity.

Case 2:
Due to process of next activity is died, bring existed
task will not set mResumedActivity (it will be set when its
process is started), so when assigning waitingVisible from
processStoppingActivitiesLocked, the return value of
allResumedActivitiesVisible will be true even there is no
mResumedActivity. That results set waitingVisible to false
to previous activity (e.g. launcher), then also cannot
correct ANR target as case 1.

Change-Id: I0b24f46a8fab266382ebc6e2ed84ebeca9358768
2015-04-01 18:58:07 +08:00
Craig Mautner
d720dedb03 Merge "Clear the previous states before setting the new app visibility" 2015-03-31 22:24:15 +00:00
Olawale Ogunwale
d052a3d37b Merge "[ActivityManager] Fix index out of bounds when updating next pss time." 2015-03-31 16:09:16 +00:00
Neil Fuller
25c5296b0d Merge "An updater for all timezone data on a device" 2015-03-31 08:31:00 +00:00
riddle_hsu
6793fc328a [ActivityManager] Fix index out of bounds when updating next pss time.
Symptom:
System server crash.

Root Cause:
The value curProcState for array index is -1 if the process
has not attached yet.

Solution:
Skip computing for process which is not attached or curProcState
is nonexistent state.

Change-Id: I71aaf45bb78d73097ebe9dfebf76b72f2d243232
2015-03-31 11:54:14 +08:00
Ruben Brunk
e1e1969c96 Add ProcessInfoService to activity manager.
- Adds a new AIDL interface for querying process
  information from activity manager.

Bug: 19186859
Change-Id: Ic08858f346d6b66e7bfc9da6faa2c6e38d9b2e82
2015-03-30 12:20:16 -07:00
Fyodor Kupolov
b94c1657eb Support for storing OAT files in app directory
In installPackageLI, dexopt is now performed on a staging directory of the app
(dexopt phase 1). For each codepath:
 - /oat/<isa> directory is created
 - dexopt output goes to the newly created directory. Optimized files have
   .odex extension.

Bug: 19550105
Change-Id: Iec59790d97837b78af82b079fd1970de3388c91d
2015-03-30 11:32:56 -07:00
Robert Greenwalt
727cac07cc Merge "Add getLegacyVpnInfoPrivileged method" 2015-03-26 22:01:33 +00:00
Neil Fuller
5a680f2e27 An updater for all timezone data on a device
The existing one, being deleted here, did not work properly: it only
updated the file used by libcore and bionic, it did not update the ICU
data.

Most of the installation logic exists in code in libcore/tzdata that is
independent of the server code so that it can be tested.

Bug: 19941636
Change-Id: Id0985f8c5be2f12858ee8bf52acf52bdb2df8741
2015-03-26 15:16:32 +00:00
tiger_huang
293e3586cf Clear the previous states before setting the new app visibility
If setAppVisibility() is called multiple times in a short interval
while the screen is turned off between the calls, the visibility of
the app would be wrong. For example, the user may see the app under
the launcher, not the wallpaper under the launcher.

The flow to the issue:
1. Screen is on.
2. AM calls setAppVisibility() token=App A's token, visible=true
3. Screen is turned off.
4. AM calls setAppVisibility() token=App A's token, visible=false

Note:
a. In 2., WM would put App A into mOpeningApps, and tell it to be
   visible.
b. In 4., because the screen is off now, App A would not be removed
   from mOpeningApps. App A might be told to be invisible directly
   through setTokenVisibilityLocked(), but it would be told to be
   visible again in handleAppTransitionReadyLocked() later.

Change-Id: Icf3d69031ea2822245008248ec8f12bd57218880
2015-03-26 21:10:24 +08:00
Olawale Ogunwale
f5f70b66a3 Merge "[ActivityManager] Avoid killing unrelated processes." 2015-03-24 16:12:23 +00:00
Olawale Ogunwale
000293c93b Merge "Layout the window to be displayed if it would be resized" 2015-03-24 16:11:40 +00:00
Dohyun Lee
6ce3a37f6b DimLayer : remove unnecessary surface transaction calls
There is the case that adjustSurface()  get called even if
the size of the surface of DimLayer is not changed actually.
Since changing the size of a surface is processed synchronously
in the SurfacFlinger, there is usually a few milliseconds delay
(up to 1 vsync interval) when we launch an application.
This patch avoids such cases.

Change-Id: Ib1f76d54f9f2364ac54b70120e4b781e8534e750
Signed-off-by: Dohyun Lee <dohyun.lee@lge.com>
2015-03-24 13:31:22 +09:00
tiger_huang
1263b2f1f2 Prevent unexpected rotation while going back to keyguard
The original logic would let the app hidden by keyguard be able to
decide the orientation. While going back from a show-when-locked app
to keyguard, there would be a short time that keyguard is unable to
decide the orientation, which causes WMS uses the wrong orientation
from the wrong app.

https://code.google.com/p/android/issues/detail?id=155640

Change-Id: Ibc17bfe4603f68b241dc7380459ec9de42a3e259
2015-03-23 05:58:46 +00:00
sj.cha
08bbca040f Add getLegacyVpnInfoPrivileged method
Follows the Google's permission check policy.
Add a getLegacyVpnInfoPrivileged method which skips the permission check
and change getLegacyVpnInfo to check the permission and then call getLegacyVpnInfoPrivileged.
It is already checked in this commit : https://android-review.googlesource.com/#/c/141771/

Signed-off-by: SangJin Cha <sj.cha@lge.com>
Change-Id: I83cfaedbd85745574f3ddf118b11b6e0415483c6
2015-03-23 11:40:35 +09:00
Mathieu Chartier
437ac8f844 Merge "Add JIT late override property" 2015-03-18 22:56:55 +00:00
Mathieu Chartier
7a49028aa2 Add JIT late override property
Required for JIT debug property since user builds can't restart
the shell.

Bug: 19735273

Change-Id: I1983852e80010c344b45e0bb459de47c56adfce8
2015-03-18 15:18:52 -07:00
riddle_hsu
2541306ad5 [ActivityManager] Avoid killing unrelated processes.
Kernel will reuse process id, when wrap-around happens,
there may be just after a pid is freed, a new thread/process
uses the pid immediately.

For examples, there may be a process with pid 1234 killed
by lowmemorykiller or itself (app.killed=false).
Before the death recipient enters AMS, a new thread/process
is started with pid 1234, then when appDiedLocked executes,
this new pid 1234 will be killed again.

It is especially easy happens to zygote:
During zygote starting process, it will stop 5 daemons threads.
And restart the 5 threads after fork is called, so it has
larger pid range to hit the resue case.
https://code.google.com/p/android/issues/detail?id=160661

Solution:
If the dead event is from binder, it is not necessary
to call killProcessQuiet again, because it should really
be dead.
Keep no checking for killProcessGroup because zygote does
not have record under /acct/, and also the parameter uid
has restriction that will not kill another application
which reuses the pid.

Change-Id: Iec4a4884ae641c4d036f4d024ce463f7a351a17b
2015-03-17 18:22:51 +08:00
Mark Salyzyn
2018fd0251 logd: optimize statistics
logd reads /data/system/packages.xml (because it also contains
shared UIDs) and is sensitive to line break and tag name issues.

Bug: 19608965
Change-Id: I2a4a6bcfb10529e4b29c9664cbbf12842e689dd1
2015-03-12 20:29:32 +00:00
Olawale Ogunwale
53729e2933 Merge "Wait for opening apps ready before stopping freezing display" 2015-03-12 16:51:19 +00:00
Olawale Ogunwale
1b4933d10e Merge "Wait for visible wallpaper drawn before starting app transitions" 2015-03-12 16:22:07 +00:00
Lorenzo Colitti
7b5be4c0c7 Fix build, broken by https://android-review.googlesource.com/#/c/115890/
Change-Id: Ieafa2fb0a7f539d8f933ad9c98e3be80457da6e5
2015-03-12 16:48:12 +09:00
Lorenzo Colitti
2f196e6c81 Merge "Remove dead code, mostly DataStateTracker." 2015-03-12 07:27:27 +00:00
Fyodor Kupolov
7487657ee9 Extracted a separate class to run dexopt on packages
performDexOptLibsLI and related methods were extracted to PackageDexOptimizer
class. Minor refactoring of PackageManagerService.

This is a non-functional change. It should simplify further work to allow
storing OAT files inside package dir.

(cherry picked from commit eeea67b8c3678d882d3774edc41242c63daa60fa)

Change-Id: I3494a2da70605362bb6fb4625ffbee1cbe1cd457
2015-03-11 16:03:41 -07:00
Paul Jensen
7fad4eb4b5 Remove dead code, mostly DataStateTracker.
Change-Id: I1433937bffdb29bd42fb1adbfcf0a50ceffac7dd
2015-03-11 10:03:58 -04:00
Craig Mautner
686947801e Merge "[ActivityManager] Fix index OOB when resetting removed task" 2015-03-11 13:46:38 +00:00
riddle_hsu
1d7919a7eb [ActivityManager] Fix index OOB when resetting removed task
Assume task T has an activity X lives in process P.
When P is died and before death recipient being called,
start activity with flag RESET_TASK_IF_NEEDED to bring the
existed task T.

Then scheduleResumeActivity IPC will fail and trigger start
a new process that removes task T.

That results resetTaskIfNeededLocked cannot find the task
when continuing the start flow.

Detail:
https://code.google.com/p/android/issues/detail?id=159558

Change-Id: Icc400c7a6c481a3f78657e9fb83cf0c3a17dde68
2015-03-11 17:09:50 +08:00
tiger_huang
4a7f8b99f8 Wait for visible wallpaper drawn before starting app transitions
If the opening app has wallpaper, when the closing app starts hiding,
the wallpaper would be revealed. It would be nice if we play the app
transitions while opening apps, closing apps, and visible wallpapers
are all drawn.

https://code.google.com/p/android/issues/detail?id=150811

Change-Id: I3c7d140f6f6e43e18119e48f9cab441ee96b17e5
2015-03-11 16:38:27 +08:00
tiger_huang
473db6fdfb Wait for opening apps ready before stopping freezing display
When the screen rotation is changing, we will freeze the display
until all the window surfaces are all drawn (this is not including
windows which have no surface). If the opening app's window surface
is created after we stop freezing the display, there would be no
waiting for the app, and the user would see the black screen.

In this change, we would not only wait for the windows which have
surface, but also wait for the windows about to have surface before
stopping freezing display.

https://code.google.com/p/android/issues/detail?id=150921

Change-Id: I7de4db8ca902236f3e9f730b04dbde681cf8c032
2015-03-10 21:10:40 +08:00
Andreas Gampe
174a44888e am 7f383873: Merge "Frameworks/base: Pass APK debugability to installd"
* commit '7f383873566024c7121cadae3bbdd2a7c47150bc':
  Frameworks/base: Pass APK debugability to installd
2015-03-10 02:10:22 +00:00
Andreas Gampe
7f38387356 Merge "Frameworks/base: Pass APK debugability to installd" 2015-03-09 22:14:54 +00:00
Olawale Ogunwale
edc3c8939f am 14ccc26f: Merge "[ActivityManager] Skip receiver precisely."
* commit '14ccc26f1ce006963f1a0b7a917404aa6a0e9da1':
  [ActivityManager] Skip receiver precisely.
2015-03-09 16:36:31 +00:00
Olawale Ogunwale
14ccc26f1c Merge "[ActivityManager] Skip receiver precisely." 2015-03-09 16:30:52 +00:00
Andreas Gampe
735600c1e6 Frameworks/base: Pass APK debugability to installd
Change-Id: Id17ec72babe2ee88713a0d274eff86508de30666
2015-03-09 08:57:23 -07:00
Andreas Gampe
ecc20aafa6 am 63ab6eb2: Merge "Frameworks/base: Use ArraySet more explicitly"
* commit '63ab6eb220a2a75837d6e3d18d19cbd5dda175eb':
  Frameworks/base: Use ArraySet more explicitly
2015-03-05 22:38:56 +00:00
Andreas Gampe
0888276a1c Frameworks/base: Use ArraySet more explicitly
In KeySetManagerService, use ArraySet more explicitly. Avoid for-each
loops.

Collections API methods on ArraySet are not very efficient. Iterators
incur two object allocations: a helper and the actual iterator object.
During boot, about 4.5K such calls are made. Using the ArraySet more
explicitly like an ArrayList/array avoids the overhead.

Bug: 19617481
Change-Id: I25df334fa1d4be3210667fb1404e3c43f2585049
2015-03-05 13:13:55 -08:00
riddle_hsu
01eb7fa7f9 [ActivityManager] Skip receiver precisely.
Symptom:
Report broadcast ANR on a dead process.

Detail and sample:
http://code.google.com/p/android/issues/detail?id=158329

Root cause:
app.curReceiver can only remember the last running.
If an application is both receiving FG and BG broadcast,
only one of queue can discard, the remain one will still
count as timeout.

Solution:
Select the skip-tartget-receiver by comparing the skipping app
to the first record of mOrderedBroadcasts of each broadcast queues.

Change-Id: Ic68d56f21b417a34f2d30d64ecfbed09c5e1764d
2015-03-04 17:27:05 +08:00
Nick Kralevich
98fdff61dd am 56fde9e7: Merge "SELinuxPolicyInstallReceiver: Prevent partial or mixed policy updates."
* commit '56fde9e70ef850ca7e3f076e52567f5c75b5e7da':
  SELinuxPolicyInstallReceiver: Prevent partial or mixed policy updates.
2015-03-03 17:02:22 +00:00
Stephen Smalley
e9dc17233f SELinuxPolicyInstallReceiver: Prevent partial or mixed policy updates.
The current SELinuxPolicyInstallReceiver logic can yield a partial
or mixed (old and new) set of policy files under /data/security/current
if there is an error or a crash at certain points before completing
the installation of the update.

Rewrite the logic to avoid the possibility of such partial or mixed
policy updates by using rename on the entire directory of policy
files rather than operating on a per-file basis.  Also separate
the extraction of the policy files from the bundle into their own
temporary directory.  Make sure we delete any previous temporary directory
or backup directory before using them for this update.  Drop the
use of a symlink for /data/security/current altogether; it provides
no benefit.

Change-Id: I564af01c2c3ca1531c216013b8724c7511f32de8
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2015-02-27 16:07:55 -05:00
Bill Yi
4fecab570d Merge commit '32acf753e8989766f67fd5300d3eb467f707cc79' into HEAD 2015-02-19 14:31:36 -08:00
Craig Mautner
2a005f6fe9 Merge "Prevent leaking surfaces from exiting windows" 2015-02-16 22:59:20 +00:00
tiger_huang
713abc2879 Prevent leaking surfaces from exiting windows
AM would set the exiting app to be invisible twice by calling
setAppVisibility(). If the screen is turned off during these calls,
the window surfaces of this exiting app won't be destroyed.

The flow:
 1. Screen is on
 2. App A is finished
 3. AM calls setAppVisibility() token=App A, visible=false
 4. WM sets a dummy animation to App A
 5. WM marks App A's wtoken.inPendingTransaction=true
 6. Screen is turned off
 7. AM calls setAppVisibility() token=App A, visible=false
 8. WM calls setTokenVisibilityLocked() directly (screen is off)
 9. WM sends app visibility to App A's client (ViewRootImpl)
10. WM clears the dummy animation from App A
11. App A's client calls WMS.relayoutWindow() to be not visible
12. WM sets App A's window mExiting=true but not destroy its surface
13. App A's window surface leaks...

Note:
a. The call in 3. is from ActivityStack.finishActivityLocked
b. The call in 7. is from ActivityStack.resumeTopActivityInnerLocked
c. In 10., App A won't get the real animation while screen is off
d. In 12., App A's inPendingTransaction=true; WM takes it's animating
e. mExiting won't be cleared because App A has no animation to
   trigger WindowStateAnimator.finishExit()

After applying this patch, WM would destroy the surface in 12. of the
above flow.

Change-Id: I18b79ba96695ec80d57a85dc15cf92a9e7d3a6ef
2015-02-16 08:27:28 +00:00
Filip Gruszczynski
f1df1970db am 88a9a2a4: Merge "Support for faster brightness response to light changes." into lmp-mr1-modular-dev
* commit '88a9a2a46eb77ea340175f5d272433f4de1b6f93':
  Support for faster brightness response to light changes.
2015-02-14 02:27:19 +00:00