aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cm/lib/main/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java6
-rw-r--r--src/java/cyanogenmod/app/CMContextConstants.java8
-rw-r--r--src/java/cyanogenmod/app/CMStatusBarManager.java7
-rw-r--r--tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java4
-rw-r--r--tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java4
-rw-r--r--tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileTest.java4
-rw-r--r--tests/src/org/cyanogenmod/tests/customtiles/unit/StatusBarPanelCustomTileTest.java4
7 files changed, 37 insertions, 0 deletions
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java
index ee913ed..5905836 100644
--- a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java
+++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMStatusBarManagerService.java
@@ -83,6 +83,12 @@ public class CMStatusBarManagerService extends SystemService {
@Override
public void onStart() {
+ if (!mContext.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.STATUSBAR)) {
+ Log.wtf(TAG, "CM statusbar service started by system server but feature xml not" +
+ " declared. Not publishing binder service!");
+ return;
+ }
Log.d(TAG, "registerCMStatusBar cmstatusbar: " + this);
mCustomTileListeners = new CustomTileListeners();
publishBinderService(CMContextConstants.CM_STATUS_BAR_SERVICE, mService);
diff --git a/src/java/cyanogenmod/app/CMContextConstants.java b/src/java/cyanogenmod/app/CMContextConstants.java
index 957f33c..761ce09 100644
--- a/src/java/cyanogenmod/app/CMContextConstants.java
+++ b/src/java/cyanogenmod/app/CMContextConstants.java
@@ -125,5 +125,13 @@ public final class CMContextConstants {
*/
@SdkConstant(SdkConstant.SdkConstantType.FEATURE)
public static final String HARDWARE_ABSTRACTION = "org.cyanogenmod.hardware";
+
+ /**
+ * Feature for {@link PackageManager#getSystemAvailableFeatures} and
+ * {@link PackageManager#hasSystemFeature}: The device includes the cm status bar service
+ * utilzed by the cmsdk.
+ */
+ @SdkConstant(SdkConstant.SdkConstantType.FEATURE)
+ public static final String STATUSBAR = "org.cyanogenmod.statusbar";
}
}
diff --git a/src/java/cyanogenmod/app/CMStatusBarManager.java b/src/java/cyanogenmod/app/CMStatusBarManager.java
index efc841c..d696a82 100644
--- a/src/java/cyanogenmod/app/CMStatusBarManager.java
+++ b/src/java/cyanogenmod/app/CMStatusBarManager.java
@@ -65,6 +65,13 @@ public class CMStatusBarManager {
mContext = context;
}
sService = getService();
+
+ if (context.getPackageManager().hasSystemFeature(
+ cyanogenmod.app.CMContextConstants.Features.STATUSBAR) && sService == null) {
+ throw new RuntimeException("Unable to get CMStatusBarService. The service either" +
+ " crashed, was not started, or the interface has been called to early in" +
+ " SystemServer init");
+ }
}
/**
diff --git a/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java b/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java
index 67e311c..69e9742 100644
--- a/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java
+++ b/tests/src/org/cyanogenmod/tests/customtiles/unit/CMStatusBarManagerTest.java
@@ -19,6 +19,7 @@ package org.cyanogenmod.tests.customtiles.unit;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
+import cyanogenmod.app.CMContextConstants;
import cyanogenmod.app.CMStatusBarManager;
import cyanogenmod.app.ICMStatusBarManager;
@@ -31,6 +32,9 @@ public class CMStatusBarManagerTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
+ // Only run this if we support cm status bar service
+ org.junit.Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.STATUSBAR));
mCMStatusBarManager = CMStatusBarManager.getInstance(mContext);
}
diff --git a/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java b/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java
index 5d20136..544089d 100644
--- a/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java
+++ b/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileBuilderTest.java
@@ -24,6 +24,7 @@ import android.net.Uri;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
+import cyanogenmod.app.CMContextConstants;
import cyanogenmod.app.CustomTile;
import org.cyanogenmod.tests.R;
import org.cyanogenmod.tests.customtiles.CMStatusBarTest;
@@ -39,6 +40,9 @@ public class CustomTileBuilderTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
+ // Only run this if we support cm status bar service
+ org.junit.Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.STATUSBAR));
}
@SmallTest
diff --git a/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileTest.java b/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileTest.java
index ca04f56..3863453 100644
--- a/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileTest.java
+++ b/tests/src/org/cyanogenmod/tests/customtiles/unit/CustomTileTest.java
@@ -25,6 +25,7 @@ import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.widget.RemoteViews;
+import cyanogenmod.app.CMContextConstants;
import cyanogenmod.app.CustomTile;
import org.cyanogenmod.tests.R;
@@ -39,6 +40,9 @@ public class CustomTileTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
+ // Only run this if we support cm status bar service
+ org.junit.Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.STATUSBAR));
}
@SmallTest
diff --git a/tests/src/org/cyanogenmod/tests/customtiles/unit/StatusBarPanelCustomTileTest.java b/tests/src/org/cyanogenmod/tests/customtiles/unit/StatusBarPanelCustomTileTest.java
index 537622f..6b22f38 100644
--- a/tests/src/org/cyanogenmod/tests/customtiles/unit/StatusBarPanelCustomTileTest.java
+++ b/tests/src/org/cyanogenmod/tests/customtiles/unit/StatusBarPanelCustomTileTest.java
@@ -25,6 +25,7 @@ import android.os.UserHandle;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
+import cyanogenmod.app.CMContextConstants;
import cyanogenmod.app.CustomTile;
import cyanogenmod.app.StatusBarPanelCustomTile;
import org.cyanogenmod.tests.R;
@@ -39,6 +40,9 @@ public class StatusBarPanelCustomTileTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
+ // Only run this if we support cm status bar service
+ org.junit.Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.STATUSBAR));
}
@SmallTest