Commit Graph

38067 Commits

Author SHA1 Message Date
Roshan Pius
b6665deef2 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 06fe328c4f)
2016-08-26 13:22:45 -07:00
Christopher Wiley
46c5e17aa8 Use an ArrayMap instead of HashMap to track tether interfaces
Since the number of tetherable interfaces should be small (e.g. <10),
the computational cost of a looking up objects in an ArrayMap is negligible,
and the memory required is less than a HashMap.

While here, remove some unused imports.

Change-Id: I3fb7091cfb93697d2fc6388b843d60f7e8e7e1a6
Test: Compiles.
(cherry picked from commit 36f6f4e394)
2016-08-26 13:22:42 -07:00
Christopher Wiley
f972edcae7 Consolidate cleanup logic in TetherInterfaceSM.TetheredState
This pushes all TetheredState cleanup logic into a single place.
All new unittests fail without the changes to TetherInterfaceSM.

Bug: 28915272
Test: Compiles, unittests pass, WiFi tethering continues to work.

Change-Id: Ia7bf210e00e9a54f2797baebc2e5333ce314c947
(cherry picked from commit f54c5a932a)
2016-08-26 13:22:42 -07:00
Christopher Wiley
9bc0df2482 Annotate TetherInterfaceStateMachineTest for APCT
APCT needs a little additional magic to pick up JUnit4 tests.

Bug: 28958508
Test: Tests continue to pass

Change-Id: Ia45d91bb3b06e60e3a46ffe738d4468356e066b3
(cherry picked from commit d905add474)
2016-08-26 13:22:41 -07:00
Christopher Wiley
afc46a7cbf Rely on Tethering mutex for TetherInterfaceSM
Stop passing Tethering's mutex into TetherInterfaceSM, and instead
simply rely on Tethering to acquire its own mutex when accessing
instances of TetherInterfaceSM.

While here, remove some boolean fields (previously guarded by the mutex)
which duplicate state information.

Change-Id: Ie6b2128970981786a5d64fbf700c9f3d0a6721fb
Test: Compiles, unittests pass, WiFi tethering continues to work.
Bug: 28910007
(cherry picked from commit 4bc8d6b1ac)
2016-08-26 13:22:40 -07:00
Mitchell Wills
4622c2d8b6 Rename TetherInterfaceSM to TetherInterfaceStateMachine
Change-Id: I324690b20f37cef6d58872e21b126a87d16f7ec8
(cherry picked from commit c5baad0250)
2016-08-26 13:22:39 -07:00
Christopher Wiley
179ea1b19c Remove dead code from TetherInterfaceSM
Because no code outside of unittests ever issued these commands
to TetherInterfaceSM, we never executed any of the removed codepaths.

Change-Id: Id54f6e4eaeff8b3486cd78ddcc8c2a31011e6436
Test: Compiles.  Unittests continue to pass.
Bug: 28798823
(cherry picked from commit 2ea4166c74)
2016-08-26 13:22:38 -07:00
Christopher Wiley
0f6605721e Remove transient StartingState from TetherInterfaceSM
This state immediately switched into the TetheredState.
We can safely remove it at only the expense of a misleading state
broadcast.

Bug: 28798823
Test: runtest frameworks-services -c
    com.android.server.connectivity.tethering.TetherInterfaceSMTest

Change-Id: I295d830dbdb11717d6e05161d97787ffe871beb3
(cherry picked from commit 79e7fde00d)
2016-08-26 13:22:37 -07:00
Christopher Wiley
279eca3de6 Expand test coverage of TetherInterfaceSM
Add tests for most normal case operations:
  - State machine startup.
  - Entering a tethered state (as USB interface and not)
  - Handling the first notification of an upstream interface
  - Handle changes in upstream interface
  - Handle unrequested teardown correctly

Bug: 28833951
Test: These tests pass

Change-Id: I2c0c9141bab9eaa92faec8de10fa653fb6236a74
(cherry picked from commit 1b3830a2af)
2016-08-26 13:22:36 -07:00
Christopher Wiley
08725a8c40 Add demonstration unittest for TetherInterfaceSM
Prove that the concept works by writing a trivial test.

Bug: 28833951
Test: `runtest frameworks-services -c
  com.android.server.connectivity.tethering.TetherInterfaceSMTest`

