Commit Graph

3071 Commits

Author SHA1 Message Date
Ben Murdoch
3650382175 Fix the build
Change-Id: If34523c4b25b3d60edc00b0f37b636bedfc756c2
2013-08-08 12:16:10 +01:00
Matt Casey
77ece7b192 Merge "Extend assist context to foreground services" 2013-08-08 09:33:08 +00:00
Jason Monk
602b232a06 Add PAC File support for proxy configuration
PAC (Proxy auto-config) files contain a single javascript function,
FindProxyForURL(url, host).  It gets called to determine what proxy should be
used for a specific request.

This adds PAC support to the system.  The ProxyProperties has been modified
to hold the PAC file when one is present.  The Proxy method
setHttpProxySystemProperty has been modified to insert a PacProxySelector
as the default ProxySelector when it is required.  This new ProxySelector
makes calls to the ConnectivityService to parse the PAC file.

The ConnectivityService and the WifiConfigStore have been modified to support
saving the extra PAC file data.

The ConnectivityService now has a class attached (PacProxyNative) that
interfaces to the native calls for PAC files.  The parsing of the PAC file
is handled by libpac (which is being added to external/) which utilizes
libv8 to parse the javascript.

As a fallback to applications that don't use the java ProxySelector,  the proxy
is setup to point to a local proxy server that will handle the pac parsing.

bug:10182711
Change-Id: I5eb8df893c632fd3e1b732385cb7720ad646f401
2013-08-07 21:01:39 -04:00
Adam Skory
dfc7fd7818 Extend assist context to foreground services
Add Service.onProvideAssistData(Bundle) which will be
called on foreground Services that have the new attr
in their manifest of provideAssistData = true;

Rename private reference to e.g. "getTopActivityExtras"
as "getAssistContextExtras" - do not rename the relevant
permission, since it is already public.

In ActivityManagerService, request extras both from the
top activity and from any foreground services with the
above attribute. Extend PendingActivityExtras as
PendingAssistExtras with a list of Services from which
extras are expected.

Reduce the timeout to or reporting extras from 4 sec to
just 500 ms.

Bug: 9526331
Change-Id: Ia03b96e8189033a68ae9c514c8cea0199a19bce8
2013-08-07 02:20:44 +01:00
Dianne Hackborn
83524876e0 Whoops, not yet time to be an error.
Change-Id: I869026e1ad33b891010d556150f0b83fa97c4ac4
2013-08-05 19:07:41 -07:00
Dianne Hackborn
03901667db Merge "Start restricting service calls with implicit intents." 2013-08-06 00:16:04 +00:00
Dianne Hackborn
221ea892dc Start restricting service calls with implicit intents.
The bindService() and startService() calls have always had
undefined behavior when used with an implicit Intent and there
are multiple matching services.  Because of this, it is not
safe for applications to use such Intents when interacting with
services, yet the platform would merrily go about doing... something.

In KLP I want to cause this case to be invalid, resulting in
an exception thrown back to the app.  Unfortunately there are
lots of (scary) things relying on this behavior, so we can't
immediately turn it into an exception, even one qualified by the
caller's target SDK version.

In this change, we start loggin a WTF when such a call happens,
and clean up some stuff in Bluetooth that was doing this behavior.

Change-Id: I62e25d07890588d2362104e20b054aebb6c0e007
2013-08-05 16:53:26 -07:00
John Spurlock
32230ef4e6 Merge "Collapse/disable shade when hiding status bar window." 2013-08-05 13:18:54 +00:00
Dianne Hackborn
0770f9ef66 resolved conflicts for merge of c8911ddd to master
Change-Id: I790b547268a23848577199256fc5abc9bdb7abb8
2013-08-02 23:43:31 -07:00
Dianne Hackborn
c8911ddd48 am 373a2f15: am 607b414d: Add new app ops method to reset all op modes.
* commit '373a2f15667956ff8a00ba59b42972b9c930af92':
  Add new app ops method to reset all op modes.
