16 Commits

Author SHA1 Message Date
Chris Tate
02088134dd Merge "Defer deleting a http cache" am: c294af5f94
am: 1aeed34905

Change-Id: I69a34d1e9662fd46574fe75a76fa7eb1b92ba055
2018-03-10 00:30:05 +00:00
Chris Tate
c294af5f94 Merge "Defer deleting a http cache" 2018-03-09 21:26:20 +00:00
Anton Hansson
a3e79fbb8c frameworks/base: Set LOCAL_SDK_VERSION where possible.
This change sets LOCAL_SDK_VERSION for all packages where
this is possible without breaking the build, and
LOCAL_PRIVATE_PLATFORM_APIS := true otherwise.

Setting one of these two will be made required soon, and this
is a change in preparation for that. Not setting LOCAL_SDK_VERSION
makes the app implicitly depend on the bootclasspath, which is
often not required. This change effectively makes depending on
private apis opt-in rather than opt-out.

Test: make relevant packages
Bug: 73535841
Change-Id: Ibcffec873a693d1c792ca210fb597d2bf37e9068
Merged-In: I4233b9091d9066c4fa69f3d24aaf367ea500f760
2018-02-28 17:15:21 +00:00
Anton Hansson
ab6ec61251 frameworks/base: Set LOCAL_SDK_VERSION where possible.
This change sets LOCAL_SDK_VERSION for all packages where
this is possible without breaking the build, and
LOCAL_PRIVATE_PLATFORM_APIS := true otherwise.

Setting one of these two will be made required soon, and this
is a change in preparation for that. Not setting LOCAL_SDK_VERSION
makes the app implicitly depend on the bootclasspath, which is
often not required. This change effectively makes depending on
private apis opt-in rather than opt-out.

Test: make relevant packages
Bug: 73535841
Change-Id: I4233b9091d9066c4fa69f3d24aaf367ea500f760
2018-02-28 15:13:23 +00:00
Hidehiko Tsuchiya
17d6768ee5 Defer deleting a http cache
Symptom:
StatementService was crashed due to the exception;
"java.lang.IllegalStateException: cache is closed"

Root cause:
The http cache is deleted at DirectStatementService#onDestroy
in main thread. If a worker thread is still alive and it tries to
access the cache, it fails with IllegalStateException.

Solution:
The request of deleting a cache was moved from the main thread to
worker. Now, the cache can be deleted safely.

Bug: 73911877
Change-Id: I61f4e62b00e35f4a272ef983758e61ef3bf2d180
2018-02-27 15:27:11 +09:00
Paul Duffin
1f49e4e3d5 Add dependencies on org.apache.http.legacy where needed
Incorporates two main changes:
* Stops statically including the org.apache.http.legacy library. That library is
  a stubs library so it makes no sense to statically include it.
* Adds uses-library declaration for org.apache.http.legacy to those packages
  that depend on org.apache.http.legacy, either directly or transitively.

The following change descriptions were generated automatically and so
may be a little repetitive. They are provided to give the reviewer
enough information to check the comments match what has actually been
changed and check the reasoning behind the changes.

* packages/StatementService/AndroidManifest.xml
    Added <uses-library> for org.apache.http.legacy to ensure classes
    are provided at runtime. It is not treated as optional as the
    application is not intended to be run on a version that does not
    provide the library, i.e. its minSdkVersion is >= M (23)

Bug: 18027885
Test: m -j32 droid && adb reboot bootloader && fastboot flashall -w
Change-Id: I96e467a1916bd6c3f4b33164fae940f322fef80c
2017-07-24 15:46:40 +01:00
Christopher Tate
eb87a4d969 Always log web link filter verification parameters
This is to support CTS's ability to check that the expected verifications
are indeed being performed by the currently active verifier.

Bug 27482754

Change-Id: Iccb9bd273c7893f04e45bfca0708dcfdde595a3e
2016-04-28 13:34:45 -07:00
Christopher Tate
d268a221dc Implement wildcard-host policy in reference autoVerify implementation
For intent filters that match "*.example.tld" hosts, we now look at
https://example.tld/... to validate the claim.

