summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnders Hammar1 <anders.hammar1@sonyericsson.com>2010-04-08 10:03:50 +0200
committerJohan Redestig <johan.redestig@sonyericsson.com>2010-06-11 14:27:29 +0200
commitb2dd90383bae9f3ca0a99b59d3f5992e7fd5ad48 (patch)
treeab7aff6275d3cc777d09398e454426884becbde4 /tests
parent3514cdc3b0f88127c418609e29fbb04abb6174cc (diff)
downloadpackages_apps_settings-b2dd90383bae9f3ca0a99b59d3f5992e7fd5ad48.zip
packages_apps_settings-b2dd90383bae9f3ca0a99b59d3f5992e7fd5ad48.tar.gz
packages_apps_settings-b2dd90383bae9f3ca0a99b59d3f5992e7fd5ad48.tar.bz2
Settings: Add a hook for operator or vendor specific settings.
The Settings application now provides a hook that can be used by an operator or a vendor specific application to add an activity of choice in the settings menu. Change-Id: Id55da9fd4262bbfc6a5abf863799c747b0d75b24
Diffstat (limited to 'tests')
-rw-r--r--tests/AndroidManifest.xml21
-rwxr-xr-xtests/res/drawable/ic_settings_applications.pngbin0 -> 1723 bytes
-rw-r--r--tests/res/layout/manufacturer_main.xml22
-rw-r--r--tests/res/layout/operator_main.xml22
-rw-r--r--tests/res/values/strings.xml6
-rw-r--r--tests/src/com/android/settings/SettingsHookTests.java137
-rw-r--r--tests/src/com/android/settings/tests/Manufacturer.java29
-rw-r--r--tests/src/com/android/settings/tests/Operator.java30
8 files changed, 267 insertions, 0 deletions
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 8a0ce21..fe4dd95 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -29,8 +29,29 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
+ <activity android:name="Operator" android:label="Operator Hook Test" >
+ <intent-filter>
+ <action android:name="com.android.settings.OPERATOR_APPLICATION_SETTING" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.title" android:resource="@string/operator_settings_title" />
+ <meta-data android:name="com.android.settings.summary" android:resource="@string/operator_settings_summary" />
+ <meta-data android:name="com.android.settings.icon" android:resource="@drawable/ic_settings_applications" />
+ </activity>
+ <activity android:name="Manufacturer" android:label="Manufacturer Hook Test" >
+ <intent-filter>
+ <action android:name="com.android.settings.MANUFACTURER_APPLICATION_SETTING" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.title" android:resource="@string/manufacturer_settings_title" />
+ <meta-data android:name="com.android.settings.summary" android:resource="@string/manufacturer_settings_summary" />
+ <meta-data android:name="com.android.settings.icon" android:resource="@drawable/ic_settings_applications" />
+ </activity>
</application>
+ <instrumentation android:name="android.test.InstrumentationTestRunner"
+ android:targetPackage="com.android.settings"
+ android:label="Settings App Tests">
+ </instrumentation>
+
<instrumentation android:name="SettingsLaunchPerformance"
android:targetPackage="com.android.settings"
android:label="Settings Launch Performance">
diff --git a/tests/res/drawable/ic_settings_applications.png b/tests/res/drawable/ic_settings_applications.png
new file mode 100755
index 0000000..5cea33f
--- /dev/null
+++ b/tests/res/drawable/ic_settings_applications.png
Binary files differ
diff --git a/tests/res/layout/manufacturer_main.xml b/tests/res/layout/manufacturer_main.xml
new file mode 100644
index 0000000..8f8c48f
--- /dev/null
+++ b/tests/res/layout/manufacturer_main.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="@string/manufacturer_hello" />
+</LinearLayout>
diff --git a/tests/res/layout/operator_main.xml b/tests/res/layout/operator_main.xml
new file mode 100644
index 0000000..3cf8e00
--- /dev/null
+++ b/tests/res/layout/operator_main.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <TextView android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:text="@string/operator_hello" />
+</LinearLayout>
diff --git a/tests/res/values/strings.xml b/tests/res/values/strings.xml
index b06782f..cd94a2d 100644
--- a/tests/res/values/strings.xml
+++ b/tests/res/values/strings.xml
@@ -20,4 +20,10 @@
<!-- Test only. Do not translate. -->
<string name="enable">Enable</string>
<string name="discoverable">Discoverable</string>
+ <string name="operator_hello">Hello Operator!</string>
+ <string name="operator_settings_title">Operator</string>
+ <string name="operator_settings_summary">Operator hook that can be used to start activity of choice</string>
+ <string name="manufacturer_hello">Hello Manufacturer!</string>
+ <string name="manufacturer_settings_title">Manufacturer</string>
+ <string name="manufacturer_settings_summary">Manufacturer hook that can be used to start activity of choice</string>
</resources>
diff --git a/tests/src/com/android/settings/SettingsHookTests.java b/tests/src/com/android/settings/SettingsHookTests.java
new file mode 100644
index 0000000..b14e5bc
--- /dev/null
+++ b/tests/src/com/android/settings/SettingsHookTests.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2010 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.android.settings;
+
+import com.android.settings.tests.Manufacturer;
+import com.android.settings.tests.Operator;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceGroup;
+import android.test.ActivityInstrumentationTestCase2;
+
+import java.util.List;
+
+/**
+ * Tests for the Settings operator/manufacturer hook.
+ *
+ * Running all tests:
+ *
+ * make SettingsTests
+ * adb push SettingsTests.apk /system/app/SettingsTests.apk
+ * adb shell am instrument \
+ * -w com.android.settings.tests/android.test.InstrumentationTestRunner
+ */
+public class SettingsHookTests extends ActivityInstrumentationTestCase2<Settings> {
+
+ private static final String PACKAGE_NAME = "com.android.settings.tests";
+
+ private static final String KEY_SETTINGS_ROOT = "parent";
+ private static final String KEY_SETTINGS_OPERATOR = "operator_settings";
+ private static final String KEY_SETTINGS_MANUFACTURER = "manufacturer_settings";
+
+ private static final String INTENT_OPERATOR_HOOK = "com.android.settings.OPERATOR_APPLICATION_SETTING";
+ private static final String INTENT_MANUFACTURER_HOOK = "com.android.settings.MANUFACTURER_APPLICATION_SETTING";
+
+ private Settings mSettings;
+
+ public SettingsHookTests() {
+ super("com.android.settings", Settings.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mSettings = getActivity();
+ }
+
+ /**
+ * Test that the operator/manufacturer settings hook test application is
+ * available and that it's installed in the device's system image.
+ */
+ public void testSettingsHookTestAppAvailable() throws Exception {
+ Context context = mSettings.getApplicationContext();
+ PackageManager pm = context.getPackageManager();
+ ApplicationInfo applicationInfo = pm.getApplicationInfo(PACKAGE_NAME, 0);
+ assertTrue((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
+ }
+
+ /**
+ * Test that the operator test activity has registered an intent-filter for
+ * an action named 'android.settings.OPERATOR_APPLICATION_SETTING'.
+ */
+ public void testOperatorIntentFilter() {
+ boolean result = false;
+ Context context = mSettings.getApplicationContext();
+ PackageManager pm = context.getPackageManager();
+ Intent intent = new Intent(INTENT_OPERATOR_HOOK);
+ List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+ for (ResolveInfo resolveInfo : list) {
+ if (resolveInfo.activityInfo.packageName.equals(PACKAGE_NAME)) {
+ result = true;
+ }
+ }
+ assertTrue("Intent-filer not found", result);
+ }
+
+ /**
+ * Test that the manufacturer test activity has registered an intent-filter
+ * for an action named 'android.settings.MANUFACTURER_APPLICATION_SETTING'.
+ */
+ public void testManufacturerIntentFilter() {
+ boolean result = false;
+ Context context = mSettings.getApplicationContext();
+ PackageManager pm = context.getPackageManager();
+ Intent intent = new Intent(INTENT_MANUFACTURER_HOOK);
+ List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+ for (ResolveInfo resolveInfo : list) {
+ if (resolveInfo.activityInfo.packageName.equals(PACKAGE_NAME)) {
+ result = true;
+ }
+ }
+ assertTrue("Intent-filer not found", result);
+ }
+
+ /**
+ * Test that the operator preference is available in the Settings
+ * application.
+ */
+ public void testOperatorPreferenceAvailable() {
+ PreferenceGroup root = (PreferenceGroup)mSettings.findPreference(KEY_SETTINGS_ROOT);
+ Preference operatorPreference = root.findPreference(KEY_SETTINGS_OPERATOR);
+ assertNotNull(operatorPreference);
+ }
+
+ /**
+ * Test that the manufacturer preference is available in the Settings
+ * application.
+ */
+ public void testManufacturerPreferenceAvailable() {
+ PreferenceGroup root = (PreferenceGroup)mSettings.findPreference(KEY_SETTINGS_ROOT);
+ Preference manufacturerHook = root.findPreference(KEY_SETTINGS_MANUFACTURER);
+ assertNotNull(manufacturerHook);
+ }
+
+}
diff --git a/tests/src/com/android/settings/tests/Manufacturer.java b/tests/src/com/android/settings/tests/Manufacturer.java
new file mode 100644
index 0000000..692e6a8
--- /dev/null
+++ b/tests/src/com/android/settings/tests/Manufacturer.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2010 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.android.settings.tests;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class Manufacturer extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.manufacturer_main);
+ }
+}
diff --git a/tests/src/com/android/settings/tests/Operator.java b/tests/src/com/android/settings/tests/Operator.java
new file mode 100644
index 0000000..8a34363
--- /dev/null
+++ b/tests/src/com/android/settings/tests/Operator.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2010 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.android.settings.tests;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class Operator extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.operator_main);
+ }
+
+}