2013-08-02 19:32:13 -07:00
Dianne Hackborn
607b414d04 Add new app ops method to reset all op modes.
Change-Id: I5ee6764de8dc31d812e5a788914ab0099bbef4c0
2013-08-02 19:06:25 -07:00
David Christie
ebe51fc0d8 Add WorkSource capability to AlarmManager.
Change-Id: I663ea3078d405f0fa667a04bdaa376ae6652e994
2013-08-01 13:22:40 -07:00
David Christie
e1f886f5e3 Merge "Add new app op to monitor high power location requests." 2013-08-01 19:24:53 +00:00
Amith Yamasani
3d38fa301c Merge "PreferenceActivity Fragment security" 2013-08-01 17:18:03 +00:00
Dianne Hackborn
5b45f2366e am bd61ba5b: am a99cb5bc: (DO NOT MERGE) Fix pub issue #58043: Copy crash in Android 4.3...
* commit 'bd61ba5b22f55a70615e128310d365c6175a0a4e':
  (DO NOT MERGE) Fix pub issue #58043: Copy crash in Android 4.3...
2013-07-31 14:18:06 -07:00
Dianne Hackborn
a99cb5bc41 (DO NOT MERGE) Fix pub issue #58043: Copy crash in Android 4.3...
...when clipboard listener attached

We need to clear the calling identity before dispatching change
notifications.  Also make this more robust, so that in the face
of any failure we will clean up the broadcast state.

Integrated from master.

Change-Id: I05e1f76ffd486439535631fe4062dabe94bd2ccf
2013-07-31 13:48:39 -07:00
John Spurlock
9764218ff9 Collapse/disable shade when hiding status bar window.
Provide system bar window visibility (showing/hiding) to sysui,
information it did not have before.

Use this new info to disable shade interaction when bars are hiding.

Bug: 8682123
Change-Id: I4105b789866f847582af1c68a703240d773fa71e
2013-07-31 14:54:03 -04:00
Christopher Tate
56cfa24412 Temporary stay of execution
Change-Id: I5d3b4213233f6326a8f7ee4891f1f71539649b8d
2013-07-30 19:09:41 -07:00
Christopher Tate
5f221e8f93 If you set an alarm before the epoch, you're gonna have a bad time
For apps build against the KLP+ SDK, this will now throw an illegal argument
exception.  Legacy apps will simply see the alarm delivered immediately.

Bug 9965704

Change-Id: Ia103d9529d32640098be324820fe228efa95431d
2013-07-30 18:55:01 -07:00
Amith Yamasani
364ed4dda4 PreferenceActivity Fragment security
Provides a way for PreferenceActivities to verify that they
aren't being launched with Fragments not meant to be attached to
them. Default implementation will fail verification for apps built
with KLP. This will not affect apps built for earlier targets.

Also, make sure that the class being instantiated is a Fragment and
not some random class.

Bug: 9901133

Change-Id: I564cd5168eabcadd7594ea8011e2081ebebfe063
2013-07-30 16:23:50 -07:00
David Christie
0b83745019 Add new app op to monitor high power location requests.
This is a new op parallel to the existing OP_MONITOR_LOCATION
but only tracks those requests deemed to be above a
power threshold.

Change-Id: I76fe4d9d2e550293b9da6d5cf902a5b4dd499f0f
2013-07-30 14:59:33 -07:00
Eino-Ville Talvala
2f1a2e423e Camera2 API: Rename package to android.hardware.camera2
Change-Id: I77b7939e199f9fe8e12a59393c24cff08097448c
2013-07-30 11:37:31 -07:00
David Christie
f10f9ea06c Revert "Add WorkSource capability to AlarmManager"
This reverts commit 02600fb66b.

Broke some tests.