Change-Id: I9725058fa45e85c96ed4a07781b3f989ac6fd661
2016-02-19 16:48:28 -08:00
Joseph Wen
5fcbb9d0c1 Retry intent verification 3 times before failing.
BUG=21596311

Change-Id: Ia98925a4310046ef4d8117afe0b278e6a414dac6
2015-06-15 10:36:03 -04:00
Joseph Wen
871fe6ed66 Update Statement Service
* Change the well known file location to assetlinks.json.
* Cleanup http connection after verification.

BUG=21487368
BUG=21163039

Change-Id: I0d317ac32c44933af7ed9a98ff1b0efa13eb44b1
2015-06-09 16:47:50 -04:00
Joseph Wen
3bbc909926 Update Statement Service.
JSONObject parser is too lenient when parsing Json string. Security review
suggested us to use a stricter parser, which we implemented with
JsonReader in this CL.

BUG=20665035

Change-Id: I379976731a1d35ef8ec746f3a6e78be998370f00
2015-05-26 11:43:00 -04:00
Joseph Wen
b409110cc1 Update Statement Service
Remove wildcard relation support.

BUG=21343000

Change-Id: I93f4ddf05e7efed78f3ea4a477917cef2836a4a0
2015-05-22 14:07:32 -04:00
Joseph Wen
8c7d99c2b7 Update the Statement Service. DO NOT MERGE
For security reason, disallow HTTP include files if the source asset is
a HTTPS site or an Android app.
Change the include statement field name from "delegate" to "include".

Bug: 20323096
Change-Id: Ifc12b61657c9c89a670b9d7c3220853321c15dea
2015-05-20 16:37:51 -04:00
Joseph Wen
d28bb6e3ac Change the location of Brandmaster statement file.
Change the location of statement file for web asset
from /.well-known/associations.json to /.well-known/statements.json.

BUG=21153250

Change-Id: Ie8538b852d62c54254c895e0abadc7f502ea2181
2015-05-14 16:11:10 -04:00
Narayan Kamath
f51b125e45 Add org.apache.http.legacy dependency for StatementService.
Breaks non-jack builds.

bug: 20129764
Change-Id: Ib4fce285ef3501e746fe151269c8f2a813e5f9a2
2015-04-09 18:54:12 +01:00
Joseph Wen
6a34bb2d6a Implement IntentFilter verification service.
This commit adds a verifier that verifies a host delegates permission for
an app to handle Url for the host using the Statement protocol.

- Implements the Statement protocol
-- The protocol defines a file format that represents statements.
-- The protocol defines where each asset type should put their statement
declaration. For web asset, the statement file should be hosted at
<scheme>://<host>:<port>/.well-known/associations.json.

- Implements IntentFilterVerificationReceiver, an interface between
StatementService and PackageManager. PackageManager will send a
broadcast with action Intent.ACTION_INTENT_FILTER_NEEDS_VERIFICATION.
The service will process the request and returns the results by calling
PackageManager.verifyIntentFilter().

To verify an IntentFilter like this defined in Android app com.test.app
<intent-filter>
  <data android:scheme="https" />
  <data android:host="www.test.com" />
  <data android:pathPattern=".*"/>
</intent-filter>

The service will try to retrieve the statement file from
https://www.test.com:443/.well-known/associations.json and try to find
a JSON object equivalent to
{'relation': ['delegate_permission/common.handle_all_urls'],
 'target': {'namespace': 'android_app',
            'package_name': 'com.test.app',
            'sha256_cert_fingerprints': [APP_CERT_FP]}}
The entry should have the correct relation, package name, and
certificate sha256 fingerprint.

Because this implementation will send a HTTP request for each host
specified in the intent-filter in AndroidManifest.xml, to avoid overwhelming
the network at app install time, we limit the maximum number of hosts we will
verify for a single app to 10. Any app with more than 10 hosts in the
autoVerify=true intent-filter won't be auto verified.

Change-Id: I787c9d176e4110aa441eb5fe4fa9651a071c6610
2015-04-07 16:57:40 -04:00