Commit Graph

748 Commits

Author SHA1 Message Date
Stephen Chen
357f8fabc8 Implement metered tracking for NetworkStats summary queries.
Dependent on ag/1550196 where API is defined.

Bug: 31015360
Bug: 26545374
Test: runtest --path
frameworks/base/core/tests/coretests/src/android/net/NetworkStatsTest.java,
other test classes.

Change-Id: I968b9e3352d7880e3fc438f12de628a2da057e0a
2016-11-04 09:55:21 -07:00
Mitchell Wills
3c46ac731a DO NOT MERGE Manually merge commit 'f28778064383821ccf48c9570191f34a24aa513f' into nyc-mr1-dev-plus-aosp
Change-Id: I7cb1f97a5b931c2057a811d7947f47ad7320ef1c
2016-08-29 17:46:44 -07:00
Roshan Pius
88e33a2864 IpConfigStore: Changes for parsing old wifi backup
Some changes in IpConfigStore to parse old backup data. The old backup
data contained a raw byte dump of the ipconfig.txt. So, make changes in
IpConfigStore to parse the inputstream from backup data into
IpConfiguration objects.

Changes in the CL:
1. Make the |readIpAndProxyConfigurations| method static so that
it can be used as a utility for parsing the backup data.
2. Create a new version of |readIpAndProxyConfigurations| method to
accept an input stream parameter.
3. Make |writeConfig| method static so that it can be used for
unit-testing the backup migration logic.

BUG: 29075035
Change-Id: Ic074952d9f9ef143089a371e6c527470cb1c229c
(cherry picked from commit ad683cadb2)
2016-08-26 13:22:45 -07:00
Daniel 2 Olofsson
0b9f2f715f Merge \\"Fix NativeDaemonConnectorException issue accessing null object\\" into nyc-mr1-dev am: 6ba04e354e
am: 961490e8ae

Change-Id: I7f4be199eded99a3abc06321083a80f861f66ab9
2016-06-30 00:31:19 +00:00
TreeHugger Robot
6ba04e354e Merge "Fix NativeDaemonConnectorException issue accessing null object" into nyc-mr1-dev 2016-06-30 00:20:51 +00:00
Jack Yu
3f28642bf1 Merge \"Merge \\"Added a virtual interface for Video Telephony call usage counting\\" into nyc-mr1-dev am: 83e96c1957\" into nyc-mr1-dev-plus-aosp
am: 3249cf25bd

Change-Id: I57546ac79c77543384fc5e0b327deda019ecc2b8
2016-06-29 22:17:39 +00:00
Daniel 2 Olofsson
ab17d3a113 Fix NativeDaemonConnectorException issue accessing null object
When function getCode is called on
NativeDaemonConnectorException object it may throw exception
due to mEvent object not being set for certain constructors.
Fix is to return a default error code as expected if mEvent
object has not been set rather than trying to call
mEvent.getCode().

Change-Id: Ia8aa23deb8871bb4df73096cc489b685a1765f16
2016-06-29 14:53:28 -06:00
Jack Yu
e544a48eb2 Added a virtual interface for Video Telephony call usage counting
1. Added a virtual VT interface.
2. Qeury VT usage from telephony service.

bug: 20888836
Change-Id: I3df0c22922f8394554230b53f8ae091e17c95595
2016-06-29 11:54:56 -07:00
Jeff Davidson
451f9f1b2c Merge \\\"Fix runtime restart when using aggregated net observers.\\\" into nyc-dev am: c2d75c898b am: 9e984de0c2
am: fd540afef5

Change-Id: I7f6205391294f9a6e7325b41e051e1d128a1f0bf
2016-06-20 18:33:14 +00:00
Jeff Davidson
5065b30601 Fix runtime restart when using aggregated net observers.
When observing network traffic on a per-iface basis (as opposed to a
per-iface+uid basis), do not attempt to redistribute VPN traffic,
because it is unnecessary and will lead to a crash further down the
stack.

This is a one-line functional change, but some comments have been
added throughout to clarify behavior.

Bug: 29390363
Change-Id: Icca13f181d7698ca3ddc92aa9248f06f130d49a3
2016-06-15 13:55:56 -07:00
Roshan Pius
ad683cadb2 IpConfigStore: Changes for parsing old wifi backup
Some changes in IpConfigStore to parse old backup data. The old backup
data contained a raw byte dump of the ipconfig.txt. So, make changes in
IpConfigStore to parse the inputstream from backup data into
IpConfiguration objects.