Change-Id: Ic47b23a935bf90aba817073c27cd247306db7d5f
2013-07-26 19:40:53 +00:00
David Christie
02600fb66b Add WorkSource capability to AlarmManager
Change-Id: Ibcff01a9f54a89fde6e7e5b7658e9a90b9a2445b
2013-07-26 09:41:59 -07:00
Scott Greenwald
9a05b31aab Add support for notification scorers.
This CL adds an interface and classes for scoring notifications.
The NotificationManagerService initializes an array of scorers
specified as a resource. When a Notification is enqueued, the
getScore() method is called successively on the scorers, each
getting the Notification to be scored, and the score outputted
by the previous scorer. At present there is a single scorer
which prioritizes Notifications that mention the display name of
a starred contact.

To turn off the StarredContactNotificationScorer:
  adb shell settings put global contact_scorer_enabled 0

Change-Id: Ic16c80952e7c85bdde292ebb3f7900efb01f2e29
2013-07-23 17:16:51 -04:00
Chris Wren
270d1460d3 Merge "allow rich notifications in the heads up." 2013-07-23 20:13:35 +00:00
Dianne Hackborn
57a7f5954c Add "adb shell am restart" command.
So you can restart the system without being root.

Change-Id: I89770f497833ecbe2b69e3a0cfafae7ef472a9f5
2013-07-23 11:51:22 -07:00
Chris Wren
51c7510e49 allow rich notifications in the heads up.
new shouldInterrupt logic: screen on, not locked, not dreaming, and
  priority above HIGH and noisy, or has fullscreen intent
draft of API allowing devs to give hints about head up display

reuse inflateViews()
add an expand helper to the heads up space
move some things into Entry for reuse

don't allow touches in first second
delay decay if touched
make decay time a resource

add a custom viewgroup for notification rows to get view management
out of the NotificationData class.

Change-Id: I36464f110cfa0dabc3f35db7db6c35c27e8ee2ba
2013-07-23 11:38:56 -04:00
Christopher Tate
57ceaaa0aa Add AlarmManager.setWindow(...) for supplying an explicit delivery window
Bug 9532215

Change-Id: I0efe32cbaaae8ce6ab223041eed116c3470a7326
2013-07-19 18:11:45 -07:00
Dianne Hackborn
c0dfee29a8 Merge "Fix issue #9925269: Naver app crashes on launch" 2013-07-19 00:46:40 +00:00
Dianne Hackborn
ff32f353f8 Fix issue #9925269: Naver app crashes on launch
No comment.

Change-Id: I084cbbf21cacdce179c11528b7217fdc6006dceb
2013-07-18 17:31:13 -07:00
Christopher Tate
1a80cfe968 Merge "Batch alarms to reduce device wakeups" 2013-07-19 00:22:59 +00:00
Dianne Hackborn
fbf4ce04f1 Merge "Mmmmmmm... lovely, lovely ArrayMap." 2013-07-18 18:22:41 +00:00
Dianne Hackborn
add005cf94 Mmmmmmm... lovely, lovely ArrayMap.
And ArraySet, too.

Change-Id: I72ea28cbb2286b01b6e1be082f8e7ec17e99074e
2013-07-18 11:18:25 -07:00
Dianne Hackborn
e98f5dbe6b Make it safe to use start/stop app ops outside of system proc
We now keep track of all of the active start operations per
non-system process, so they can be cleaned up if the process
goes away.

Change-Id: I9d05f1e0281c47dbe1213de014f0491f1359685c
2013-07-17 17:25:13 -07:00
Christopher Tate
e0a22b324d Batch alarms to reduce device wakeups
The default Alarm Manager behavior for KLP+ apps will be to aggressively
coalesce alarms, trading exact timeliness of delivery for minimizing the
number of alarm-delivery points, especially wakeup points.

There is new API in AlarmManager, setExact() and setExactRepeating(),
for use by apps that absolutely *must* get their alarms at a specific
point in time.

Bug 9532215

Change-Id: I40b4eea90220211cc958172d2629664b921ff051
2013-07-17 14:37:12 -07:00
Dianne Hackborn
3e82ba1a67 Make ArrayMap public! :)
Also do some tweaking of the various container classes
to synchronize them with the support lib and make it
easier to copy code between the two.

And update activity/fragment to use ArrayMap.