Change-Id: I51911cef7f0d5165221845070befd085497c21a6
(cherry picked from commit 1cc6ffd2b3)
2016-08-26 13:22:35 -07:00
Christopher Wiley
48c7d46506 Extract TetherInterfaceSM to its own class.
Attempt to keep all existing logic in place, except:

 + Marked a constructor as public, rather than default visible.
 + Added TAG, DBG, VDBG, and decoder ringer statics.
 + Moved static constants related to USB IPs into TetherInterfaceSM.

Bug: 28833951
Test: WiFi Tethering works on angler.

Change-Id: Id961220a9045832354cfe7381e5e9c0d8f54bf90
(cherry picked from commit e3f93b02bd)
2016-08-26 13:22:34 -07:00
Christopher Wiley
0cbdaccf71 Make Tethering.TetherInterfaceSM more self contained
Remove references from the class into the containing class:
  - Move functionality to bring up a USB interface into the class itself.
  - Extract an interface to wrap methods where TetherInterfaceSM was
    calling into other private classes of Tethering
  - Inject necessary dependendencies into TetherInterfaceSM instances.

Bug: 28833951
Test: Compiles.

Change-Id: Ic96947417cf8734072d027b0f1cba8a1a1be7a74
(cherry picked from commit 9a509ca728)
2016-08-26 13:22:34 -07:00
Christopher Wiley
d2c287326f Clean up class members in Tethering.TetherInterfaceSM
Mark final fields as such.
Group mutex protected fields together with the mutex that protects them.
Always access mutex protected fields under the mutex.

Bug: 28798823
Change-Id: I96cdd5e063babb73e9f124107c5576c47801f34b
Test: Compiles, Wifi tethering continues to work on angler.
(cherry picked from commit 7b30e548a5)
2016-08-26 13:22:31 -07:00
Christopher Wiley
26072ea082 Move android.net.util.IpUtilsTest into a util/ directory
This makes the file structure match the package declaration.

Bug: None
Change-Id: Id6999e1857322f6dfd4caf805002398f08c378d6
Test: Eclipse stops complaining.
(cherry picked from commit 5b9903189c)
2016-08-26 13:22:30 -07:00
Christopher Wiley
938f5e8dd3 Fix trivial warnings in Tethering.java
Add some missing @Override annotations.
Use template arguments to avoid explicit casting.
Ignore unclosed IndentingPrintWriter in dump().

Bug: 28798823
Test: Compiles.

Change-Id: I2cb6eb384ca23057c8059f4842b1c0d8248d03f8
(cherry picked from commit 6d475970a2)
2016-08-26 13:22:30 -07:00
Christopher Wiley
31a513b461 Remove unused method from NetworkManagementService
Bug: 28598325
Test: Builds

Change-Id: I6a226b3410cda4e12a9225741ec81cd12b48892f
(cherry picked from commit 2103e78e0c)
2016-08-26 13:20:40 -07:00
Treehugger Robot
175621f517 Merge "Fix suspend crash issue on no GPU platform." 2016-08-25 18:01:06 +00:00
Ivan.liu
984827cc9c Fix suspend crash issue on no GPU platform.
eglChooseConfig should return false only if an error occured.
If eglChooseConfig is called with a valid attribute list,
no internal EGL errors occur. And if no available config matches
the requested attribute list, no configs are returned.
Not only the return value of eglChooseConfig should be checked,
the 'num_config' out-param must be inspected too.
If no configs were returned, and no error occurred, then 'num_config' will be 0.

Change-Id: Id36d88820b8e33713bc83e0d4b90c3fee7f005fd
Signed-off-by: Xiaowen Liu <xiaowen.liu@nxp.com>
2016-08-25 10:50:54 +08:00
Adam Lesinski
401c208db8 Add WorkSource to BLE scanning API
This will allow apps that do work on behalf of others to correctly blame
those apps for the power implications of BLE scanning.

Bug:22718669
Change-Id: I1cbca8cf7bbe1ec5b804228f466fd9dd6fc68183
2016-08-22 11:40:23 -07:00
Glenn Kasten
67ffd5e617 resolve merge conflicts of c76a3ac to stage-aosp-master
Change-Id: Ifff16bdc42e8326f3f60cf4b92688c445cb4db25
2016-08-17 13:28:04 -07:00
Glenn Kasten
1fda533936 Squashed commit of the following:
commit efa6f355b06675aa4d0879fd279e22c16d5c046c
Author: Mikhail Naganov <mnaganov@google.com>
Date:   Wed Aug 10 12:25:13 2016 -0700

    MIDI: Use server-side socket in blocking mode for virtual devices

    Since virtual MIDI servers may misbehave, blocking mode will throttle
    them if clients are not coping with their sending speed.

    Bug: 29413812
    Change-Id: I9c4a2a7a7ea3ea060c93fedc7d0f033427c557c9

