- Don't publish shortcuts when their target activities are not main.
- Only scan manifest shortcuts for main activities.
- When an app is updated, remove shortcuts that no longer belong to
valid main activities.
- Also re-publish manifest shortcuts after 'clear data'
- Also listen to PACKAGE_CHANGED and disable/re-publish shortcuts
properly.
Bug 29355786
Bug 29582255
Bug 29601844
Change-Id: I6c701ce669cf30a227bc2af4aa01de467ef73e3a
- Print "Success" when it went well.
- Catch all exceptions and print error message, not just
RemoteExceptions
- Update the shortcut manger test utility to match the new behavior
Bug 29612099
Change-Id: If6a80241ea5e8ef0b2d3f961d1442e730b908764
A malformed RA could cause the Ra constructor in ApfFilter to
enter an infinite loop while holding the class lock. This blocks
IpManager until reboot and drains the battery.
Bug: 29586253
Change-Id: Idaa46b3bc50371db076630881883807c2fa21674
- Also include "activity" in the key fields, as this is now an
important field.
- Also optimize ShortcutInfo parceling for the "key field only" case.
Bug 29394043
Bug 29451629
Change-Id: I61b2bc2f61ad6ebdcbaf6d02f1bd88777c45a7f0
currently with one data point the estimator is biased high. If we don't
have any data we want to be biased low to allow the first interaction
to be an isolated burst.
Also add metrics for enqueue rate to make it easier to debug this
code in the future (currently we only have metrics after the
rate limiter).
Bug: 29379789
Change-Id: I7b1d379290a55f120d039fd29d1bc0abbc6d4932
Use the standard <intent> tag instead of custom tags.
- Also fix setDynamicShortcuts(), which was broken in the previous CL.
- Also tolerate runtime exceptions while parsing XMLs
- Also fix b/29422018 while I'm at it
Bug 29390156
Bug 29077932
Bug 29422018
Change-Id: I2756c9d66c6d7b2962a982d9e57a7d84a5755b28
A package can be uninstalled for the system user but still be installed
on the device. Currently, we do not use such a package as WebView
implementation which means we fall back to using the fallback WebView
package.
However, if the fallback package is not valid (because it needs to be
updated first) loading WebView will fail.
With this change we fetch allow the fetching of information from
packages that are uninstalled for the system user so that we can still
load WebView when the only valid WebView provider is uninstalled for the
system user.
Also listen to package additions/changes/removals for all users -
otherwise we won't notice when a package becomes replaced if it was
already uninstalled for the system user.
Bug: 29321185
Change-Id: Ia23c4493844877aea1b4eab7e666fd37540c4f97
When the user does an "inline reply", we consider the notification
publisher app is "activated" and reset the shortcut throttling.
Bug 28705275
Change-Id: Ic9ffa13635274ead7e9d1e832cd31dea997830aa
( cherry-pick of de4819dc82b734036b22416228327d2712e01884 )
Previously, Tethering would answer requests for current tethering state
by calling methods on instances of TetherInterfaceStateMachine to build
up that state. This is incorrect, since state queries can come in on an
arbitrary thread, independent of updates to the state machines
instances.
Fix this by:
- Altering TetherInterfaceStateMachine to push consistent state
snapshots to Tethering via notifyInterfaceStateChange()
- Storing the last state snapshot in Tethering.mTetherStates
- Removing public methods to query TetherInterfaceStateMachine state.
- Consistently synchronizing access to Tethering.mTetherStates
Bug: 29009601
Test: WiFi Tethering continues to work, unittests continue to pass
Change-Id: Ied334f5e8739bc3aff1b08a1079095b9cc2a7958
* changes:
Tethering: Own WiFi tethering state and lifetime
Use an ArrayMap instead of HashMap to track tether interfaces
Consolidate cleanup logic in TetherInterfaceSM.TetheredState
Annotate TetherInterfaceStateMachineTest for APCT
Rely on Tethering mutex for TetherInterfaceSM
Rename TetherInterfaceSM to TetherInterfaceStateMachine
Remove dead code from TetherInterfaceSM
Remove transient StartingState from TetherInterfaceSM
Expand test coverage of TetherInterfaceSM
Add demonstration unittest for TetherInterfaceSM
Extract TetherInterfaceSM to its own class.
Make Tethering.TetherInterfaceSM more self contained
Clean up class members in Tethering.TetherInterfaceSM
Fix trivial warnings in Tethering.java
* changes:
Give WakeupMessage the ability to transport an object as well.
Don't treat the lingerExpired broadcast specially.
Add a test for mobile data always on.
Add a FakeSettingsProvider and use it in ConnectivityServiceTest.
NetworkMonitor no longer uses the broadcast for lingering, it
uses WakeupMessage instead.
Bug: 23113288
Change-Id: Idb0c55fc68cb8f45b3213c7134213904f227852e
This class makes it easier to test code that uses Settings:
1. Real device or emulator settings don't affect the code under
test; all settings always start off empty.
2. It's possible to change settings from the test without
affecting system settings.
3. No changes are needed to the code under test. The changes to
the tests are simple: just add a fake ContentResolver to
whatever mock Context is already used by the test, and make
that ContentResolver use the fake provider.
Bug: 23113288
Change-Id: I5e7e5a87571444ae49ccf551705620675a36cd17
- When an app is upgraded, all the resource IDs may change. So
if a shortcut is previously published with an icon for res ID 100
and the publisher is upgraded, resource #100 may refer to something
different.
- So now the service also remembers resource names for icon resources,
as wells as string resources. When an app is updated, the service
fetch the updated resource IDs by name.
- Also extract all string resources when a shortcut is published
and persist them, so that even when the original string resources are
removed from the app, the launcher can still show the extracted strings.
- When the system locale changes, re-extract all string resources.
- Also really hide the constants in ShortcutInfo that were
accidentally made public.
Change-Id: I23c29b45c1de5d76175229190a1533c9c62c5960
SM needs to check all packages when a user is unlocked in case
any apps have been upgraded while the user was not running,
in which case it'll publish the manifest shortcuts.
Currently it actually scans all apps' manifests.
This CL optimizes it by remembering the last scan time (for each user)
and checks only the packages that have been updated since then.
Bug 29069154
Change-Id: Id10b6be8915fe7c1e26daccde7951ddbd01ea452
( cherry-pick of f1315c3cd6d77e812ae32fe038b4e8bf2e70d5bf )
- Add logic to Tethering to track whether the user has requested
tethering via WiFi.
- Subscribe to intents regarding soft AP state to enable and
disable tethering when the AP comes up or goes down.
- Refactor IP configuration logic to do configuration for WiFi
as well as USB.
Bug: 29054780
Test: WiFi tethering continues to work on angler
Tethering related unittests continue to pass.
Change-Id: I6eff2573ca3fd11fabcf138c468ba517ff2daf65
( cherry-pick of f54c5a932a9ac4a491ce775b21ff8288e40b5bad )
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-pick of d905add4747d6060355c44dac1dce0eccd8014fb )
APCT needs a little additional magic to pick up JUnit4 tests.
Bug: 28958508
Test: Tests continue to pass
Change-Id: Ia45d91bb3b06e60e3a46ffe738d4468356e066b3
( cherry-pick of 4bc8d6b1ac0cb7d4192c829a44d988516f0adbdb )
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-pick of 2ea4166c74e70d3796b06c91f37eb03eecdf4773 )
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-pick of 79e7fde00d74c2b6d329f7341029ea6b04ac2d97 )
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-pick of 1b3830a2afab565a38572ac5c3238a171b2d56d4 )
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-pick of 1cc6ffd2b32846996520fdf43125da3ec2bbdf49 )
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