Commit Graph

2834 Commits

Author SHA1 Message Date
Svetoslav
3c55e5c659 Fake accessibility service used by UiAutomation not destroyed.
UiAutomation registers a fake accessibility service to introspect
the screen. Upon the death of the shell process that started an
instrumentation in which a UiAutomation resides the connection
between the UiAutomation and the system is kept alive allowing
the instrumentation to introspect the screen even after the death
of the shell process.

bug:8285905

Change-Id: I1a16d78abbea032116c4baed175cfc0d5dedbf0c
2013-02-27 18:32:17 -08:00
Dianne Hackborn
305dbea8e3 Merge "App ops: adding operations for reading/writing clipboard." into jb-mr2-dev 2013-02-26 18:16:22 +00:00
Dianne Hackborn
efcc1a23a1 App ops: adding operations for reading/writing clipboard.
Change-Id: Ic4cade153618fe86954754a3b3edde64a52a0a9c
2013-02-25 18:02:35 -08:00
Dianne Hackborn
208d937b61 Better exceptions when LoadedApk fails.
Change-Id: Iba578c3872c6aeba3bf468735f06bd486d661454
2013-02-25 13:17:54 -08:00
Christopher Tate
ab6b77fd85 Merge "Be cool in backup/restore of apps that can't touch external storage" 2013-02-21 23:45:02 +00:00
Christopher Tate
5cb5c337d5 Be cool in backup/restore of apps that can't touch external storage
Bug: 8241337
Change-Id: I23f6eeba8448b234a7b18ce50d2ced2ba54b4ebd
2013-02-21 15:43:52 -08:00
Daniel Sandler
e96558879e Merge "Make Notification action data structures public." 2013-02-21 19:38:55 +00:00
Daniel Sandler
ea2a317368 Make Notification action data structures public.
Currently hidden.

Change-Id: I2a62a730f76d177577155d7ebb396b0fe51357f8
2013-02-20 22:25:01 -05:00
Dianne Hackborn
a53ee35754 Fix issue #8228463: contradicting public documentation on what...
...Intents match an IntentFilter that has no action specified

And various other doc improvements.

Change-Id: I6d881c8aed56c552e36d5db5df4f74c6aa718da7
2013-02-20 15:05:39 -08:00
Daniel Sandler
f025404a8b Merge "New INotificationListener interface." 2013-02-20 14:40:05 +00:00
Daniel Sandler
09a247e9a8 New INotificationListener interface.
Use with INotificationManager.registerListener(). Limited to
system only right now.

Change-Id: I65b6a8778267022cdc5e58eb75ae607a54b1cc52
2013-02-19 15:26:37 -05:00
Jeff Sharkey
736ef1e9de Merge "Better API for low disk space warnings." 2013-02-19 18:18:53 +00:00
Jeff Sharkey
be72215c39 Better API for low disk space warnings.
Provides uniform interface to ask about low disk thresholds; can
be mocked by other tests.  Opens door to adjust thresholds based on
disk type.

Switch monitor service to using new API, and use filesystem paths
from Environment instead of hard-coding.

Change-Id: Ifdb536e36a453f1b67bc65849037ec3cc0232cf2
2013-02-15 16:59:55 -08:00
Christopher Tate
416c39e8d4 Full backup now saves getExternalFilesDir() content with the app data
... instead of only saving it with the enormous "shared storage" generic
data blob.  In parallel, we no longer store managed app-specific files
on external storage as part of the generic shared-storage blob.

At restore time we just go ahead and apply such files, though,
because they're a priori going to be part of an archive generated by
an older version of the platform, so that's how the data is expected
to be handled in those circumstances.

Bug 6718844

Change-Id: I4410514d368b11d74b3afe6b92d363d4115a3415
2013-02-14 18:46:53 -08:00
Mathias Agopian
3866f0d581 split Surface in two classes: SurfaceControl and Surface
SurfaceControl is the window manager side; it can
control the attributes of a surface but cannot push buffers
to it. Surface on the other hand is the application (producer)
side and is used to push buffers to the surface.

