diff options
3 files changed, 70 insertions, 25 deletions
diff --git a/tools/layoutlib/bridge/src/android/app/SystemServiceRegistry_Accessor.java b/tools/layoutlib/bridge/src/android/app/SystemServiceRegistry_Accessor.java new file mode 100644 index 000000000000..591aee07aa3f --- /dev/null +++ b/tools/layoutlib/bridge/src/android/app/SystemServiceRegistry_Accessor.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2017 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 android.app; + +/** + * Class to allow accessing {@link SystemServiceRegistry#getSystemServiceName} + */ +public class SystemServiceRegistry_Accessor { + /** + * Gets the name of the system-level service that is represented by the specified class. + */ + public static String getSystemServiceName(Class<?> serviceClass) { + return SystemServiceRegistry.getSystemServiceName(serviceClass); + } +} diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index c9b04dcf8ed4..16bf72471d90 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -41,6 +41,7 @@ import org.xmlpull.v1.XmlPullParserException; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; +import android.app.SystemServiceRegistry_Accessor; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; @@ -631,31 +632,7 @@ public class BridgeContext extends Context { @Override public String getSystemServiceName(Class<?> serviceClass) { - if (serviceClass.equals(LayoutInflater.class)) { - return LAYOUT_INFLATER_SERVICE; - } - - if (serviceClass.equals(TextServicesManager.class)) { - return TEXT_SERVICES_MANAGER_SERVICE; - } - - if (serviceClass.equals(WindowManager.class)) { - return WINDOW_SERVICE; - } - - if (serviceClass.equals(PowerManager.class)) { - return POWER_SERVICE; - } - - if (serviceClass.equals(DisplayManager.class)) { - return DISPLAY_SERVICE; - } - - if (serviceClass.equals(AccessibilityManager.class)) { - return ACCESSIBILITY_SERVICE; - } - - throw new UnsupportedOperationException("Unsupported Service: " + serviceClass); + return SystemServiceRegistry_Accessor.getSystemServiceName(serviceClass); } @Override diff --git a/tools/layoutlib/bridge/tests/src/android/app/SystemServiceRegistry_AccessorTest.java b/tools/layoutlib/bridge/tests/src/android/app/SystemServiceRegistry_AccessorTest.java new file mode 100644 index 000000000000..4f1c16c233ba --- /dev/null +++ b/tools/layoutlib/bridge/tests/src/android/app/SystemServiceRegistry_AccessorTest.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2017 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 android.app; + +import org.junit.Test; + +import android.content.Context; +import android.hardware.input.InputManager; +import android.view.WindowManager; +import android.view.accessibility.AccessibilityManager; + +import static org.junit.Assert.*; + +public class SystemServiceRegistry_AccessorTest { + @Test + public void testRegistry() { + // Just check a few services to make sure we don't break the accessor + assertEquals(Context.ACCESSIBILITY_SERVICE, + SystemServiceRegistry_Accessor.getSystemServiceName(AccessibilityManager.class)); + assertEquals(Context.INPUT_SERVICE, + SystemServiceRegistry_Accessor.getSystemServiceName(InputManager.class)); + assertEquals(Context.WINDOW_SERVICE, + SystemServiceRegistry_Accessor.getSystemServiceName(WindowManager.class)); + } +}
\ No newline at end of file |