From 3992645bf333c56669ef2fa19c26b2947884a4f3 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 25 Sep 2012 14:53:52 -0700 Subject: [PATCH] More activity tests. Change-Id: Id381ee2db55b135a0734c193fce44c55ef1cdae6 --- tests/ActivityTests/AndroidManifest.xml | 4 + .../test/activity/ActivityTestMain.java | 90 ++++++++++++++++++- .../test/activity/ServiceUserTarget.java | 41 +++++++++ .../test/activity/SingleUserService.java | 10 +++ 4 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 tests/ActivityTests/src/com/google/android/test/activity/ServiceUserTarget.java diff --git a/tests/ActivityTests/AndroidManifest.xml b/tests/ActivityTests/AndroidManifest.xml index 9dfe4a1f99c75..15d075cf55025 100644 --- a/tests/ActivityTests/AndroidManifest.xml +++ b/tests/ActivityTests/AndroidManifest.xml @@ -21,6 +21,8 @@ + + @@ -31,6 +33,8 @@ + + mConnections = new ArrayList(); class BroadcastResultReceiver extends BroadcastReceiver { @Override @@ -122,6 +128,15 @@ public class ActivityTestMain extends Activity { applyOverrideConfiguration(mOverrideConfig); } } + + UserManager um = (UserManager)getSystemService(Context.USER_SERVICE); + List users = um.getUsers(); + mSecondUser = Integer.MAX_VALUE; + for (UserInfo ui : users) { + if (ui.id != 0 && mSecondUser > ui.id) { + mSecondUser = ui.id; + } + } } @Override @@ -148,7 +163,12 @@ public class ActivityTestMain extends Activity { Log.i(TAG, "Service disconnected " + name); } }; - bindService(intent, conn, Context.BIND_AUTO_CREATE); + if (bindService(intent, conn, Context.BIND_AUTO_CREATE)) { + mConnections.add(conn); + } else { + Toast.makeText(ActivityTestMain.this, "Failed to bind", + Toast.LENGTH_LONG).show(); + } return true; } }); @@ -185,15 +205,70 @@ public class ActivityTestMain extends Activity { return true; } }); - menu.add("Send to user 1!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + menu.add("Send to user 0!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, UserTarget.class); - sendOrderedBroadcastAsUser(intent, new UserHandle(1), null, + sendOrderedBroadcastAsUser(intent, new UserHandle(0), null, + new BroadcastResultReceiver(), + null, Activity.RESULT_OK, null, null); + return true; + } + }); + menu.add("Send to user " + mSecondUser + "!").setOnMenuItemClickListener( + new MenuItem.OnMenuItemClickListener() { + @Override public boolean onMenuItemClick(MenuItem item) { + Intent intent = new Intent(ActivityTestMain.this, UserTarget.class); + sendOrderedBroadcastAsUser(intent, new UserHandle(mSecondUser), null, new BroadcastResultReceiver(), null, Activity.RESULT_OK, null, null); return true; } }); + menu.add("Bind to user 0!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override public boolean onMenuItemClick(MenuItem item) { + Intent intent = new Intent(ActivityTestMain.this, ServiceUserTarget.class); + ServiceConnection conn = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Log.i(TAG, "Service connected " + name + " " + service); + } + @Override + public void onServiceDisconnected(ComponentName name) { + Log.i(TAG, "Service disconnected " + name); + } + }; + if (bindService(intent, conn, Context.BIND_AUTO_CREATE, 0)) { + mConnections.add(conn); + } else { + Toast.makeText(ActivityTestMain.this, "Failed to bind", + Toast.LENGTH_LONG).show(); + } + return true; + } + }); + menu.add("Bind to user " + mSecondUser + "!").setOnMenuItemClickListener( + new MenuItem.OnMenuItemClickListener() { + @Override public boolean onMenuItemClick(MenuItem item) { + Intent intent = new Intent(ActivityTestMain.this, ServiceUserTarget.class); + ServiceConnection conn = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Log.i(TAG, "Service connected " + name + " " + service); + } + @Override + public void onServiceDisconnected(ComponentName name) { + Log.i(TAG, "Service disconnected " + name); + } + }; + if (bindService(intent, conn, Context.BIND_AUTO_CREATE, mSecondUser)) { + mConnections.add(conn); + } else { + Toast.makeText(ActivityTestMain.this, "Failed to bind", + Toast.LENGTH_LONG).show(); + } + return true; + } + }); menu.add("Density!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (mOverrideConfig == null) { @@ -226,6 +301,15 @@ public class ActivityTestMain extends Activity { } } + @Override + protected void onStop() { + super.onStop(); + for (ServiceConnection conn : mConnections) { + unbindService(conn); + } + mConnections.clear(); + } + private View scrollWrap(View view) { ScrollView scroller = new ScrollView(this); scroller.addView(view, new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, diff --git a/tests/ActivityTests/src/com/google/android/test/activity/ServiceUserTarget.java b/tests/ActivityTests/src/com/google/android/test/activity/ServiceUserTarget.java new file mode 100644 index 0000000000000..a7474ec9b5414 --- /dev/null +++ b/tests/ActivityTests/src/com/google/android/test/activity/ServiceUserTarget.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.test.activity; + +import android.app.Service; +import android.content.Intent; +import android.os.Binder; +import android.os.IBinder; +import android.os.UserHandle; +import android.widget.Toast; + +public class ServiceUserTarget extends Service { + Binder mBinder = new Binder(); + + @Override + public void onCreate() { + super.onCreate(); + Toast.makeText(this, + "Service created as user " + UserHandle.myUserId(), + Toast.LENGTH_LONG).show(); + } + + @Override + public IBinder onBind(Intent intent) { + return mBinder; + } +} diff --git a/tests/ActivityTests/src/com/google/android/test/activity/SingleUserService.java b/tests/ActivityTests/src/com/google/android/test/activity/SingleUserService.java index c40582a9c8ce6..e9c340fbccd09 100644 --- a/tests/ActivityTests/src/com/google/android/test/activity/SingleUserService.java +++ b/tests/ActivityTests/src/com/google/android/test/activity/SingleUserService.java @@ -20,10 +20,20 @@ import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; +import android.os.UserHandle; +import android.widget.Toast; public class SingleUserService extends Service { Binder mBinder = new Binder(); + @Override + public void onCreate() { + super.onCreate(); + Toast.makeText(this, + "Service created as user " + UserHandle.myUserId(), + Toast.LENGTH_LONG).show(); + } + @Override public IBinder onBind(Intent intent) { return mBinder;