Change-Id: Ib6754c968924e87e8dd02a2073c7a447f729f4dd
2013-02-14 12:19:11 -08:00
Dianne Hackborn
244a1f7e59 Merge "App ops: media ops, set up to be callable from native code." 2013-02-12 23:27:48 +00:00
Svetoslav
90f73928d5 Merge "Adding public event callback instead of the internal one to UiAutomation." 2013-02-12 23:04:57 +00:00
Dianne Hackborn
d7d28e675e App ops: media ops, set up to be callable from native code.
This is to help implementation of bug #8181262 and maybe
bug #8181261

Adds some definition for media ops (though nothing is yet using
them), and re-arranges things a bit so we can implement native
calling in to the app ops service.

Also add some java docs.

Change-Id: I637959745db820e676f23a35a5d2224f51bc6689
2013-02-12 15:03:55 -08:00
Svetoslav
550b48fa18 Adding public event callback instead of the internal one to UiAutomation.
It appears that com.android.internal.util.Predicate is in the public
APIs but it is in the internal package. Leaking the predicate APIs is
a mistake and while we cannot fix that, this change is adding legit
public filter interface.

bug:8183223

Change-Id: I3e2c0ef685d7a832630aaa3ec2e8eae3fb058289
2013-02-12 15:01:09 -08:00
Svetoslav
0707dbdfc6 Merge "Adding new APIs to UiAutomation." 2013-02-12 22:56:02 +00:00
Daniel Sandler
78d0d25dca Historical notification access API.
Similar to getActiveNotifications(),
getHistoricalNotifications() returns a list of all
notifications that have been posted, in
reverse-chronological order. It currently includes duplicate
entries for notifications that have been updated (so it
really is tracking every notification that has been posted
to the system).

Change-Id: Icce8d6f96bbe76710c989fd0068ff971c6498605
2013-02-12 14:33:24 -05:00
Svetoslav
bbfa585d70 Adding new APIs to UiAutomation.
1. Accessibility service may set a flag to request a compressed
   view of the node tree representing the screen. The compressed
   state does not contain nodes that do to react to user actions
   and do not draw content, i.e. they are dumb view managers. This
   compressed hierarchy was very beneficial to the test team and
   this change is exposing the APIs. The compression has to be
   configurable since old tests are written against uncompressed
   view tree. Basically we do not hide the fact that UIAutomation
   is simply an accessibility service with some other useful APIs.

bug:8051095

2. Accessibility service can perform global actions such as opening
   notifications, opening recent apps, etc. These are also needed
   for UI testing since there is no other way to do it via the
   existing UIAutomation APIs. Basically we do not hide the fact
   that UIAutomation is simply an accessibility service with some
   other useful APIs.

bug:8117582

Change-Id: I7b6e24b5f7a973fdada0cc199cff9f882b10720b
2013-02-11 19:59:45 -08:00
Daniel Sandler
fde19b106b New API to request a list of current notifications.
The ACCESS_NOTIFICATIONS permission is signature|system only.

Change-Id: I41338230aee9611117cbdac251c1b6b6c3cebf00
2013-02-07 15:43:02 -05:00
Dianne Hackborn
34e0b05e28 Merge "App ops: track system windows, monitoring changes." 2013-02-07 08:03:14 +00:00
Dianne Hackborn
c2293025a2 App ops: track system windows, monitoring changes.
Change-Id: I273e82bdad66ada3bf0f7ec9176bc304b9ee1ee8
2013-02-06 23:59:56 -08:00
Jeffrey Brown
faffb8b2cc am f2873456: am 352d84b8: am 0d47af11: Merge "Clear loaders array after they are destroyed."
# By Roman Mazur
# Via Android Git Automerger (2) and others
* commit 'f2873456dd2c7f93b63d4bd6bc0c742dfd153b62':
  Clear loaders array after they are destroyed.
2013-02-06 20:55:45 -08:00
Jeffrey Brown
8f1496980e am a3f82b1b: am e4ce2517: am b314f433: Merge "add reply.writeNoException() for quick response"
# By Sungmin Choi
# Via Android Git Automerger (2) and others
* commit 'a3f82b1b2dca74e7f287912cd85069dd74b8bf4d':
  add reply.writeNoException() for quick response
2013-02-06 20:55:37 -08:00
Jeffrey Brown
352d84b841 am 0d47af11: Merge "Clear loaders array after they are destroyed."
# By Roman Mazur
# Via Gerrit Code Review (1) and Roman Mazur (1)
* commit '0d47af1131c4d4f9f29dad790d919d8599e3a3cc':
  Clear loaders array after they are destroyed.