Changes in the CL:
1. Make the |readIpAndProxyConfigurations| method static so that
it can be used as a utility for parsing the backup data.
2. Create a new version of |readIpAndProxyConfigurations| method to
accept an input stream parameter.
3. Make |writeConfig| method static so that it can be used for
unit-testing the backup migration logic.

BUG: 29075035
Change-Id: Ic074952d9f9ef143089a371e6c527470cb1c229c
2016-06-02 11:59:29 -07:00
Antonio Cansado
dccb76c3de Merge "Cleaning up NetworkStatsManager." into nyc-dev am: c45f0aea71 am: f49cbec84c
am: cc1524eded

* commit 'cc1524edede07e2139cd072d6256fa96952f4004':
  Cleaning up NetworkStatsManager.

Change-Id: I3f669191e7c7739870dc098d5d6357d1d3ceb6dd
2016-05-25 22:43:26 +00:00
Antonio Cansado
bfd4e42c8d Cleaning up NetworkStatsManager.
- Throwing SecurityExceptionand and IllegalArgumentException instead of null for new APIs
- removing @removed APIs

Bug:27530098,27379882
Change-Id: Ifbe65bfc5051aa33aff2baa22cfa8e67b0f7c358
2016-05-25 11:07:41 -07:00
Ian Rogers
ae82b979bb Merge "Fix 2 instances of buggy double check locking on non-volatile fields." 2016-05-19 05:19:29 +00:00
Ian Rogers
92a0487493 Fix 2 instances of buggy double check locking on non-volatile fields.
Bug caught by Error Prone:
http://errorprone.info/bugpattern/DoubleCheckedLocking

Bug: 27723540
Change-Id: I0b0c06ce4ae1ffb668e8ab3a7fe07706df173f18
2016-05-18 20:04:13 -07:00
Antonio Cansado
fe78ecbb2c Addressing API council comments on NetworkStatsManager.
Callbacks
 - DataUsageCallback renamed to UsageCallback
 - DataUsagePolicy removed; passing in params directly to register method
 - making it an abstract class
 - passing in (networkType, subscriberId) that reached its threshold
 - renaming onLimitReached to onThresholdReached to match existing naming
 - only monitor single network,subscriberId
 - no monitoring of specific uids; using device or user wide instead

Tags
 - only owner uid can read its tags
 - exposing only TAG_NONE to match service side

BUG: 27530098

Change-Id: I2b2664da71806868a1e937d2bf4d1f234637509b
2016-05-10 13:24:16 -07:00
Rebecca Silberstein
576ec01271 NativeDaemonConnector: add waitForCallbacks method
Add a method that allows callers to wait until all unsolicited
responses received from the native daemon during a command are
processed.

When commands are issued to a native daemon (such as netd) through the
NativeDaemonConnector we block until the command response is received.
Any responses or events that are a side-effect (considered
"unsolicited") of the command are placed in a Message and handled as
callbacks. The order of their processing is not guaranteed and, as we
have seen from bugreports, can be handled several seconds
later - causing the SoftAP that was just set up to be torn down
because a late interface down/removed is indistinguishable from a
new interface down/removed.

This CL adds a method that first checks to make sure callback thread
is not the same thread as used for the blocking call.  The new
waitForCallbacks method uses a CountDownLatch to force the calling
thread to wait until all unsolicited responses received from the
native daemon during the execution of the command are handled.

The wifiFirmwareReload method is also updated to use the new
waitForCallbacks method.

BUG: 27857665
Change-Id: I3e22978f720b1cbf57fbb64ad4fea73f8c2d408a
2016-04-22 06:40:49 +00:00
Lorenzo Colitti
2faa06bcc3 Merge "If we want to release the lock, release instead of acquiring it." into nyc-dev 2016-04-13 02:30:33 +00:00
Lorenzo Colitti
946a18fb24 Merge changes Ic2c84de7,I379aef92 into nyc-dev
* changes:
  Remove duplicated code in NetworkStateTrackerHandler.
  Improve Tethering and NativeDaemonConnector logging.
2016-04-11 14:27:31 +00:00
Lorenzo Colitti
8b3ff56d28 If we want to release the lock, release instead of acquiring it.
The intent of this code seems pretty clearly to release the
lock, not acquire it. This is bad since it's a refcounted
wakelock.

Change-Id: I0f7590ab697133bd82db8a1a515453316c6a80dc
2016-04-11 23:19:06 +09:00
Lorenzo Colitti
1ba4d36e2c Improve Tethering and NativeDaemonConnector logging.
1. Deduplicate the Tethering message numbers, and use MessageUtils
   to convert them to strings.
2. Add a warning to NativeDaemonConnector when an unsolicited
   event is more than 500ms late or takes more than 500ms to
   process.