Change-Id: I3cfe82392a17119dfc72c3d9961f64e1914f42be
2013-07-16 17:08:04 -07:00
Dianne Hackborn
c823051972 Switch proc stats to use new process state constants.
These new constants are a better mapping to the kind of
information that procstats is wanting to collect about
processes.  In doing this, the process states are tweaked
to have a bit more information that we care about for
procstats.

This changes the format of the data printed by procstats,
so the checkin version is bumped to 2.  The structure is
the same, however the codes for process states have all
changed.  The new codes are, in order of precedence:

p -- persistent system process.
t -- top activity; actually any visible activity.
f -- important foreground process (ime, wallpaper, etc).
b -- important background process
u -- performing backup operation.
w -- heavy-weight process (currently not used).
s -- background process running a service.
r -- process running a receiver.
h -- process hosting home/launcher app when not on top.
l -- process hosting the last app the user was in.
a -- cached process hosting a previous activity.
c -- cached process hosting a client activity.
e -- cached process that is empty.

In addition, we are now collecting uss along with pss
data for each process, so the pss checkin entries now
have three new values at the end of the min/avg/max uss
values of that process.

With this switch to using process state constants more
fundamentally, I realized that they could actually be
used by the core oom adj code to make it a lot cleaner.
So that change has been made, that code has changed quite
radically, and lost a lot of its secondary states and flags
that it used to use in its computation, now relying on
primarily the oom_adj and proc state values for the process.

This also cleaned up a few problems -- for example for
purposes of determing the memory level of the device, if a
long-running service dropped into the cached oom_adj level,
it would start being counted as a cached process and thus
make us think that the memory state is better than it is.
Now we do this based on the proc state, which always stays
as a service regardless of what is happening like this, giving
as a more consistent view of the memory state of the device.

Making proc state a more fundamentally part of the oom adj
computation means that the values can also be more carefully
tuned in semantic meaning so the value assigned to a process
doesn't tend to change unless the semantics of the process
has really significantly changed.

For example, a process will be assigned the service state
regardless of whether that services is executing operations
in the foreground, running normally, or has been dropped to
the lru list for pruning.  The top state is used for everything
related to activities visible to the user: when actually on
top, visible but not on top, currently pausing, etc.

There is a new Context.BIND_SHOWING_UI added for when system
services bind to apps, to explicitly indicate that the app
is showing UI for the system.  This gives us a better metric
to determine when it is showing UI, and thus when it needs
to do a memory trim when it is no longer in that state.  Without
this, services could get in bad states of continually trimming.

Finally, more HashSet containers have been changed to ArraySet,
reducing the temporary iterators created for iterating over
them.

Change-Id: I1724113f42abe7862e8aecb6faae5a7620245e89
2013-07-15 16:21:35 -07:00
Dianne Hackborn
a413dc06b2 Add new proc state constants and delivery.
The activity manager now keeps a new "process state" for
each process, indicating the general execution and memory
state of the process.  This closely follows the out-of-memory
adjustment and scheduling class that it currently tracks,
but roles these together (plus a little more info) into one
more semantically meaningful number.

This value is reported to each process as it changes, so they
can do things like tune the Dalvik garbage collector to match
the current process state.

I think I should also switch to this for process states.  It
will give is more meaningful divisions of time for each process.

Also fix a problem in the activity stack where the previous
process was not being set correctly when moving between
activity stacks.

Change-Id: I598b1667dc46547f8fadae304e210c352cc9d41f
2013-07-12 18:14:46 -07:00
Craig Mautner
fb20eb48aa Merge "Add convertToTranslucent to API." 2013-07-10 21:52:28 +00:00
Dianne Hackborn
1304f4ae32 Add new location monitoring op, make some of app ops public.
The new location monitoring op is to tell us when an application
is monitoring for any location changes.  It may be useful information
in addition to the more explicitly information about when location
data actually goes to the app.

Also make parts of AppOpsManager public for use by gcore.  It is
not available to third party apps.