2013-02-06 20:49:54 -08:00
Jeffrey Brown
e4ce25177b am b314f433: Merge "add reply.writeNoException() for quick response"
# By Sungmin Choi
# Via Gerrit Code Review (1) and Sungmin Choi (1)
* commit 'b314f433905ea2cbc62bd5af658f05261a752e5a':
  add reply.writeNoException() for quick response
2013-02-06 20:49:41 -08:00
Jeffrey Brown
0d47af1131 Merge "Clear loaders array after they are destroyed." 2013-02-07 03:59:20 +00:00
Jeffrey Brown
b314f43390 Merge "add reply.writeNoException() for quick response" 2013-02-07 03:46:48 +00:00
Dianne Hackborn
961321fe4e App ops: add op for writing settings.
Also fix a build.

And fix a bug that I think was introduced in the multi-user work
that removed the permission check for writing to settings...!

Change-Id: I5945682faa789ffc78fd3546c0df7d03693f106d
2013-02-05 17:22:41 -08:00
Dianne Hackborn
f51f61269a App ops: new operations for SMS.
Implementation required a new framework feature
to associate an app op with a broadcast.

Change-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3
2013-02-05 11:56:12 -08:00
Daniel Sandler
cd80392fe7 Merge "Capture semantic Notification.Builder data in extras." 2013-02-04 20:31:31 +00:00
Dianne Hackborn
f265ea9d83 App ops: vibration, neighboring cells, dialing, etc.
Improve handling of vibration op, so that apps are
better blamed (there is now a hidden vibrator API that
supplies the app to blame, and the system now uses this
when vibrating on behalf of an app).

Add operation for retrieving neighboring cell information.

Add a new op for calling a phone number.  This required
plumbing information about the launching package name through
the activity manager, which required changing the internal
startActivity class, which required hitting a ton of code that
uses those internal APIs.

Change-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07
2013-02-01 15:14:29 -08:00
Daniel Sandler
be6e7e0f73 Capture semantic Notification.Builder data in extras.
This is an important step toward being able to reason about
Notifications after they've been built and sent to the
NoMan; right now most of that information is baked into the
contentView and bigContentView before being thrown away.

TODO: more stuff. Right now we're just grabbing the basics:
title, text, subtext, and small icon res ID.

Change-Id: Ief725bb38d160d340b0e3c46f83bc02d5a283d13
2013-02-01 17:52:47 -05:00
Daniel Sandler
4a900acdef Migrate package notification restrictions to AppOps.
Change-Id: I23064ce3014d2446d009bbdff92b301280e8b989
2013-02-01 13:26:17 -05:00
Svetoslav Ganov
d0fd54648c Merge "Adding UI test automation APIs." 2013-01-29 03:16:40 +00:00
Dianne Hackborn
b9781fe08c Merge "App ops: you can now turn off operations." 2013-01-25 19:33:11 +00:00
Dianne Hackborn
5e45ee6752 App ops: you can now turn off operations.
Also add new ops for calendar and wi-fi scans, finish
implementing rejection of content provider calls, fix
issues with rejecting location calls, fix bug in the
new pm call to retrieve apps with permissions.

Change-Id: I29d9f8600bfbbf6561abf6d491907e2bbf6af417
2013-01-25 11:25:48 -08:00
Adam Powell
7195c8f25b am a41f9cfb: am 53d49f17: am 17f05497: am c2469500: Merge "Touch action bar title text: you will go to space today!" into jb-mr1.1-dev
# Via Android Git Automerger (3) and others
* commit 'a41f9cfbbd1d137bf1baab49e0d453a40a0ecd33':
  Touch action bar title text: you will go to space today!
2013-01-23 15:52:28 -08:00
Adam Powell
a41f9cfbbd am 53d49f17: am 17f05497: am c2469500: Merge "Touch action bar title text: you will go to space today!" into jb-mr1.1-dev
# Via Android Git Automerger (2) and others
* commit '53d49f1702df41a4ca342a1df6e720b16e094797':
  Touch action bar title text: you will go to space today!
2013-01-23 15:48:52 -08:00
Adam Powell
53d49f1702 am 17f05497: am c2469500: Merge "Touch action bar title text: you will go to space today!" into jb-mr1.1-dev
# Via Adam Powell (1) and others
* commit '17f05497be90004c0263c6de173af8c19ece07b0':
  Touch action bar title text: you will go to space today!