Bug: 27857665
Change-Id: I379aef9257027d1ccf30906e79c6389ef1f95420
2016-04-11 17:40:21 +09:00
Jack Yu
7e3859251f Excluded certain APNs (e.g. IMS) from mobile data usage.
Added not_metered capability to a mobile network if none
of its associated APN types are metered. Also used not_metered
capability to determine if a network should be accounted for
data usage or not instead of using network type, which is
always MOBILE after refactoring. Will add VT usage support
in next phase.

bug: 20888836
Change-Id: Id692cb856be9a47d0e918371112630128965b1bb
2016-04-07 10:07:31 -07:00
Philip P. Moltmann
bbb41dd3bd Parse and validate txt records.
Bug: 27696905
Change-Id: I9affcf02a51c92a2be1c2bfc5efbd09065e100bc
2016-03-30 20:33:31 -07:00
Joe Onorato
e80e75eda4 Turn off verbose logs and remove log that is covered by verbose logs.
Bug: 27744135
Change-Id: I436cfd325f87b3b9205d50e92e2a70a50dd33344
2016-03-24 11:32:17 -07:00
Jeff Davidson
082ceb1679 NetworkStats.Bucket API polish.
-Add @IntDef constants for STATE_ and ROAMING_.
-Expand docs for ROAMING_ constants.
-Use ROAMING_NO/YES instead of ROAMING_DEFAULT/ROAMING.

Bug: 27531260
Change-Id: I54ecfb4148caa549214df0bee9983036ffa4cb55
2016-03-14 11:24:12 -07:00
Joe Onorato
9f5c3b8c68 Turn down the logging a little bit.
Change-Id: Ib6e0e6f3577afac3b9bfe9a9b1cce70fb16d9d04
2016-03-04 12:21:30 -08:00
Roshan Pius
dbdc23c2c0 IpConfigStore: New constructor to accept writer
am: 6df1731743

* commit '6df1731743c92d61451c4c1b10f27a89b1b0b973':
  IpConfigStore: New constructor to accept writer
2016-02-23 02:19:40 +00:00
Roshan Pius
6df1731743 IpConfigStore: New constructor to accept writer
Add a new constructor to accept a DelayeDiskWrite object from the
caller.

BUG: 27293150
Change-Id: I13fb86c76ee5a0d05b45fec0c42b7e1b2233ee76
TEST: `runtest frameworks-wifi`
2016-02-22 17:13:47 -08:00
Antonio Cansado
7a6536383d Implementation of data usage callbacks.
NetworkStatsService will register data usage requests
and keep data usage stats scoped to the request.

There are different types of data usage requests
- scoped to a set of NetworkTemplate; these are restrictred to
device owners and carrier apps and allow the caller to monitor
all activity on the specified interfaces.
- scoped to all uids visible to the user, if the user has
android.Manifest.permission#PACKAGE_USAGE_STATS permission.
The set of uids may change over time, so we keep track of that.
- scoped to a set of uids given by the caller, granted that
the caller has access to those uids.
- scoped to the caller's own data usage. This doesn't require
PACKAGE_USAGE_STATS.

Bug: 25812785
Change-Id: Ie11f35fc1f29d0dbe82f7fc924b169bb55c76708
2016-02-17 18:43:53 -08:00
Zoltan Szatmary-Ban
4ff8b948b0 Introduce DEVICESUMMARY access level to NetworkStatsAccess.
Apps with PACKAGE_USAGE_STATS app op or READ_NETWORK_USAGE_HISTORY
granted can query the summarized device data usage (but not individual
uids running in other users or profiles).

Bug:26677052
Change-Id: Id51631638f338a8cf48172c9b41746228a335084
2016-01-26 13:59:52 +00:00
Jeff Davidson
131806f111 Implement roaming tracking in NetworkStats summary queries.
Whether a network is deemed roaming or not was already being tracked
as part of the NetworkIdentitySet, so the underlying data store
already tracks roaming and native data separately. However, this data
was being aggregated together in NetworkStatsCollection#getSummary,
since the NetworkIdentitySet is converted to an iface name for the
purposes of matching, and the iface name will be identical whether or
not the iface is considered roaming. Now it is separated.

Also fixes a long-standing bug in NetworkIdentitySet where an identity
read from a saved file would always be considered roaming == false,
even if it wasn't at the time it was written.

Bug: 25813438
Change-Id: I11ab5b51182ed8da7af8fde468df065f9fdc3dad
2016-01-19 16:57:51 -08:00
Jeff Davidson
8dc22e3e90 Relax permissions around NetworkStatsManager APIs.
Currently, access to network usage history and statistics requires a
signature|privileged permission, an AppOps bit (associated with the
PACKAGE_USAGE_STATS permission), or device/profile ownership. Once
access is granted via one of these mechanisms, it generally applies to
any UID running in the same user as the caller.