commit 755dfb5f83749d3963c63d98d692307f8271c804
Author: Mikhail Naganov <mnaganov@google.com>
Date:   Fri Jul 8 13:26:19 2016 -0700

    Protect MIDI framework against client blocks in MidiReceiver.onSend

    Make the server-side socket non-blocking when creating MidiOutputPort
    for clients. Thus if a client ceases to read from its side of the
    socket pair, the server will just fail to write instead of blocking.

    One drawback is that the MidiOutputPort on the client can't indicate
    that it has become dysfunctional, but it's not possible without
    changing the API.

    Bug: 29413812
    Change-Id: I9dfcbdd214a815cea8fd1365324fd78ca459268a

commit c740b13953761f58233ac651a0b5227733b1bdcc
Author: Mikhail Naganov <mnaganov@google.com>
Date:   Fri Jun 17 04:11:25 2016 -0700

    UsbMidiDevice: Clean up terminology and fix comments

    When working with physical MIDI devices, an *input* stream is used
    for reading from *output* port of the device, and vice versa. Thus,
    using "input" and "output" without specifying whether it's a stream
    or a port is confusing.

    Clarify names of counter variables, and fix a couple of comments
    that were incorrect due to this confusion. No functional changes.

    Change-Id: If561eaca4bade94e9296d2c703c9fcebc91296e2

commit 4269c6417287737624f6165a8bbeb5aa427de9a0
Author: Glenn Kasten <gkasten@google.com>
Date:   Thu May 5 18:49:16 2016 -0700

    Update MIDI package summary

    Bug: 28625060
    Change-Id: If552ca8e1a0666d402b5f536699bf3fb09c1e324

commit 862d40b73168bde7d0be5280d997985c18061014
Author: Phil Burk <philburk@google.com>
Date:   Tue Apr 19 15:56:24 2016 -0700

    MidiDevice: do not open ports on closed device

    Fix involves client side mIsDeviceClosed flag.

    Bug: 24949216
    Change-Id: I666284a787fbb9a710d2372fb424e8e54f6a2825
    Signed-off-by: Phil Burk <philburk@google.com>

commit 6f1de358b9f2616e03f4655f01454770915ddd66
Author: Phil Burk <philburk@google.com>
Date:   Mon Apr 18 16:05:28 2016 -0700

    MidiService: fix resource leak

    The proxy object was being used to match when adding or removing objects.
    But they are different each time. So now we use an asBinder() object.

    Bug: 28153736
    Change-Id: I1bccebf1e9464668db757ff08b41902d0cf0e3a7
    Signed-off-by: Phil Burk <philburk@google.com>

commit f7386bd535bb8a1d7f8df8f44a1748ab770c991a
Author: Phil Burk <philburk@google.com>
Date:   Tue Apr 5 14:19:53 2016 -0700

    MidiDevice: fix connectPorts for same Process

    If connectPorts() was called for a device in the same process then
    the connection would die when the ParcelFileDescriptor was closed.

    Bug: 26406775
    Change-Id: Id0538452593b4761ac2a93d366ade76d2e35ce73
    Signed-off-by: Phil Burk <philburk@google.com>

Change-Id: I4dfc2a2cbaf04bf1a790ae2cb39bf74fb5bb16ac
2016-08-17 08:45:39 -07:00
Phil Burk
2f2bf4014a UsbMidiDevice: fix MIDI flush()
The proxy MidiReceiver in the USB device was not forwarding the flush
command to the event scheduler.

Bug: 25511696
Change-Id: I6a4759b71bc8f9ae3e20aed1238f62a2ed405e24
Signed-off-by: Phil Burk <philburk@google.com>
2016-08-16 16:57:36 -07:00
zhangshuxiao
bad369d63e [NetworkPolicy]: Fixes the crash issues caused by null pointer.
When handleRegisterNetworkAgent in ConnectivityService,
the networkinfo of NetworkAgentInfo will be set to null.
So we need to handle the null pointer of state.networkInfo.