2013-01-23 15:46:20 -08:00
Adam Powell
27cba38952 Touch action bar title text: you will go to space today!
Title/subtitle text in an action bar is now a full alias for home/up.

Add some prototype ActionBar functionality around titles for future
API consideration.

Bug 7966136

Change-Id: I14377121dcb976d0a5f1e1862f35c3d267eb5458
2013-01-23 15:14:31 -08:00
Dianne Hackborn
f9c5e0fe83 Add new API to propagate contextual data to the assist action
When launching an assist, we have a new API allowing the
current foreground activity/application to provide additional
arbitrary contextual information that is stuffed in the
assist intent before it is launched.

Change-Id: I0b2a6f5a266dc42cc0175327fa76774f814af3b4
2013-01-23 14:39:13 -08:00
Svetoslav Ganov
80943d8daa Adding UI test automation APIs.
This change adds APIs support for implementing UI tests. Such tests do
not rely on internal application structure and can span across application
boundaries. UI automation APIs are encapsulated in the UiAutomation object
that is provided by an Instrumentation object. It is initialized by the
system and can be used for both introspecting the screen and performing
interactions simulating a user. UI test are normal instrumentation tests
and are executed on the device.

UiAutomation uses the accessibility APIs to introspect the screen and
a special delegate object to perform privileged operations such as
injecting input events. Since instrumentation tests are invoked by a shell
command, the shell program launching the tests creates a delegate object and
passes it as an argument to started instrumentation. This delegate
allows the APK that runs the tests to access some privileged operations
protected by a signature level permissions which are explicitly granted
to the shell user.

The UiAutomation object also supports running tests in the legacy way
where the tests are run as a Java shell program. This enables existing
UiAutomator tests to keep working while the new ones should be implemented
using the new APIs. The UiAutomation object exposes lower level APIs which
allow simulation of arbitrary user interactions and writing complete UI test
cases. Clients, such as UiAutomator, are encouraged to implement higher-
level APIs which minimize development effort and can be used as a helper
library by the test developer.

The benefit of this change is decoupling UiAutomator from the system
since the former was calling hidden APIs which required that it is
bundled in the system image. This prevented UiAutomator from being
evolved separately from the system. Also UiAutomator was creating
additional API surface in the system image. Another benefit of the new
design is that now test cases have access to a context and can use
public platform APIs in addition to the UiAutomator ones. Further,
third-parties can develop their own higher level test APIs on top
of the lower level ones exposes by UiAutomation.

bug:8028258

Also this change adds the fully qualified resource name of the view's
id in the emitted AccessibilityNodeInfo if a special flag is set while
configuring the accessibility service. Also added is API for looking
up node infos by this id. The id resource name is relatively more stable
compared to the generaed id number which may change from one build to
another. This API facilitate reuing the already defined ids for UI
automation.

bug:7678973

Change-Id: I589ad14790320dec8a33095953926c2a2dd0228b
2013-01-22 17:56:53 -08:00
Dianne Hackborn
72e3983d38 New API to get app op information about a single package.
Change-Id: I986453d9bb4161da467fb820b12502464e936483
2013-01-18 18:36:09 -08:00
Dianne Hackborn
8fea4e72e4 Merge "Rework ParceledListSlice to be much easier to use." 2013-01-19 00:18:40 +00:00
Kristian Monsen
0a30328c10 Better detecting if current threasd is main thread
Old approach got broken after:
https://googleplex-android-review.googlesource.com/#/c/266421/2

Change-Id: I12ae23efdbaebd8ba24acb1b7eff75c912d24f1d
2013-01-18 14:50:07 -08:00
Dianne Hackborn
d8e1dbb6bc Rework ParceledListSlice to be much easier to use.
Take advantage of this to return better information about
packages filtered by permissions -- include the permissions
they have in the requested array.

Also fix issue #8026793 (Contact picture shows default pic
while searching for a contact in qsb) by using the base
package name of the Context when reporting the app name
of an operation.  Otherwise you could make a resource-only
context for another application and do calls through that
and get reported as the wrong app.

Change-Id: I5e0488bf773acea5a3d22f245641828e1a106fb8
2013-01-18 13:02:26 -08:00