This CL expands access as follows:

-Any app can access its own usage history with no extra requirements.
-Carrier-privileged applications can access usage history for the
entire device.
-Device owners can access per-UID breakdowns for usage. Previously
they could access the summary for the whole device, but not the
individual breakdowns.

We simplify the permission model by defining three access levels -
DEFAULT (own app only), USER (all apps in the same user), and DEVICE
(all apps on the device), and propagate these levels throughout.

Finally, this CL fixes an apparent bug in
NetworkStatsSerice#hasAppOpsPermissions - if the AppOp bit was in
MODE_DEFAULT, hasAppOpsPermission would always return false instead of
falling back to the PackageManager permission check.

Bug: 25812859
Bug: 25813856
Change-Id: Ic96e0776e2a4215a400163872acea1ededfaced9
2015-12-14 17:16:37 -08:00
Daichi Hirono
dbccfac26f Add capability to receive FD with NativeDaemonConnector.
BUG=25755372

Change-Id: I2888219b77cf04f4bf749d5518ff62ba16258f2d
2015-12-04 14:16:00 +09:00
Jeff Sharkey
6d3c359289 Yell when calling installd with PM lock held.
As a matter of policy, we should never be holding the mPackages lock
while calling down into installd.  This little bit of logic helps us
catch accidental cases where this happens.

Change-Id: I676c81df43ef936ffd36290d45a79429630c1b4b
2015-11-03 14:44:20 -08:00
Jeff Sharkey
c109706f45 Yell if NDC callers are holding bad locks.
The current MountService design heavily depends on down-callers not
holding any locks, since the vast majority of events are unsolicited
and bubble up to the framework.

This simple API gives us an easy way to track down people calling
while holding a lock they shouldn't be.

Bug: 25443096
Change-Id: Ifcbda95f00d5be8c1b88d58ca67927e76c713c3e
2015-11-03 10:39:45 -08:00
Jeff Sharkey
b1f84a006f Merge changes I9971c466,Ib42474fd into mnc-dev
* changes:
  Kill MediaProvider during drastic changes.
  Use best volume description for MTP.
2015-07-08 21:55:54 +00:00
Jeff Sharkey
6928e332da Kill MediaProvider during drastic changes.
Sadly MediaProvider makes a ton of assumptions about storage paths
not changing.  To ensure that it picks up radical storage changes,
kill it and let it restart to pick up new paths.

Also give ourselves a longer timeout when benchmarking.

Bug: 20275423
Change-Id: I9971c4667dabdc685cb23528443f085f152c461d
2015-07-08 14:06:40 -07:00
Zoltan Szatmary-Ban
f34946fabb Expose time-interval detail query on INetworkStatsSession
Also, force polling when a session is opened for NetworkStatsManager.

Bug: 21864554
Bug: 21754685
Change-Id: I24ea822c2d5bc1421ec7ee65d0cfe27cf02dd69e
2015-07-07 17:36:54 +01:00
Todd Kennedy
fd6ca6c8d4 Handle volume benchmark timeout
If a volume benchmark operation times out, we don't want to show
a cryptic toast message. Instead, we return a very large integer
[eg Long.MAX_INT]. The storage wizard can then use this value
to show an appropriate dialog if it chooses.

Bug: 21376364
Change-Id: I3d97336e19c93511cfff2cbdb2f07ab033a1143d
2015-06-23 14:40:32 -07:00
Prerepa Viswanadham
24d204021b Merge commit '17455a3' into master_merge 2015-05-01 10:12:11 -07:00
Zoltan Szatmary-Ban
3a0699a153 Fix potential NPE on devices without DPMS
Bug: 20563108
Change-Id: Ie2bda65c834ddad9db8753f7616c2754072551cd
2015-04-30 10:38:24 +01:00
Jan Nordqvist
23b9a0d58d Added parameter to avoid having a stream opened,
and with that, file truncated on no-op.

Change-Id: I5813e4fd269c639a437e17f2554efa4db735a8ba
2015-04-23 15:42:55 -07:00
Zoltan Szatmary-Ban
fec3d1ff1c Data usage API: any uid is accessible to system apps running in any user
This CL mostly affects Settings app as it can run in a user different
than UserHandle.OWNER. Since it is a system app it should have access
to all uid's data usage, regardless of which user it is currently running
in.