Change-Id: I2a278f1f1b2455057fd2ed323ff4df340c3cbca9
Signed-off-by: zhangshuxiao <zhangshuxiao@xiaomi.com>
2016-08-10 03:49:54 +00:00
joonyoung.cho
cbd4ad1f7e Merge "fix safeMode status in AppWidgetService"
am: 78a72f0698

Change-Id: I21559690f6371102cf48132d8930343923d60011
2016-08-08 21:53:34 +00:00
Treehugger Robot
78a72f0698 Merge "fix safeMode status in AppWidgetService" 2016-08-08 21:36:46 +00:00
songjinshi
ca7a43b5da Merge "Fixes the system server crash issue caused by uncatched exception."
am: b68106cf2a

Change-Id: Ia28f7bdad020dbb3695934cae1f193037de41fcb
2016-08-03 10:03:59 +00:00
Ganesh Mahendran
52fdb4750a Merge "remove x attribute of java file"
am: 554284edf3

Change-Id: I05553fd2ecc175858e0923e68e62305149e8dd3e
2016-08-03 10:03:53 +00:00
Tobias Thierer
b68106cf2a Merge "Fixes the system server crash issue caused by uncatched exception." 2016-08-03 09:54:53 +00:00
Ganesh Mahendran
7f7df65475 remove x attribute of java file
java file do not need x attribute, so this patch
removes it.

Change-Id: I807722ac3f40688f032228294d61a4266d0e9e60
Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
2016-08-02 19:33:26 +00:00
songjinshi
c5e249b9e0 Fixes the system server crash issue caused by uncatched exception.
The restat method of the StatFs may throw an IllegalArgumentException,
so we must to catch it and throw an IOException for the caller
of the trimToFit(),this fix can improve system stability.

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

Change-Id: I54a2f569eea67d3ab628944e3586ca918ec70283
Signed-off-by: songjinshi <songjinshi@xiaomi.com>
2016-08-02 09:47:09 +08:00
Christopher Ferris
8f7223e420 Merge \"Remove dependency on android_alarm.h.\"
am: c95e7a3014

Change-Id: I19908fa29772c89b8112e371702da6197b20465d
2016-07-20 18:10:47 +00:00
Christopher Ferris
338893e47e Remove dependency on android_alarm.h.
android_alarm.h no longer exists in upstream android kernels. Since it's
only used by the AlarmManagerService, copy in the parts of the file that
are needed into that one file.

Bug: 30072483
Change-Id: I5c994dfa2ad261da48a67e5c35dc4b6618b82aa1
2016-07-19 12:23:26 -07:00
Hugo Benichi
e82b43f77e Merge \"Fix unsafe concurrent access in LegacyTypeTracker\"
am: ee4c8fb9eb

Change-Id: I928b2c6ef8e20e197425c214242287185a9daa06
2016-07-12 13:15:41 +00:00
Hugo Benichi
5224f00b51 Fix unsafe concurrent access in LegacyTypeTracker
This patch adds synchronization inside LegacyTypeTracker so that
getNetworkForType() can safely run concurrently with remove().

Without synchronization if remove() removes the last network for a
given type while getNetworkForType() runs for the same type, it is
possible that getNetworkForType tries to access the head of an empty
list, resulting in a runtime exception.

This issue was found by zoran.jovanovic@sonymobile.com who proposed a
fix in AOSP (Change-Id: Ia963662edb9d643790e8d9439e4dbdcac4c2187b).

This patch differs from the fix proposed by the bug reporter and tries
instead to do the minimum amount of locking to make getNetworkForType
safe.

Bug: 29030387

(cherry picked from commit 78caa25870)

Change-Id: I915aac527fc8828b32bf35fee870add2dfb11d8d
2016-07-12 21:56:40 +09:00
Todd Kennedy
9a3fbe1162 Merge "Solve the infinite loop on clearExternalStorageDataSync" 2016-07-11 14:32:02 +00:00
Shibin George
2c565826ba Merge \"Resolve deadlock between ActivityManagerService and PowerManagerService\"
am: 06561db207

Change-Id: I7f78cf1ef0c490aceb527dbc82228d00fae2f7e4
2016-07-07 15:31:16 +00:00
Shibin George
43f5de0125 Resolve deadlock between ActivityManagerService and PowerManagerService
ActivityManagerService lock and PowerManagerService.mLock can
be acquired in different threads in different orders.
registerReceiver() here tries to acquire ActivityManagerService
internally while holding mLock. A particular call from
WindowManagerService acquires these locks in reverse order.
This deadlock can be resolved by moving registerReceiver()
to another thread.

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

