summaryrefslogtreecommitdiff
path: root/tests/UsageStatsTest
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2017-05-15 09:29:34 -0700
committerMakoto Onuki <omakoto@google.com>2017-05-16 12:33:43 -0700
commitad623015a119efe9b63f594af9c4703f40a0c27b (patch)
treec155e3ae4f41ce3f5798ad3117925c2e83195487 /tests/UsageStatsTest
parent28f0fd7a2d5b26a728d72984a8cf69ac0fcc4400 (diff)
Restrict access to instant app data in usage stats
- Events are obfuscated based on whether the app was instant or not at the time each event was logged. - UsageStats are obfuscated based on whether each app is instant or not at the moment. Bug 38202133 Test: Manual test using UsageStatsTest and instant apps Change-Id: I3c74309196b88d010d317cb0dd6749bf4624e876
Diffstat (limited to 'tests/UsageStatsTest')
-rw-r--r--tests/UsageStatsTest/Android.mk2
-rw-r--r--tests/UsageStatsTest/AndroidManifest.xml8
-rw-r--r--tests/UsageStatsTest/res/menu/main.xml2
-rw-r--r--tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java43
4 files changed, 54 insertions, 1 deletions
diff --git a/tests/UsageStatsTest/Android.mk b/tests/UsageStatsTest/Android.mk
index 5f7467a301d2..6b5c9998fc06 100644
--- a/tests/UsageStatsTest/Android.mk
+++ b/tests/UsageStatsTest/Android.mk
@@ -8,6 +8,8 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
+LOCAL_CERTIFICATE := platform
+
LOCAL_PACKAGE_NAME := UsageStatsTest
include $(BUILD_PACKAGE)
diff --git a/tests/UsageStatsTest/AndroidManifest.xml b/tests/UsageStatsTest/AndroidManifest.xml
index 589674a8c0ad..c27be7b2d5bf 100644
--- a/tests/UsageStatsTest/AndroidManifest.xml
+++ b/tests/UsageStatsTest/AndroidManifest.xml
@@ -1,7 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Note: Add android:sharedUserId="android.uid.system" to the root element to simulate the system UID
+ caller case.
+-->
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.tests.usagestats">
+ package="com.android.tests.usagestats"
+ >
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
diff --git a/tests/UsageStatsTest/res/menu/main.xml b/tests/UsageStatsTest/res/menu/main.xml
index e781058f1e42..4ccbc81ab317 100644
--- a/tests/UsageStatsTest/res/menu/main.xml
+++ b/tests/UsageStatsTest/res/menu/main.xml
@@ -2,4 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/log"
android:title="View Log"/>
+ <item android:id="@+id/call_is_app_inactive"
+ android:title="Call isAppInactive()"/>
</menu>
diff --git a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java
index c08c1a3f61c8..9429d9bbf89b 100644
--- a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java
+++ b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java
@@ -16,12 +16,16 @@
package com.android.tests.usagestats;
+import android.app.AlertDialog;
import android.app.ListActivity;
import android.app.usage.UsageStats;
import android.app.usage.UsageStatsManager;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
+import android.text.InputType;
+import android.text.TextUtils;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -30,6 +34,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
+import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
@@ -69,6 +74,9 @@ public class UsageStatsActivity extends ListActivity {
case R.id.log:
startActivity(new Intent(this, UsageLogActivity.class));
return true;
+ case R.id.call_is_app_inactive:
+ callIsAppInactive();
+ return true;
default:
return super.onOptionsItemSelected(item);
@@ -81,6 +89,41 @@ public class UsageStatsActivity extends ListActivity {
updateAdapter();
}
+ private void callIsAppInactive() {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle("Enter package name");
+ final EditText input = new EditText(this);
+ input.setInputType(InputType.TYPE_CLASS_TEXT);
+ input.setHint("com.android.tests.usagestats");
+ builder.setView(input);
+
+ builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ final String packageName = input.getText().toString().trim();
+ if (!TextUtils.isEmpty(packageName)) {
+ showInactive(packageName);
+ }
+ }
+ });
+ builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ builder.show();
+ }
+
+ private void showInactive(String packageName) {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setMessage(
+ "isAppInactive(\"" + packageName + "\") = "
+ + (mUsageStatsManager.isAppInactive(packageName) ? "true" : "false"));
+ builder.show();
+ }
+
private void updateAdapter() {
long now = System.currentTimeMillis();
long beginTime = now - USAGE_STATS_PERIOD;