Bug: 19967498
Change-Id: I4a7787134d998457f7e2a1029183d44d9584083e
2015-03-31 18:09:20 +01:00
Jeff Sharkey
6f2ba5ec43 Progress towards dynamic storage support.
Storage devices are no longer hard-coded, and instead bubble up from
whatever Disk and VolumeBase that vold uncovered, turning into
sibling Java objects in MountService.  We now treat vold events as
the source-of-truth for state, and synchronize our state by asking
vold to "reset" whenever we reconnect.

We've now moved to a model where all storage devices are mounted in
the root mount namespace (user boundaries protected with GIDs), so
we no longer need app-to-vold path translation.  This also means that
zygote only needs to bind mount the user-specific /mnt/user/n/ path
onto /storage/self/ to make legacy paths like /sdcard work.  This
grealy simplifies a lot of system code.

Many parts of the platform depend on a primary storage device always
being present, so we hack together a stub StorageVolume when vold
doesn't have a volume ready yet.

StorageVolume isn't really a volume anymore; it's the user-specific
view onto a volume, so MountService now filters and builds them
based on the calling user.  StorageVolume is now immutable, making
it easier to reason about.

Environment now builds all of its paths dynamically based on active
volumes.  Adds utility methods to turn int types and flags into
user-readable strings for debugging purposes.

Remove UMS sharing support for now, since no current devices support
it; MTP is the recommended solution going forward because it offers
better multi-user support.

Simplify unmount logic, since vold will now gladly trigger EJECTING
broadcast and kill stubborn processes.

Bug: 19993667
Change-Id: I9842280e61974c91bae15d764e386969aedcd338
2015-03-30 19:46:23 -07:00
Wenchao Tong
efd57ecab8 Keep debug information in NetworkStats files
Create two special SETs.

SET_DBG_VPN_IN is used by individual applications to know
how much traffic of the NetworkIdentity was actually moved
from a VPN app.
SET_DBG_VPN_OUT is used by the VPN app to know how much
traffic of the NetworkIdentity was deducted.

A debug application can restore the raw stats by these
entries.
  raw_traffic = recorded_entry (TAG_NONE, SET_ALL)
              + recorded_entry (TAG_NONE, SET_DBF_VPN_OUT)
              - recorded_entry (TAG_NONE, SET_DBF_VPN_IN)

The two debug SETs are not returned by
NetworkStatsService.openSession(). These debug entries are
retrieved by NetworkStatsCollection.dump().

Bug: 19536273
Change-Id: I03ef9f7667f5f2f48cbe3f6b11447fe7ead8ad3b
2015-03-27 13:49:13 -07:00
Zoltan Szatmary-Ban
b293e46f2c Data Usage public API
Added new API consisting of android.app.usage.NetworkUsageManager and
android.app.usage.NetworkUsageStats. Through them data usage on a
network interface can be programmatically queried. Both summary and
details are available.

Bug: 19208876
Change-Id: I0e0c4b37ae23ad1e589d4b0c955b93f28ba4333e
2015-03-25 15:53:38 +00:00
Wenchao Tong
fccef1da81 NetworkStatsService to adjust VPN stats before recording.
* Creates a new Parcelable class VpnInfo to hold required
  parameters for VPN stats adjustments.
* ConnectivityService to collect infomation and provide
  a list of VpnInfo, one for each user.
* NetworkStatsService passes the VpnInfo array to
  NetworkStatsRecorder.
* NetworkStatsRecorder calls NetworkStats.migrateTun()
  to do the math.
* Poll NetworkStats when the vpn application calls
  setUnderlyingNetworks().

Bug: 19536273
Change-Id: I7a4c7726b8243fead10416f7ec6eb5cf95f20183
2015-03-12 17:43:41 -07:00
John Spurlock
ad5bfa5be8 Remove unused imports in frameworks/base.
Change-Id: I031443de83f93eb57a98863001826671b18f3b17
2015-02-28 14:47:49 -05:00
Jeff Sharkey
5fb4f650df Direct notification of network interface changes.
Connectivity broadcasts recently changed and are no longer sent for
certain types of network changes.  For example, when stacked network
interfaces change for a mobile network.  To ensure that we pick up
all these details, directly wire the two services together.

Also remove some unused code for split network types.

Bug: 18666753
Change-Id: I0467bd5b330c0e0cb51af2306d821b41ad16337a
2014-12-08 14:50:14 -08:00
Paul Lawrence
19a1c3f7d9 Add mechanism for securely returning parameters though NativeDaemonConnector
If the first word in the response is {{sensitive}}, don't log the body of the
response.

Bug: 18260068
Change-Id: Ibfb5c6abab1d04b4321cdbcf6c7cf6f18f903146
2014-11-24 10:41:37 -08:00