Change-Id: I12cd610e61f212a3fb5e441f2c7a557c90afbda4
Signed-off-by: Shibin George <shibing@codeaurora.org>
2016-07-07 19:45:35 +05:30
Treehugger Robot
fcae61308c Merge "MediaSession: Use mHandler for sending a pending intent" 2016-07-06 07:58:53 +00:00
Jae Seo
5f5bd8848c resolve merge conflicts of 5b6c034 to stage-aosp-master
Change-Id: I664240e9a9b2693f912b5b2a8a1731d08f109bfe
2016-07-06 00:45:15 -07:00
Shibin George
c4f28a4196 Fix deadlock in MediaSessionService during getCurrentUser()
SystemServiceMAnager.stopUser() acquires ActivityManagerService
lock first and then acquires MediaSessionService.mLock during
onStopUser(). MediaSessionService.onSwitchUser(), on the other
hand, acquires mLock first and ActivityManagerService lock next.
This is a potential deadlock situation which can be resolved by
moving getCurrentUser() out of synchronized block. This will
release mLock sooner and avoid the deadlock.

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

Change-Id: Ieb4520d60af6ca38496ca933da0cd9ae096a9408
Signed-off-by: Shibin George <shibing@codeaurora.org>
2016-07-06 05:00:43 +00:00
Svet Ganov
5f7f3fa7a9 Merge \"Mark app pending intents in notification extras\" into nyc-dev
am: b2cd9c95bf

Change-Id: Iac3970763cbaac36ede1b17df7e65001ad6c8447
2016-06-28 00:46:58 +00:00
Svetoslav Ganov
b2cd9c95bf Merge "Mark app pending intents in notification extras" into nyc-dev 2016-06-28 00:42:24 +00:00
Svet Ganov
ddb948896c Mark app pending intents in notification extras
We need to make every peniding intent that went in the notification
system to allow special handling of such intents when fired by a
notification listener. If a pending intent from a notification
is sent from a notification listener, we white-list the source app
to run in data saver mode for a short period of time. The problem is
that actions and the notificaion can have extras which bundles may
contain pending intents but the system cannot look into the bundles
as they may contain custom parcelable objects. To address this we
keep a list of all pending intents in the notification allowing
the system to access them without touching the bundle. Currently
the pending intents are written to the parcel twice, once in the
bundle and once as the explicit list. We can come up with a scheme
to optimize this but since pending itents are just a binder pointer
it is not worth the excecise.

bug:29480440

Change-Id: I7328a47017ca226117adf7054900836619f5679b
2016-06-27 17:32:25 -07:00
Dianne Hackborn
9525331c5e Merge \"Fix bug where process whitelist manager state would not be correct.\" into nyc-dev
am: a39d380651

Change-Id: I78f5a67a6b08f1275c66b7543e91b2bd016d621e
2016-06-27 23:57:05 +00:00
Dianne Hackborn
a39d380651 Merge "Fix bug where process whitelist manager state would not be correct." into nyc-dev 2016-06-27 23:52:01 +00:00
Pavlin Radoslavov
e7ce279d9a Merge \"Add extra waiting when switching users\" into nyc-dev
am: 4d6be6b308

Change-Id: I3c54d6666d8327a0915d839ec02715961e62565a
2016-06-27 23:46:30 +00:00
Andre Eisenbach
4d6be6b308 Merge "Add extra waiting when switching users" into nyc-dev 2016-06-27 23:42:17 +00:00
Christopher Tate
0bdb4cef4a Merge \"Fix #29737133 : content-trigger jobs not running properly\" into nyc-dev
am: f480698298

Change-Id: I56aa1a6ecb2409b905de4a8419e1b76523120efc
2016-06-27 23:24:03 +00:00
Chris Tate
f480698298 Merge "Fix #29737133 : content-trigger jobs not running properly" into nyc-dev 2016-06-27 23:18:31 +00:00
Christopher Tate
4b425712c6 Fix #29737133 : content-trigger jobs not running properly
When removing the ContentObserver wrapper from our internal
bookkeeping we were using the wrong key.  That led to future
re-registrations thinking they were reusing a currently-
registered observers, but instead never getting onChange()
notifications.

Change-Id: Id3111db057ae63194049d7d48d45b75be6bb0000
2016-06-27 16:12:41 -07:00