Change-Id: Ib639f704258ffdd7f3acd7567350ed2539da628a
2013-07-09 18:17:27 -07:00
Craig Mautner
5eda9b3301 Add convertToTranslucent to API.
Rename convertToOpaque to convertFromTranslucent. Add the
counterpart to Activity.convertFromTranslucent() for returning from
opaque to a translucent Activity. The caller should wait until
TranslucentConversionListener.onTranslucentConversionComplete() is
called before actually changing the background to translucent.

Change-Id: Id04b026bcc4dd8bad9a33a7af126e1bb28fb9c03
2013-07-09 14:50:12 -07:00
Craig Mautner
88c0589969 Refactor ActivityThread cache - Baby step 1.
Introduce ResourcesManager and ResourcesKey as standalone classes.
Move DisplayMetrics and Resources HashMaps from ActivityThread to
ResourcesManager.

Change-Id: I20cc6c0dd1b74667354839e5ac9a660f4ee2d00d
2013-07-09 09:36:42 -07:00
Dianne Hackborn
2286cdc0ca Misc memory stuff.
- New Activity.reportFullyDrawn() method that applicatins can call
  when they know they are fully drawn, allowing us to have better
  app launch time info.  This data is also included in usage stats.
- Added total and free memory data "dumpsys meminfo".
- Tuned the moderate memory levels to be more aggressive about
  considering the device getting low on RAM, and thus starting
  to prune RAM from processes.
- Fixed issues in processstats when reading old data as well as
  resetting and other various fixes.

Change-Id: I20efe7451afb4edfa1aeec448328ba601c24d869
2013-07-02 11:21:04 -07:00
Dianne Hackborn
904a857d5a More work on procstats: save/restore state, fixes.
We now persistent the current procstats to storage
to keep them across boots.  Still need to do division
and pruning across days; right now they will just keep
collecting forever.

Also fix some bugs in the checkin output.

Change-Id: I4dd9317dbe2ee0642af8f2f0be1f2bd9c4055e80
2013-06-28 18:45:46 -07:00
Dianne Hackborn
2179a522d3 Merge "Start really collecting PSS data for process stats." 2013-06-28 01:59:24 +00:00
Dianne Hackborn
cfc837f7fa Start really collecting PSS data for process stats.
The activity manager now uses some heuristics to try to
sample PSS data from processes so that it can get enough
data to over reasonable time have something useful, without
doing it too aggressively.

The current policy is:

1. Whenever a significant global change happens (memory state,
   sceen on or off), we collect PSS from all processes; this will
   not happen more than every 10 minutes.
2. When all activities become idle, we will collect PSS from the
   current top process; this will not happen more than every 2
   minutes per process.
3. We will sample the top-most process's PSS every 5 minutes.
4. When an process's oom adj changes and it has been more than
   30 minutes since PSS has been collected from it, we will
   collect a new PSS sample.
5. If a process changes from service A to service B (meaning it
   has been running a service for a long time), we will collect
   a PSS sample from it.
6. If someone explicitly requests PSS data (for running services
   UI or dumpsys), record that.

Also:

- Finish moving the procstats output all to the new format.
- Record information about processes being killed due to excessive
  wake locks or CPU use in procstats.
- Rework how we structure common vs. per-package process stats to
  make it simpler to deal with.
- Optimize the Debug.getPss() implementation (we use it a lot now).
  Should probably optimize it further at some point.

Change-Id: I179f1f7ae5852c7e567de4127d8457b50d27e0f0
2013-06-27 18:56:00 -07:00
Christopher Tate
a3664247c7 New API: apps can request a wipe of their own data
Bug 9588299

Change-Id: I817a90e272ba279d7171f6dbe88dbafd7e42b050
2013-06-27 15:32:37 -07:00
Craig Mautner
5729b81ab5 Merge "Add API to convert translucent Activity to opaque." 2013-06-27 21:00:44 +00:00
Dianne Hackborn
49e9c44c4b Merge "Add new ActivityManager.isLowRamDevice()." 2013-06-26 23:16:48 +00:00