Snap for 4407597 from 9076a39ba3e851edd74be918f50d8aba70396324 to oc-mr1-release

Change-Id: I5f01ff0bbb446a98dd9303ab32e2718d998b60ea
diff --git a/CleanSpec.mk b/CleanSpec.mk
index d828faa..67d5bef 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -57,6 +57,9 @@
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android.car_intermediates/src/android/car/hardware/ICarDiagnostic*.java)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android.car7_intermediates/src/android/car/hardware/ICarDiagnostic*.java)
 
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android.car7_intermediates/)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android.car_intermediates/)
+
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/car-lib/src/android/car/Car.java b/car-lib/src/android/car/Car.java
index c0b83f7..9a9e531 100644
--- a/car-lib/src/android/car/Car.java
+++ b/car-lib/src/android/car/Car.java
@@ -32,7 +32,6 @@
 import android.car.navigation.CarNavigationStatusManager;
 import android.car.CarBluetoothManager;
 import android.car.test.CarTestManagerBinderWrapper;
-import android.car.vms.VmsSubscriberManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -135,12 +134,6 @@
     public static final String BLUETOOTH_SERVICE = "car_bluetooth";
 
     /**
-     * @FutureFeature Cannot drop due to usage in non-flag protected place.
-     * @hide
-     */
-    public static final String VMS_SUBSCRIBER_SERVICE = "vehicle_map_subscriber_service";
-
-    /**
      * Service for testing. This is system app only feature.
      * Service name for {@link CarTestManager}, to be used in {@link #getCarManager(String)}.
      * @hide
@@ -261,22 +254,6 @@
             "android.car.permission.CAR_TEST_SERVICE";
 
     /**
-     * Permissions necessary to access VMS publisher APIs.
-     *
-     * @hide
-     */
-    @FutureFeature
-    public static final String PERMISSION_VMS_PUBLISHER = "android.car.permission.VMS_PUBLISHER";
-
-    /**
-     * Permissions necessary to access VMS subscriber APIs.
-     *
-     * @hide
-     */
-    @FutureFeature
-    public static final String PERMISSION_VMS_SUBSCRIBER = "android.car.permission.VMS_SUBSCRIBER";
-
-    /**
      * Permissions necessary to read diagnostic information, including vendor-specific bits.
      *
      * @hide
@@ -654,11 +631,6 @@
                  * only pass binder wrapper so that CarTestManager can be constructed outside. */
                 manager = new CarTestManagerBinderWrapper(binder);
                 break;
-            case VMS_SUBSCRIBER_SERVICE:
-                if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-                    manager = new VmsSubscriberManager(binder, mEventHandler);
-                }
-                break;
             case BLUETOOTH_SERVICE:
                 manager = new CarBluetoothManager(binder, mContext);
         }
diff --git a/car-lib/src/android/car/vms/IVmsPublisherClient.aidl b/car-lib/src/android/car/vms/IVmsPublisherClient.aidl
deleted file mode 100644
index 96b993b..0000000
--- a/car-lib/src/android/car/vms/IVmsPublisherClient.aidl
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.vms.IVmsPublisherService;
-import android.car.vms.VmsSubscriptionState;
-
-/**
- * @hide
- */
-interface IVmsPublisherClient {
-    /**
-    * Once the VmsPublisherService is bound to the client, this callback is used to set the
-    * binder that the client can use to invoke publisher services. This also gives the client
-    * the token it should use when calling the service.
-    */
-    oneway void setVmsPublisherService(in IBinder token, IVmsPublisherService service) = 0;
-
-    /**
-     * The VmsPublisherService uses this callback to notify about subscription changes.
-     * @param subscriptionState all the layers that have subscribers and a sequence number,
-     *                          clients should ignore any packet with a sequence number that is less
-     *                          than the highest sequence number they have seen thus far.
-     */
-    oneway void onVmsSubscriptionChange(in VmsSubscriptionState subscriptionState) = 1;
-}
diff --git a/car-lib/src/android/car/vms/IVmsPublisherService.aidl b/car-lib/src/android/car/vms/IVmsPublisherService.aidl
deleted file mode 100644
index 3c26a1b..0000000
--- a/car-lib/src/android/car/vms/IVmsPublisherService.aidl
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsLayersOffering;
-import android.car.vms.VmsSubscriptionState;
-
-/**
- * Exposes publisher services to VMS clients.
- *
- * @hide
- */
-interface IVmsPublisherService {
-    /**
-     * Client call to publish a message.
-     */
-    oneway void publish(in IBinder token, in VmsLayer layer, int publisherId, in byte[] message) = 0;
-
-    /**
-     * Returns the list of VmsLayers that has any clients subscribed to it.
-     */
-    VmsSubscriptionState getSubscriptions() = 1;
-
-    /**
-     * Sets which layers the publisher can publish under which dependencties.
-     */
-    oneway void setLayersOffering(in IBinder token, in VmsLayersOffering offering) = 2;
-
-    /**
-     * The first time a publisher calls this API it will store the publisher info and assigns the
-     * publisher an ID. Between reboots, subsequent calls with the same publisher info will
-     * return the same ID so that a restarting process can obtain the same ID as it had before.
-     */
-    int getPublisherId(in byte[] publisherInfo) = 3;
-}
diff --git a/car-lib/src/android/car/vms/IVmsSubscriberClient.aidl b/car-lib/src/android/car/vms/IVmsSubscriberClient.aidl
deleted file mode 100644
index d5b5606..0000000
--- a/car-lib/src/android/car/vms/IVmsSubscriberClient.aidl
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-
-/**
- * @hide
- */
-oneway interface IVmsSubscriberClient {
-    /**
-     * A VmsService uses this callback to pass messages to subscribers.
-     */
-    void onVmsMessageReceived(in VmsLayer layer, in byte[] payload) = 0;
-
-    void onLayersAvailabilityChanged(in List<VmsAssociatedLayer> availableLayers) = 1;
-}
diff --git a/car-lib/src/android/car/vms/IVmsSubscriberService.aidl b/car-lib/src/android/car/vms/IVmsSubscriberService.aidl
deleted file mode 100644
index d10a6e4..0000000
--- a/car-lib/src/android/car/vms/IVmsSubscriberService.aidl
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.vms.IVmsSubscriberClient;
-import android.car.vms.VmsLayer;
-
-/**
- * @hide
- */
-interface IVmsSubscriberService {
-    /**
-     * Adds a subscriber to notifications only.
-     * Should be called when a subscriber registers its callback, and before any subscription to a
-     * layer is made.
-     */
-    void addVmsSubscriberToNotifications(
-            in IVmsSubscriberClient subscriber) = 0;
-
-    /**
-     * Adds a subscriber to a VMS layer.
-     */
-    void addVmsSubscriber(
-            in IVmsSubscriberClient subscriber,
-            in VmsLayer layer) = 1;
-
-    /**
-     * Adds a subscriber to all actively broadcasted layers.
-     * Publishers will not be notified regarding this request so the state of the service will not
-     * change.
-     */
-    void addVmsSubscriberPassive(in IVmsSubscriberClient subscriber) = 2;
-
-    /**
-     * Adds a subscriber to a VMS layer from a specific publisher.
-     */
-    void addVmsSubscriberToPublisher(
-            in IVmsSubscriberClient subscriber,
-            in VmsLayer layer,
-            int publisherId) = 3;
-
-    /**
-     * Removes a subscriber to notifications only.
-     * Should be called when a subscriber unregisters its callback, and after all subscriptions to
-     * layers are removed.
-     */
-    void removeVmsSubscriberToNotifications(
-            in IVmsSubscriberClient subscriber) = 4;
-
-    /**
-     * Removes a subscriber to a VMS layer.
-     */
-    void removeVmsSubscriber(
-            in IVmsSubscriberClient subscriber,
-            in VmsLayer layer) = 5;
-
-    /**
-     * Removes a subscriber to all actively broadcasted layers.
-     * Publishers will not be notified regarding this request so the state of the service will not
-     * change.
-     */
-    void removeVmsSubscriberPassive(
-            in IVmsSubscriberClient subscriber) = 6;
-
-    /**
-     * Removes a subscriber to a VMS layer from a specific publisher.
-     */
-    void removeVmsSubscriberToPublisher(
-            in IVmsSubscriberClient subscriber,
-            in VmsLayer layer,
-            int publisherId) = 7;
-
-    /**
-     * Returns a list of available layers from the closure of the publishers offerings.
-     */
-    List<VmsLayer> getAvailableLayers() = 8;
-
-    /**
-     *  Returns a the publisher information for a publisher ID.
-     */
-    byte[] getPublisherInfo(in int publisherId) = 9;
-}
diff --git a/car-lib/src/android/car/vms/VmsAssociatedLayer.aidl b/car-lib/src/android/car/vms/VmsAssociatedLayer.aidl
deleted file mode 100644
index c2cf271..0000000
--- a/car-lib/src/android/car/vms/VmsAssociatedLayer.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 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.car.vms;
-
-parcelable VmsAssociatedLayer;
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsAssociatedLayer.java b/car-lib/src/android/car/vms/VmsAssociatedLayer.java
deleted file mode 100644
index 023fd9c..0000000
--- a/car-lib/src/android/car/vms/VmsAssociatedLayer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.annotation.FutureFeature;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.*;
-
-/**
- * A VMS Layer with a list of publisher IDs it is associated with.
- *
- * @hide
- */
-@FutureFeature
-public final class VmsAssociatedLayer implements Parcelable {
-
-    // The VmsLayer.
-    private final VmsLayer mLayer;
-
-    // The IDs of the publishers that can publish this VmsLayer.
-    private final Set<Integer> mPublisherIds;
-
-    public VmsAssociatedLayer(VmsLayer layer, Set<Integer> publisherIds) {
-        mLayer = layer;
-        mPublisherIds = Collections.unmodifiableSet(publisherIds);
-    }
-
-    public VmsLayer getVmsLayer() {
-        return mLayer;
-    }
-
-    public Set<Integer> getPublisherIds() {
-        return mPublisherIds;
-    }
-
-    @Override
-    public String toString() {
-        return "VmsAssociatedLayer{ VmsLayer: " + mLayer + ", Publishers: " + mPublisherIds + "}";
-    }
-
-    // Parcelable related methods.
-    public static final Parcelable.Creator<VmsAssociatedLayer> CREATOR =
-            new Parcelable.Creator<VmsAssociatedLayer>() {
-                public VmsAssociatedLayer createFromParcel(Parcel in) {
-                    return new VmsAssociatedLayer(in);
-                }
-
-                public VmsAssociatedLayer[] newArray(int size) {
-                    return new VmsAssociatedLayer[size];
-                }
-            };
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeParcelable(mLayer, flags);
-        out.writeArray(mPublisherIds.toArray());
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (!(o instanceof VmsAssociatedLayer)) {
-            return false;
-        }
-        VmsAssociatedLayer p = (VmsAssociatedLayer) o;
-        return Objects.equals(p.mLayer, mLayer) && p.mPublisherIds.equals(mPublisherIds);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(mLayer, mPublisherIds);
-    }
-
-    private VmsAssociatedLayer(Parcel in) {
-        mLayer = in.readParcelable(VmsLayer.class.getClassLoader());
-
-        mPublisherIds = Collections.unmodifiableSet(
-                new HashSet<>(Arrays.asList(
-                        (Integer[]) in.readArray(Integer.class.getClassLoader()))));
-    }
-}
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsLayer.aidl b/car-lib/src/android/car/vms/VmsLayer.aidl
deleted file mode 100644
index ff0768a..0000000
--- a/car-lib/src/android/car/vms/VmsLayer.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 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.car.vms;
-
-parcelable VmsLayer;
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsLayer.java b/car-lib/src/android/car/vms/VmsLayer.java
deleted file mode 100644
index 9125796..0000000
--- a/car-lib/src/android/car/vms/VmsLayer.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.annotation.FutureFeature;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.Objects;
-
-/**
- * A VMS Layer which can be subscribed to by VMS clients.
- *
- * @hide
- */
-@FutureFeature
-public final class VmsLayer implements Parcelable {
-
-    // The layer Type.
-    private int mType;
-
-    // The layer Subtype.
-    private int mSubtype;
-
-    // The layer version.
-    private int mVersion;
-
-    public VmsLayer(int type, int subtype, int version) {
-        mType = type;
-        mSubtype = subtype;
-        mVersion = version;
-    }
-
-    public int getType() {
-        return mType;
-    }
-
-    public int getSubtype() {
-        return mSubtype;
-    }
-
-    public int getVersion() {
-        return mVersion;
-    }
-
-    /**
-     * Checks the two objects for equality by comparing their IDs and Versions.
-     *
-     * @param o the {@link VmsLayer} to which this one is to be checked for equality
-     * @return true if the underlying objects of the VmsLayer are both considered equal
-     */
-    @Override
-    public boolean equals(Object o) {
-        if (!(o instanceof VmsLayer)) {
-            return false;
-        }
-        VmsLayer p = (VmsLayer) o;
-        return Objects.equals(p.mType, mType) &&
-            Objects.equals(p.mSubtype, mSubtype) &&
-            Objects.equals(p.mVersion, mVersion);
-    }
-
-    /**
-     * Compute a hash code similarly tp {@link android.util.Pair}
-     *
-     * @return a hashcode of the Pair
-     */
-    @Override
-    public int hashCode() {
-        return Objects.hash(mType, mSubtype, mVersion);
-    }
-
-    @Override
-    public String toString() {
-        return "VmsLayer{ Type: " + mType + ", Sub type: " + mSubtype + ", Version: " + mVersion + "}";
-    }
-
-
-    // Parcelable related methods.
-    public static final Parcelable.Creator<VmsLayer> CREATOR = new
-            Parcelable.Creator<VmsLayer>() {
-                public VmsLayer createFromParcel(Parcel in) {
-                    return new VmsLayer(in);
-                }
-
-                public VmsLayer[] newArray(int size) {
-                    return new VmsLayer[size];
-                }
-            };
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeInt(mType);
-        out.writeInt(mSubtype);
-        out.writeInt(mVersion);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    private VmsLayer(Parcel in) {
-        readFromParcel(in);
-    }
-
-    private void readFromParcel(Parcel in) {
-        mType = in.readInt();
-        mSubtype = in.readInt();
-        mVersion = in.readInt();
-    }
-}
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsLayerDependency.aidl b/car-lib/src/android/car/vms/VmsLayerDependency.aidl
deleted file mode 100644
index 3e64001..0000000
--- a/car-lib/src/android/car/vms/VmsLayerDependency.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 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.car.vms;
-
-parcelable VmsLayerDependency;
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsLayerDependency.java b/car-lib/src/android/car/vms/VmsLayerDependency.java
deleted file mode 100644
index 3b82775..0000000
--- a/car-lib/src/android/car/vms/VmsLayerDependency.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.annotation.FutureFeature;
-import android.os.Parcel;
-import android.os.Parcelable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * A dependency for a VMS layer on other VMS layers.
- *
- * @hide
- */
-@FutureFeature
-public final class VmsLayerDependency implements Parcelable {
-    private final VmsLayer mLayer;
-    private final Set<VmsLayer> mDependency;
-
-    /**
-     * Construct a dependency for layer on other layers.
-     */
-    public VmsLayerDependency(VmsLayer layer, Set<VmsLayer> dependencies) {
-        mLayer = layer;
-        mDependency = Collections.unmodifiableSet(dependencies);
-    }
-
-    /**
-     * Constructs a layer without a dependency.
-     */
-    public VmsLayerDependency(VmsLayer layer) {
-        mLayer = layer;
-        mDependency = Collections.emptySet();
-    }
-
-    public VmsLayer getLayer() {
-        return mLayer;
-    }
-
-    /**
-     * Returns the dependencies.
-     */
-    public Set<VmsLayer> getDependencies() {
-        return mDependency;
-    }
-
-    public static final Parcelable.Creator<VmsLayerDependency> CREATOR = new
-        Parcelable.Creator<VmsLayerDependency>() {
-            public VmsLayerDependency createFromParcel(Parcel in) {
-                return new VmsLayerDependency(in);
-            }
-            public VmsLayerDependency[] newArray(int size) {
-                return new VmsLayerDependency[size];
-            }
-        };
-
-    public String toString() {
-        return "VmsLayerDependency{ Layer: " + mLayer + " Dependency: " + mDependency + "}";
-    }
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeParcelable(mLayer, flags);
-        out.writeParcelableList(new ArrayList<VmsLayer>(mDependency), flags);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    private VmsLayerDependency(Parcel in) {
-        mLayer = in.readParcelable(VmsLayer.class.getClassLoader());
-        List<VmsLayer> dependency = new ArrayList<>();
-        in.readParcelableList(dependency, VmsLayer.class.getClassLoader());
-        mDependency = Collections.unmodifiableSet(new HashSet<VmsLayer>(dependency));
-    }
-}
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsLayersOffering.aidl b/car-lib/src/android/car/vms/VmsLayersOffering.aidl
deleted file mode 100644
index 4231f2d..0000000
--- a/car-lib/src/android/car/vms/VmsLayersOffering.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 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.car.vms;
-
-parcelable VmsLayersOffering;
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsLayersOffering.java b/car-lib/src/android/car/vms/VmsLayersOffering.java
deleted file mode 100644
index 6abffc6..0000000
--- a/car-lib/src/android/car/vms/VmsLayersOffering.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.annotation.FutureFeature;
-import android.os.Parcel;
-import android.os.Parcelable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * The state of dependencies for a single publisher.
- *
- * @hide
- */
-@FutureFeature
-public final class VmsLayersOffering implements Parcelable {
-
-    private final Set<VmsLayerDependency> mDependencies;
-
-    private final int mPublisherId;
-
-    public VmsLayersOffering(Set<VmsLayerDependency> dependencies, int publisherId) {
-        mDependencies = Collections.unmodifiableSet(dependencies);
-        mPublisherId = publisherId;
-    }
-
-    /**
-     * Returns the dependencies.
-     */
-    public Set<VmsLayerDependency> getDependencies() {
-        return mDependencies;
-    }
-
-    public int getPublisherId() {
-        return mPublisherId;
-    }
-
-    public static final Parcelable.Creator<VmsLayersOffering> CREATOR = new
-        Parcelable.Creator<VmsLayersOffering>() {
-            public VmsLayersOffering createFromParcel(Parcel in) {
-                return new VmsLayersOffering(in);
-            }
-            public VmsLayersOffering[] newArray(int size) {
-                return new VmsLayersOffering[size];
-            }
-        };
-
-    @Override
-    public String toString() {
-        return "VmsLayersOffering{" + mDependencies+ "}";
-    }
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-
-        out.writeParcelableList(new ArrayList(mDependencies), flags);
-        out.writeInt(mPublisherId);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    private VmsLayersOffering(Parcel in) {
-        List<VmsLayerDependency> dependencies = new ArrayList<>();
-        in.readParcelableList(dependencies, VmsLayerDependency.class.getClassLoader());
-        mDependencies = Collections.unmodifiableSet(new HashSet<>(dependencies));
-        mPublisherId = in.readInt();
-    }
-}
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsOperationRecorder.java b/car-lib/src/android/car/vms/VmsOperationRecorder.java
deleted file mode 100644
index c873dce..0000000
--- a/car-lib/src/android/car/vms/VmsOperationRecorder.java
+++ /dev/null
@@ -1,227 +0,0 @@
-package android.car.vms;
-
-import android.car.annotation.FutureFeature;
-import android.util.Log;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * Records VMS operations using the Android Log.
- *
- * This class records VMS operations. The recorded messages include the VMS operations and its
- * arguments encoded as JSON text so that the string can be both read as a log message and easily
- * parsed. VmsOperationRecorder is intended to be called after successful state change.
- *
- * Access the VmsOperationRecorder using the {@link #get()} method, which returns a singleton
- * instance. Each VMS operation has a corresponding VmsOperationRecorder method. For instance:
- * <pre>{@code
- *   VmsOperationRecorder.get().subscribe(layer);
- * }</pre>
- *
- * @hide
- */
-@FutureFeature
-public final class VmsOperationRecorder {
-    private static final String TAG = "VmsOperationRecorder";
-    private static final VmsOperationRecorder INSTANCE = new VmsOperationRecorder(new Writer());
-    private final Writer mWriter;
-
-    @VisibleForTesting
-    public VmsOperationRecorder(Writer writer) {
-        mWriter = writer;
-    }
-
-    /** Return the singleton instance. */
-    public static VmsOperationRecorder get() {
-        return INSTANCE;
-    }
-
-    // VMS Client operations.
-
-    public void subscribe(VmsLayer layer) {
-        recordOp("subscribe", layer);
-    }
-
-    public void unsubscribe(VmsLayer layer) {
-        recordOp("unsubscribe", layer);
-    }
-
-    public void subscribe(VmsLayer layer, int publisherId) {
-        recordOp("subscribe", "publisherId", publisherId, layer);
-    }
-
-    public void unsubscribe(VmsLayer layer, int publisherId) {
-        recordOp("unsubscribe", "publisherId", publisherId, layer);
-    }
-
-    public void startMonitoring() {
-        recordOp("startMonitoring");
-    }
-
-    public void stopMonitoring() {
-        recordOp("stopMonitoring");
-    }
-
-    public void setLayersOffering(VmsLayersOffering layersOffering) {
-        recordOp("setLayersOffering", layersOffering);
-    }
-
-    public void getPublisherId(int publisherId) {
-        recordOp("getPublisherId", "publisherId", publisherId);
-    }
-
-    // VMS Service operations.
-
-    public void addSubscription(int sequenceNumber, VmsLayer layer) {
-        recordOp("addSubscription", "sequenceNumber", sequenceNumber, layer);
-    }
-
-    public void removeSubscription(int sequenceNumber, VmsLayer layer) {
-        recordOp("removeSubscription", "sequenceNumber", sequenceNumber, layer);
-    }
-
-    public void addPromiscuousSubscription(int sequenceNumber) {
-        recordOp("addPromiscuousSubscription", "sequenceNumber", sequenceNumber);
-    }
-
-    public void removePromiscuousSubscription(int sequenceNumber) {
-        recordOp("removePromiscuousSubscription", "sequenceNumber", sequenceNumber);
-    }
-
-    public void addHalSubscription(int sequenceNumber, VmsLayer layer) {
-        recordOp("addHalSubscription", "sequenceNumber", sequenceNumber, layer);
-    }
-
-    public void removeHalSubscription(int sequenceNumber, VmsLayer layer) {
-        recordOp("removeHalSubscription", "sequenceNumber", sequenceNumber, layer);
-    }
-
-    public void setPublisherLayersOffering(VmsLayersOffering layersOffering) {
-        recordOp("setPublisherLayersOffering", layersOffering);
-    }
-
-    public void setHalPublisherLayersOffering(VmsLayersOffering layersOffering) {
-        recordOp("setHalPublisherLayersOffering", layersOffering);
-    }
-
-    private void recordOp(String operation) {
-        if (isEnabled()) {
-            try {
-                write(new JSONObject().put(operation, new JSONObject()));
-            } catch (JSONException e) {
-                Log.e(TAG, e.toString());
-            }
-        }
-    }
-
-    private void recordOp(String operation, VmsLayer layer) {
-        if (isEnabled()) {
-            try {
-                recordOp(operation, new JSONObject().put("layer", toJson(layer)));
-            } catch (JSONException e) {
-                Log.e(TAG, e.toString());
-            }
-        }
-    }
-
-    private void recordOp(String operation, VmsLayersOffering layersOffering) {
-        if (isEnabled()) {
-            try {
-                JSONObject args = new JSONObject();
-                JSONArray offering = toJson(layersOffering);
-                if (offering.length() > 0) {
-                    args.put("layerDependency", offering);
-                }
-                recordOp(operation, args);
-            } catch (JSONException e) {
-                Log.e(TAG, e.toString());
-            }
-        }
-    }
-
-    private void recordOp(String operation, String intArgName, int arg) {
-        if (isEnabled()) {
-            try {
-                recordOp(operation, new JSONObject().put(intArgName, arg));
-            } catch (JSONException e) {
-                Log.e(TAG, e.toString());
-            }
-        }
-    }
-
-    private void recordOp(String operation, String intArgName, int arg, VmsLayer layer) {
-        if (isEnabled()) {
-            try {
-                recordOp(operation,
-                        new JSONObject().put(intArgName, arg).put("layer", toJson(layer)));
-            } catch (JSONException e) {
-                Log.e(TAG, e.toString());
-            }
-        }
-    }
-
-    private void recordOp(String operation, JSONObject args) {
-        if (isEnabled()) {
-            try {
-                write(new JSONObject().put(operation, args));
-            } catch (JSONException e) {
-                Log.e(TAG, e.toString());
-            }
-        }
-    }
-
-    private static JSONObject toJson(VmsLayer layer) throws JSONException {
-        return new JSONObject()
-                .put("type", layer.getType())
-                .put("subtype", layer.getSubtype())
-                .put("version", layer.getVersion());
-    }
-
-    private static JSONObject toJson(VmsLayerDependency layerDependency) throws JSONException {
-        JSONObject dep = new JSONObject();
-        dep.put("layer", toJson(layerDependency.getLayer()));
-        if (!layerDependency.getDependencies().isEmpty()) {
-            JSONArray dependencies = new JSONArray();
-            for (VmsLayer dependency : layerDependency.getDependencies()) {
-                dependencies.put(toJson(dependency));
-            }
-            dep.put("dependency", dependencies);
-        }
-        return dep;
-    }
-
-    private static JSONArray toJson(VmsLayersOffering layersOffering) throws JSONException {
-        JSONArray offerings = new JSONArray();
-        for (VmsLayerDependency layerDependency : layersOffering.getDependencies()) {
-            offerings.put(toJson(layerDependency));
-        }
-        return offerings;
-    }
-
-    private boolean isEnabled() {
-        return mWriter.isEnabled();
-    }
-
-    private void write(JSONObject object) {
-        mWriter.write(object.toString());
-    }
-
-    /** @hide */
-    @VisibleForTesting
-    public static class Writer {
-        private static final String TAG = "VMS.RECORD.EVENT";
-        private static final int LEVEL = Log.DEBUG;
-
-        public boolean isEnabled() {
-            return Log.isLoggable(TAG, LEVEL);
-        }
-
-        public void write(String msg) {
-            Log.println(LEVEL, TAG, msg);
-        }
-    }
-}
diff --git a/car-lib/src/android/car/vms/VmsPublisherClientService.java b/car-lib/src/android/car/vms/VmsPublisherClientService.java
deleted file mode 100644
index 33ca1f3..0000000
--- a/car-lib/src/android/car/vms/VmsPublisherClientService.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * 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.car.vms;
-
-
-import android.app.Service;
-import android.car.annotation.FutureFeature;
-import android.content.Intent;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.annotation.Nullable;
-import android.util.Log;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.lang.ref.WeakReference;
-
-/**
- * Services that need VMS publisher services need to inherit from this class and also need to be
- * declared in the array vmsPublisherClients located in
- * packages/services/Car/service/res/values/config.xml (most likely, this file will be in an overlay
- * of the target product.
- *
- * The {@link com.android.car.VmsPublisherService} will start this service. The callback
- * {@link #onVmsPublisherServiceReady()} notifies when VMS publisher services can be used, and the
- * publisher can request a publisher ID in order to start publishing.
- *
- * SystemApi candidate.
- *
- * @hide
- */
-@FutureFeature
-public abstract class VmsPublisherClientService extends Service {
-    private static final boolean DBG = true;
-    private static final String TAG = "VmsPublisherClient";
-
-    private final Object mLock = new Object();
-
-    private Handler mHandler = new VmsEventHandler(this);
-    private final VmsPublisherClientBinder mVmsPublisherClient = new VmsPublisherClientBinder(this);
-    private volatile IVmsPublisherService mVmsPublisherService = null;
-    @GuardedBy("mLock")
-    private IBinder mToken = null;
-
-    @Override
-    public final IBinder onBind(Intent intent) {
-        if (DBG) {
-            Log.d(TAG, "onBind, intent: " + intent);
-        }
-        return mVmsPublisherClient.asBinder();
-    }
-
-    @Override
-    public final boolean onUnbind(Intent intent) {
-        if (DBG) {
-            Log.d(TAG, "onUnbind, intent: " + intent);
-        }
-        stopSelf();
-        return super.onUnbind(intent);
-    }
-
-    private void setToken(IBinder token) {
-        synchronized (mLock) {
-            mToken = token;
-        }
-    }
-
-    /**
-     * Notifies that the publisher services are ready.
-     */
-    protected abstract void onVmsPublisherServiceReady();
-
-    /**
-     * Publishers need to implement this method to receive notifications of subscription changes.
-     *
-     * @param subscriptionState the state of the subscriptions.
-     */
-    public abstract void onVmsSubscriptionChange(VmsSubscriptionState subscriptionState);
-
-    /**
-     * Uses the VmsPublisherService binder to publish messages.
-     *
-     * @param layer   the layer to publish to.
-     * @param payload the message to be sent.
-     * @param publisherId the ID that got assigned to the publisher that published the message by
-     *                    VMS core.
-     * @return if the call to the method VmsPublisherService.publish was successful.
-     */
-    public final void publish(VmsLayer layer, int publisherId, byte[] payload) {
-        if (DBG) {
-            Log.d(TAG, "Publishing for layer : " + layer);
-        }
-
-        IBinder token = getTokenForPublisherServiceThreadSafe();
-
-        try {
-            mVmsPublisherService.publish(token, layer, publisherId, payload);
-        } catch (RemoteException e) {
-            Log.e(TAG, "unable to publish message: " + payload, e);
-        }
-    }
-
-    /**
-     * Uses the VmsPublisherService binder to set the layers offering.
-     *
-     * @param offering the layers that the publisher may publish.
-     * @return if the call to VmsPublisherService.setLayersOffering was successful.
-     */
-    public final void setLayersOffering(VmsLayersOffering offering) {
-        if (DBG) {
-            Log.d(TAG, "Setting layers offering : " + offering);
-        }
-
-        IBinder token = getTokenForPublisherServiceThreadSafe();
-
-        try {
-            mVmsPublisherService.setLayersOffering(token, offering);
-            VmsOperationRecorder.get().setLayersOffering(offering);
-        } catch (RemoteException e) {
-            Log.e(TAG, "unable to set layers offering: " + offering, e);
-        }
-    }
-
-    private IBinder getTokenForPublisherServiceThreadSafe() {
-        if (mVmsPublisherService == null) {
-            throw new IllegalStateException("VmsPublisherService not set.");
-        }
-
-        IBinder token;
-        synchronized (mLock) {
-            token = mToken;
-        }
-        if (token == null) {
-            throw new IllegalStateException("VmsPublisherService does not have a valid token.");
-        }
-        return token;
-    }
-
-    public final int getPublisherId(byte[] publisherInfo) {
-        if (mVmsPublisherService == null) {
-            throw new IllegalStateException("VmsPublisherService not set.");
-        }
-        Integer publisherId = null;
-        try {
-            Log.i(TAG, "Getting publisher static ID");
-            publisherId = mVmsPublisherService.getPublisherId(publisherInfo);
-        } catch (RemoteException e) {
-            Log.e(TAG, "unable to invoke binder method.", e);
-        }
-        if (publisherId == null) {
-            throw new IllegalStateException("VmsPublisherService cannot get a publisher static ID.");
-        } else {
-            VmsOperationRecorder.get().getPublisherId(publisherId);
-        }
-        return publisherId;
-    }
-
-    /**
-     * Uses the VmsPublisherService binder to get the state of the subscriptions.
-     *
-     * @return list of layer/version or null in case of error.
-     */
-    public final @Nullable VmsSubscriptionState getSubscriptions() {
-        if (mVmsPublisherService == null) {
-            throw new IllegalStateException("VmsPublisherService not set.");
-        }
-        try {
-            return mVmsPublisherService.getSubscriptions();
-        } catch (RemoteException e) {
-            Log.e(TAG, "unable to invoke binder method.", e);
-        }
-        return null;
-    }
-
-    private void setVmsPublisherService(IVmsPublisherService service) {
-        mVmsPublisherService = service;
-        onVmsPublisherServiceReady();
-    }
-
-    /**
-     * Implements the interface that the VMS service uses to communicate with this client.
-     */
-    private static class VmsPublisherClientBinder extends IVmsPublisherClient.Stub {
-        private final WeakReference<VmsPublisherClientService> mVmsPublisherClientService;
-        @GuardedBy("mSequenceLock")
-        private long mSequence = -1;
-        private final Object mSequenceLock = new Object();
-
-        public VmsPublisherClientBinder(VmsPublisherClientService vmsPublisherClientService) {
-            mVmsPublisherClientService = new WeakReference<>(vmsPublisherClientService);
-        }
-
-        @Override
-        public void setVmsPublisherService(IBinder token, IVmsPublisherService service)
-                throws RemoteException {
-            VmsPublisherClientService vmsPublisherClientService = mVmsPublisherClientService.get();
-            if (vmsPublisherClientService == null) return;
-            if (DBG) {
-                Log.d(TAG, "setting VmsPublisherService.");
-            }
-            Handler handler = vmsPublisherClientService.mHandler;
-            handler.sendMessage(
-                    handler.obtainMessage(VmsEventHandler.SET_SERVICE_CALLBACK, service));
-            vmsPublisherClientService.setToken(token);
-        }
-
-        @Override
-        public void onVmsSubscriptionChange(VmsSubscriptionState subscriptionState)
-                throws RemoteException {
-            VmsPublisherClientService vmsPublisherClientService = mVmsPublisherClientService.get();
-            if (vmsPublisherClientService == null) return;
-            if (DBG) {
-                Log.d(TAG, "subscription event: " + subscriptionState);
-            }
-            synchronized (mSequenceLock) {
-                if (subscriptionState.getSequenceNumber() <= mSequence) {
-                    Log.w(TAG, "Sequence out of order. Current sequence = " + mSequence
-                            + "; expected new sequence = " + subscriptionState.getSequenceNumber());
-                    // Do not propagate old notifications.
-                    return;
-                } else {
-                    mSequence = subscriptionState.getSequenceNumber();
-                }
-            }
-            Handler handler = vmsPublisherClientService.mHandler;
-            handler.sendMessage(
-                    handler.obtainMessage(VmsEventHandler.ON_SUBSCRIPTION_CHANGE_EVENT,
-                            subscriptionState));
-        }
-    }
-
-    /**
-     * Receives events from the binder thread and dispatches them.
-     */
-    private final static class VmsEventHandler extends Handler {
-        /** Constants handled in the handler */
-        private static final int ON_SUBSCRIPTION_CHANGE_EVENT = 0;
-        private static final int SET_SERVICE_CALLBACK = 1;
-
-        private final WeakReference<VmsPublisherClientService> mVmsPublisherClientService;
-
-        VmsEventHandler(VmsPublisherClientService service) {
-            super(Looper.getMainLooper());
-            mVmsPublisherClientService = new WeakReference<>(service);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            VmsPublisherClientService service = mVmsPublisherClientService.get();
-            if (service == null) return;
-            switch (msg.what) {
-                case ON_SUBSCRIPTION_CHANGE_EVENT:
-                    VmsSubscriptionState subscriptionState = (VmsSubscriptionState) msg.obj;
-                    service.onVmsSubscriptionChange(subscriptionState);
-                    break;
-                case SET_SERVICE_CALLBACK:
-                    service.setVmsPublisherService((IVmsPublisherService) msg.obj);
-                    break;
-                default:
-                    Log.e(TAG, "Event type not handled:  " + msg.what);
-                    break;
-            }
-        }
-    }
-}
diff --git a/car-lib/src/android/car/vms/VmsSubscriberManager.java b/car-lib/src/android/car/vms/VmsSubscriberManager.java
deleted file mode 100644
index 6f6377c..0000000
--- a/car-lib/src/android/car/vms/VmsSubscriberManager.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.Car;
-import android.car.CarManagerBase;
-import android.car.CarNotConnectedException;
-import android.car.annotation.FutureFeature;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.util.Log;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.lang.ref.WeakReference;
-import java.util.List;
-
-/**
- * API for interfacing with the VmsSubscriberService. It supports a single client callback that can
- * (un)subscribe to different layers. Getting notifactions and managing subscriptions is enabled
- * after setting the client callback with #registerClientCallback.
- * SystemApi candidate
- *
- * @hide
- */
-@FutureFeature
-public final class VmsSubscriberManager implements CarManagerBase {
-    private static final boolean DBG = true;
-    private static final String TAG = "VmsSubscriberManager";
-
-    private final Handler mHandler;
-    private final IVmsSubscriberService mVmsSubscriberService;
-    private final IVmsSubscriberClient mSubscriberManagerClient;
-    private final Object mClientCallbackLock = new Object();
-    @GuardedBy("mClientCallbackLock")
-    private VmsSubscriberClientCallback mClientCallback;
-
-    /**
-     * Interface exposed to VMS subscribers: it is a wrapper of IVmsSubscriberClient.
-     */
-    public interface VmsSubscriberClientCallback {
-        /**
-         * Called when the property is updated
-         */
-        void onVmsMessageReceived(VmsLayer layer, byte[] payload);
-
-        /**
-         * Called when layers availability change
-         */
-        void onLayersAvailabilityChanged(List<VmsLayer> availableLayers);
-    }
-
-    /**
-     * Allows to asynchronously dispatch onVmsMessageReceived events.
-     */
-    private final static class VmsEventHandler extends Handler {
-        /**
-         * Constants handled in the handler
-         */
-        private static final int ON_RECEIVE_MESSAGE_EVENT = 0;
-        private static final int ON_AVAILABILITY_CHANGE_EVENT = 1;
-
-        private final WeakReference<VmsSubscriberManager> mMgr;
-
-        VmsEventHandler(VmsSubscriberManager mgr, Looper looper) {
-            super(looper);
-            mMgr = new WeakReference<>(mgr);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            VmsSubscriberManager mgr = mMgr.get();
-            switch (msg.what) {
-                case ON_RECEIVE_MESSAGE_EVENT:
-                    if (mgr != null) {
-                        // Parse the message
-                        VmsDataMessage vmsDataMessage = (VmsDataMessage) msg.obj;
-
-                        // Dispatch the parsed message
-                        mgr.dispatchOnReceiveMessage(vmsDataMessage.getLayer(),
-                                vmsDataMessage.getPayload());
-                    }
-                    break;
-                case ON_AVAILABILITY_CHANGE_EVENT:
-                    if (mgr != null) {
-                        // Parse the message
-                        List<VmsLayer> vmsAvailabilityChangeMessage = (List<VmsLayer>) msg.obj;
-
-                        // Dispatch the parsed message
-                        mgr.dispatchOnAvailabilityChangeMessage(vmsAvailabilityChangeMessage);
-                    }
-                    break;
-
-                default:
-                    Log.e(VmsSubscriberManager.TAG, "Event type not handled:  " + msg.what);
-                    break;
-            }
-        }
-    }
-
-    public VmsSubscriberManager(IBinder service, Handler handler) {
-        mVmsSubscriberService = IVmsSubscriberService.Stub.asInterface(service);
-        mHandler = new VmsEventHandler(this, handler.getLooper());
-        mSubscriberManagerClient = new IVmsSubscriberClient.Stub() {
-            @Override
-            public void onVmsMessageReceived(VmsLayer layer, byte[] payload)
-                    throws RemoteException {
-                // Create the data message
-                VmsDataMessage vmsDataMessage = new VmsDataMessage(layer, payload);
-                mHandler.sendMessage(
-                        mHandler.obtainMessage(
-                                VmsEventHandler.ON_RECEIVE_MESSAGE_EVENT,
-                                vmsDataMessage));
-            }
-
-            @Override
-            public void onLayersAvailabilityChanged(List<VmsAssociatedLayer> availableLayers) {
-                mHandler.sendMessage(
-                        mHandler.obtainMessage(
-                                VmsEventHandler.ON_AVAILABILITY_CHANGE_EVENT,
-                                availableLayers));
-            }
-        };
-    }
-
-    /**
-     * Registers the client callback in order to enable communication with the client.
-     * By registering, the client will start getting notifications, and will be able to subscribe
-     * to layers.
-     * <p>
-     *
-     * @param clientCallback subscriber callback that will handle onVmsMessageReceived events.
-     * @throws IllegalStateException if the client callback was already set.
-     */
-    public void registerClientCallback(VmsSubscriberClientCallback clientCallback)
-            throws CarNotConnectedException {
-        synchronized (mClientCallbackLock) {
-            if (mClientCallback != null) {
-                throw new IllegalStateException("Client callback is already configured.");
-            }
-            mClientCallback = clientCallback;
-        }
-        try {
-            mVmsSubscriberService.addVmsSubscriberToNotifications(mSubscriberManagerClient);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Could not connect: ", e);
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    /**
-     * Unregisters the client callback which disables communication with the client.
-     * @throws CarNotConnectedException, IllegalStateException
-     */
-    public void unregisterClientCallback()
-            throws CarNotConnectedException {
-
-        try {
-            mVmsSubscriberService.removeVmsSubscriberToNotifications(mSubscriberManagerClient);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Could not connect: ", e);
-            throw new CarNotConnectedException(e);
-        } catch (IllegalStateException e) {
-            Log.e(TAG, "Could not unsubscribe from notifications");
-            throw e;
-        }
-
-        synchronized (mClientCallbackLock) {
-            mClientCallback = null;
-        }
-    }
-
-    /**
-     * Returns a serialized publisher information for a publisher ID.
-     */
-    public byte[] getPublisherInfo(int publisherId)
-            throws CarNotConnectedException, IllegalStateException {
-        try {
-            return mVmsSubscriberService.getPublisherInfo(publisherId);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Could not connect: ", e);
-            throw new CarNotConnectedException(e);
-        } catch (IllegalStateException ex) {
-            Car.checkCarNotConnectedExceptionFromCarService(ex);
-            throw new IllegalStateException(ex);
-        }
-    }
-
-    /**
-     * Subscribes to listen to the layer specified.
-     *
-     * @param layer the layer to subscribe to.
-     * @throws IllegalStateException if the client callback was not set via
-     *                               {@link #registerClientCallback}.
-     */
-    public void subscribe(VmsLayer layer) throws CarNotConnectedException {
-        verifySubscriptionIsAllowed();
-        try {
-            mVmsSubscriberService.addVmsSubscriber(mSubscriberManagerClient, layer);
-            VmsOperationRecorder.get().subscribe(layer);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Could not connect: ", e);
-            throw new CarNotConnectedException(e);
-        } catch (IllegalStateException ex) {
-            Car.checkCarNotConnectedExceptionFromCarService(ex);
-        }
-    }
-
-    /**
-     * Subscribes to listen to the layer specified from the publisher specified.
-     *
-     * @param layer       the layer to subscribe to.
-     * @param publisherId the publisher of the layer.
-     * @throws IllegalStateException if the client callback was not set via
-     *                               {@link #registerClientCallback}.
-     */
-    public void subscribe(VmsLayer layer, int publisherId) throws CarNotConnectedException {
-        verifySubscriptionIsAllowed();
-        try {
-            mVmsSubscriberService.addVmsSubscriberToPublisher(
-                    mSubscriberManagerClient, layer, publisherId);
-            VmsOperationRecorder.get().subscribe(layer, publisherId);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Could not connect: ", e);
-            throw new CarNotConnectedException(e);
-        } catch (IllegalStateException ex) {
-            Car.checkCarNotConnectedExceptionFromCarService(ex);
-        }
-    }
-
-    public void startMonitoring() throws CarNotConnectedException {
-        verifySubscriptionIsAllowed();
-        try {
-            mVmsSubscriberService.addVmsSubscriberPassive(mSubscriberManagerClient);
-            VmsOperationRecorder.get().startMonitoring();
-        } catch (RemoteException e) {
-            Log.e(TAG, "Could not connect: ", e);
-            throw new CarNotConnectedException(e);
-        } catch (IllegalStateException ex) {
-            Car.checkCarNotConnectedExceptionFromCarService(ex);
-        }
-    }
-
-    /**
-     * Unsubscribes from the layer/version specified.
-     *
-     * @param layer the layer to unsubscribe from.
-     * @throws IllegalStateException if the client callback was not set via
-     *                               {@link #registerClientCallback}.
-     */
-    public void unsubscribe(VmsLayer layer) {
-        verifySubscriptionIsAllowed();
-        try {
-            mVmsSubscriberService.removeVmsSubscriber(mSubscriberManagerClient, layer);
-            VmsOperationRecorder.get().unsubscribe(layer);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Failed to unregister subscriber", e);
-            // ignore
-        } catch (IllegalStateException ex) {
-            Car.hideCarNotConnectedExceptionFromCarService(ex);
-        }
-    }
-
-    /**
-     * Unsubscribes from the layer/version specified.
-     *
-     * @param layer       the layer to unsubscribe from.
-     * @param publisherId the pubisher of the layer.
-     * @throws IllegalStateException if the client callback was not set via
-     *                               {@link #registerClientCallback}.
-     */
-    public void unsubscribe(VmsLayer layer, int publisherId) {
-        try {
-            mVmsSubscriberService.removeVmsSubscriberToPublisher(
-                    mSubscriberManagerClient, layer, publisherId);
-            VmsOperationRecorder.get().unsubscribe(layer, publisherId);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Failed to unregister subscriber", e);
-            // ignore
-        } catch (IllegalStateException ex) {
-            Car.hideCarNotConnectedExceptionFromCarService(ex);
-        }
-    }
-
-    public void stopMonitoring() {
-        try {
-            mVmsSubscriberService.removeVmsSubscriberPassive(mSubscriberManagerClient);
-            VmsOperationRecorder.get().stopMonitoring();
-        } catch (RemoteException e) {
-            Log.e(TAG, "Failed to unregister subscriber ", e);
-            // ignore
-        } catch (IllegalStateException ex) {
-            Car.hideCarNotConnectedExceptionFromCarService(ex);
-        }
-    }
-
-    private void dispatchOnReceiveMessage(VmsLayer layer, byte[] payload) {
-        VmsSubscriberClientCallback clientCallback = getClientCallbackThreadSafe();
-        if (clientCallback == null) {
-            Log.e(TAG, "Cannot dispatch received message.");
-            return;
-        }
-        clientCallback.onVmsMessageReceived(layer, payload);
-    }
-
-    private void dispatchOnAvailabilityChangeMessage(List<VmsLayer> availableLayers) {
-        VmsSubscriberClientCallback clientCallback = getClientCallbackThreadSafe();
-        if (clientCallback == null) {
-            Log.e(TAG, "Cannot dispatch availability change message.");
-            return;
-        }
-        clientCallback.onLayersAvailabilityChanged(availableLayers);
-    }
-
-    private VmsSubscriberClientCallback getClientCallbackThreadSafe() {
-        VmsSubscriberClientCallback clientCallback;
-        synchronized (mClientCallbackLock) {
-            clientCallback = mClientCallback;
-        }
-        if (clientCallback == null) {
-            Log.e(TAG, "client callback not set.");
-        }
-        return clientCallback;
-    }
-
-    /*
-     * Verifies that the subscriber is in a state where it is allowed to subscribe.
-     */
-    private void verifySubscriptionIsAllowed() {
-        VmsSubscriberClientCallback clientCallback = getClientCallbackThreadSafe();
-        if (clientCallback == null) {
-            throw new IllegalStateException("Cannot subscribe.");
-        }
-    }
-
-    /**
-     * @hide
-     */
-    @Override
-    public void onCarDisconnected() {
-    }
-
-    private static final class VmsDataMessage {
-        private final VmsLayer mLayer;
-        private final byte[] mPayload;
-
-        public VmsDataMessage(VmsLayer layer, byte[] payload) {
-            mLayer = layer;
-            mPayload = payload;
-        }
-
-        public VmsLayer getLayer() {
-            return mLayer;
-        }
-
-        public byte[] getPayload() {
-            return mPayload;
-        }
-    }
-}
diff --git a/car-lib/src/android/car/vms/VmsSubscriptionState.aidl b/car-lib/src/android/car/vms/VmsSubscriptionState.aidl
deleted file mode 100644
index b5ce8ff..0000000
--- a/car-lib/src/android/car/vms/VmsSubscriptionState.aidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * 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.car.vms;
-
-parcelable VmsSubscriptionState;
\ No newline at end of file
diff --git a/car-lib/src/android/car/vms/VmsSubscriptionState.java b/car-lib/src/android/car/vms/VmsSubscriptionState.java
deleted file mode 100644
index ea433f7..0000000
--- a/car-lib/src/android/car/vms/VmsSubscriptionState.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.car.vms;
-
-import android.car.annotation.FutureFeature;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-
-/**
- * The list of layers with subscribers.
- *
- * @hide
- */
-@FutureFeature
-public final class VmsSubscriptionState implements Parcelable {
-    private final int mSequenceNumber;
-    private final Set<VmsLayer> mLayers;
-    private final Set<VmsAssociatedLayer> mSubscribedLayersFromPublishers;
-
-    /**
-     * Construcs a summary of the state of the current subscriptions for publishers to consume
-     * and adjust which layers that the are publishing.
-     */
-    public VmsSubscriptionState(int sequenceNumber,
-                                Set<VmsLayer> subscribedLayers,
-                                Set<VmsAssociatedLayer> layersFromPublishers) {
-        mSequenceNumber = sequenceNumber;
-        mLayers = Collections.unmodifiableSet(subscribedLayers);
-        mSubscribedLayersFromPublishers = Collections.unmodifiableSet(layersFromPublishers);
-    }
-
-    /**
-     * Returns the sequence number assigned by the VMS service. Sequence numbers are
-     * monotonically increasing and help clients ignore potential out-of-order states.
-     */
-    public int getSequenceNumber() {
-        return mSequenceNumber;
-    }
-
-    public Set<VmsLayer> getLayers() {
-        return mLayers;
-    }
-
-    public Set<VmsAssociatedLayer> getAssociatedLayers() {
-        return mSubscribedLayersFromPublishers;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("sequence number=").append(mSequenceNumber);
-        sb.append("; layers={");
-        for (VmsLayer layer : mLayers) {
-            sb.append(layer).append(",");
-        }
-        sb.append("}");
-        sb.append("; associatedLayers={");
-        for (VmsAssociatedLayer layer : mSubscribedLayersFromPublishers) {
-            sb.append(layer).append(",");
-        }
-        sb.append("}");
-        return sb.toString();
-    }
-
-    public static final Parcelable.Creator<VmsSubscriptionState> CREATOR = new
-            Parcelable.Creator<VmsSubscriptionState>() {
-                public VmsSubscriptionState createFromParcel(Parcel in) {
-                    return new VmsSubscriptionState(in);
-                }
-
-                public VmsSubscriptionState[] newArray(int size) {
-                    return new VmsSubscriptionState[size];
-                }
-            };
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeInt(mSequenceNumber);
-        out.writeParcelableList(new ArrayList(mLayers), flags);
-        out.writeParcelableList(new ArrayList(mSubscribedLayersFromPublishers), flags);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    private VmsSubscriptionState(Parcel in) {
-        mSequenceNumber = in.readInt();
-
-        List<VmsLayer> layers = new ArrayList<>();
-        in.readParcelableList(layers, VmsLayer.class.getClassLoader());
-        mLayers = Collections.unmodifiableSet(new HashSet(layers));
-
-        List<VmsAssociatedLayer> associatedLayers = new ArrayList<>();
-        in.readParcelableList(associatedLayers, VmsAssociatedLayer.class.getClassLoader());
-        mSubscribedLayersFromPublishers = Collections.unmodifiableSet(new HashSet(associatedLayers));
-    }
-}
\ No newline at end of file
diff --git a/service/AndroidManifest.xml b/service/AndroidManifest.xml
index e39fb9e..5c4dfaa 100644
--- a/service/AndroidManifest.xml
+++ b/service/AndroidManifest.xml
@@ -101,17 +101,6 @@
       android:protectionLevel="system|signature"
       android:label="@string/car_permission_label_diag_clear"
       android:description="@string/car_permission_desc_diag_clear" />
-    <permission
-        android:name="android.car.permission.VMS_PUBLISHER"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_vms_publisher"
-        android:description="@string/car_permission_desc_vms_publisher" />
-    <permission
-        android:name="android.car.permission.VMS_SUBSCRIBER"
-        android:protectionLevel="system|signature"
-        android:label="@string/car_permission_label_vms_subscriber"
-        android:description="@string/car_permission_desc_vms_subscriber" />
-
     <!--  may replace this with system permission if proper one is defined. -->
     <permission
         android:name="android.car.permission.CONTROL_APP_BLOCKING"
diff --git a/service/res/values/config.xml b/service/res/values/config.xml
index 61cef59..73028cb 100644
--- a/service/res/values/config.xml
+++ b/service/res/values/config.xml
@@ -74,11 +74,4 @@
     <string name="defauiltActivityWhitelist">android,com.android.systemui</string>
     <!-- Default home activity -->
     <string name="defaultHomeActivity">com.android.car.overview/com.android.car.overview.StreamOverviewActivity</string>
-    <!--  The com.android.car.VmsPublisherService will bind to this list of clients -->
-    <string-array translatable="false" name="vmsPublisherClients">
-    </string-array>
-    <!--  Permissions that the com.android.car.VmsPublisherService is allowed to grant to publishers -->
-    <string-array translatable="false" name="vmsSafePermissions">
-        <item>"android.permission.ACCESS_FINE_LOCATION"</item>
-    </string-array>
 </resources>
diff --git a/service/res/values/strings.xml b/service/res/values/strings.xml
index 6cfff9a..7f826d4 100644
--- a/service/res/values/strings.xml
+++ b/service/res/values/strings.xml
@@ -116,13 +116,4 @@
     <!-- Permission text: apps can clear diagnostic data from the car [CHAR LIMIT=NONE] -->
     <string name="car_permission_desc_diag_clear">Clear diagnostic data from the car</string>
 
-    <!-- Permission text: apps can publish VMS data [CHAR LIMIT=NONE] -->
-    <string name="car_permission_label_vms_publisher">VMS publisher</string>
-    <!-- Permission text: apps can send VMS messages to the car [CHAR LIMIT=NONE] -->
-    <string name="car_permission_desc_vms_publisher">Publish vms messages</string>
-
-    <!-- Permission text: apps can subscribe to VMS data [CHAR LIMIT=NONE] -->
-    <string name="car_permission_label_vms_subscriber">VMS subscriber</string>
-    <!-- Permission text: apps can receive VMS messages from the car [CHAR LIMIT=NONE] -->
-    <string name="car_permission_desc_vms_subscriber">Subscribe to vms messages</string>
 </resources>
diff --git a/service/src/com/android/car/ICarImpl.java b/service/src/com/android/car/ICarImpl.java
index bd42454..bbb86f6 100644
--- a/service/src/com/android/car/ICarImpl.java
+++ b/service/src/com/android/car/ICarImpl.java
@@ -72,10 +72,6 @@
     private final CarBluetoothService mCarBluetoothService;
     private final PerUserCarServiceHelper mPerUserCarServiceHelper;
     private CarDiagnosticService mCarDiagnosticService;
-    @FutureFeature
-    private VmsSubscriberService mVmsSubscriberService;
-    @FutureFeature
-    private VmsPublisherService mVmsPublisherService;
 
     private final CarServiceBase[] mAllServices;
 
@@ -121,10 +117,6 @@
         mPerUserCarServiceHelper = new PerUserCarServiceHelper(serviceContext);
         mCarBluetoothService = new CarBluetoothService(serviceContext, mCarCabinService,
                 mCarSensorService, mPerUserCarServiceHelper);
-        if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-            mVmsSubscriberService = new VmsSubscriberService(serviceContext, mHal.getVmsHal());
-            mVmsPublisherService = new VmsPublisherService(serviceContext, mHal.getVmsHal());
-        }
         mCarDiagnosticService = new CarDiagnosticService(serviceContext, mHal.getDiagnosticHal());
 
         // Be careful with order. Service depending on other service should be inited later.
@@ -150,10 +142,6 @@
                 mCarDiagnosticService,
                 mPerUserCarServiceHelper
         ));
-        if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-            allServices.add(mVmsSubscriberService);
-            allServices.add(mVmsPublisherService);
-        }
         mAllServices = allServices.toArray(new CarServiceBase[0]);
     }
 
@@ -233,12 +221,6 @@
             case Car.VENDOR_EXTENSION_SERVICE:
                 assertVendorExtensionPermission(mContext);
                 return mCarVendorExtensionService;
-            case Car.VMS_SUBSCRIBER_SERVICE:
-                FeatureUtil.assertFeature(FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE);
-                if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-                    assertVmsSubscriberPermission(mContext);
-                    return mVmsSubscriberService;
-                }
             case Car.TEST_SERVICE: {
                 assertPermission(mContext, Car.PERMISSION_CAR_TEST_SERVICE);
                 synchronized (this) {
@@ -312,16 +294,6 @@
                 Car.PERMISSION_CAR_DIAGNOSTIC_CLEAR);
     }
 
-    @FutureFeature
-    public static void assertVmsPublisherPermission(Context context) {
-        assertPermission(context, Car.PERMISSION_VMS_PUBLISHER);
-    }
-
-    @FutureFeature
-    public static void assertVmsSubscriberPermission(Context context) {
-        assertPermission(context, Car.PERMISSION_VMS_SUBSCRIBER);
-    }
-
     public static void assertPermission(Context context, String permission) {
         if (context.checkCallingOrSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
             throw new SecurityException("requires " + permission);
diff --git a/service/src/com/android/car/VmsLayersAvailability.java b/service/src/com/android/car/VmsLayersAvailability.java
deleted file mode 100644
index 93b917c..0000000
--- a/service/src/com/android/car/VmsLayersAvailability.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsLayerDependency;
-import android.car.vms.VmsLayersOffering;
-import android.util.Log;
-import com.android.internal.annotations.GuardedBy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * Manages VMS availability for layers.
- * <p>
- * Each VMS publisher sets its layers offering which are a list of layers the publisher claims
- * it might publish. VmsLayersAvailability calculates from all the offering what are the
- * available layers.
- */
-
-@FutureFeature
-public class VmsLayersAvailability {
-
-    private static final boolean DBG = true;
-    private static final String TAG = "VmsLayersAvailability";
-
-    private final Object mLock = new Object();
-    @GuardedBy("mLock")
-    private final Map<VmsLayer, Set<Set<VmsLayer>>> mPotentialLayersAndDependencies =
-            new HashMap<>();
-    @GuardedBy("mLock")
-    private Set<VmsAssociatedLayer> mAvailableAssociatedLayers = Collections.EMPTY_SET;
-    @GuardedBy("mLock")
-    private Set<VmsAssociatedLayer> mUnavailableAssociatedLayers = Collections.EMPTY_SET;
-    @GuardedBy("mLock")
-    private Map<VmsLayer, Set<Integer>> mPotentialLayersAndPublishers = new HashMap<>();
-
-    /**
-     * Setting the current layers offerings as reported by publishers.
-     */
-    public void setPublishersOffering(Collection<VmsLayersOffering> publishersLayersOfferings) {
-        synchronized (mLock) {
-            reset();
-
-            for (VmsLayersOffering offering : publishersLayersOfferings) {
-                for (VmsLayerDependency dependency : offering.getDependencies()) {
-                    VmsLayer layer = dependency.getLayer();
-
-                    // Associate publishers with layers.
-                    Set<Integer> curPotentialLayerAndPublishers =
-                            mPotentialLayersAndPublishers.get(layer);
-                    if (curPotentialLayerAndPublishers == null) {
-                        curPotentialLayerAndPublishers = new HashSet<>();
-                        mPotentialLayersAndPublishers.put(layer, curPotentialLayerAndPublishers);
-                    }
-                    curPotentialLayerAndPublishers.add(offering.getPublisherId());
-
-                    // Add dependencies for availability calculation.
-                    Set<Set<VmsLayer>> curDependencies =
-                            mPotentialLayersAndDependencies.get(layer);
-                    if (curDependencies == null) {
-                        curDependencies = new HashSet<>();
-                        mPotentialLayersAndDependencies.put(layer, curDependencies);
-                    }
-                    curDependencies.add(dependency.getDependencies());
-                }
-            }
-            calculateLayers();
-        }
-    }
-
-    /**
-     * Returns a collection of all the layers which may be published.
-     */
-    public Set<VmsAssociatedLayer> getAvailableLayers() {
-        synchronized (mLock) {
-            return mAvailableAssociatedLayers;
-        }
-    }
-
-    /**
-     * Returns a collection of all the layers which publishers could have published if the
-     * dependencies were satisfied.
-     */
-    public Set<VmsAssociatedLayer> getUnavailableLayers() {
-        synchronized (mLock) {
-            return mUnavailableAssociatedLayers;
-        }
-    }
-
-    private void reset() {
-        synchronized (mLock) {
-            mPotentialLayersAndDependencies.clear();
-            mPotentialLayersAndPublishers.clear();
-            mAvailableAssociatedLayers = Collections.EMPTY_SET;
-            mUnavailableAssociatedLayers = Collections.EMPTY_SET;
-        }
-    }
-
-    private void calculateLayers() {
-        synchronized (mLock) {
-            Set<VmsLayer> availableLayersSet = new HashSet<>();
-            Set<VmsLayer> cyclicAvoidanceAuxiliarySet = new HashSet<>();
-
-            for (VmsLayer layer : mPotentialLayersAndDependencies.keySet()) {
-                addLayerToAvailabilityCalculationLocked(layer,
-                        availableLayersSet,
-                        cyclicAvoidanceAuxiliarySet);
-            }
-
-            mAvailableAssociatedLayers = Collections.unmodifiableSet(
-                    availableLayersSet
-                            .stream()
-                            .map(l -> new VmsAssociatedLayer(l, mPotentialLayersAndPublishers.get(l)))
-                            .collect(Collectors.toSet()));
-
-            mUnavailableAssociatedLayers = Collections.unmodifiableSet(
-                    mPotentialLayersAndDependencies.keySet()
-                            .stream()
-                            .filter(l -> !availableLayersSet.contains(l))
-                            .map(l -> new VmsAssociatedLayer(l, mPotentialLayersAndPublishers.get(l)))
-                            .collect(Collectors.toSet()));
-        }
-    }
-
-    private void addLayerToAvailabilityCalculationLocked(VmsLayer layer,
-                                                         Set<VmsLayer> currentAvailableLayers,
-                                                         Set<VmsLayer> cyclicAvoidanceSet) {
-        if (DBG) {
-            Log.d(TAG, "addLayerToAvailabilityCalculationLocked: checking layer: " + layer);
-        }
-        // If we already know that this layer is supported then we are done.
-        if (currentAvailableLayers.contains(layer)) {
-            return;
-        }
-        // If there is no offering for this layer we're done.
-        if (!mPotentialLayersAndDependencies.containsKey(layer)) {
-            return;
-        }
-        // Avoid cyclic dependency.
-        if (cyclicAvoidanceSet.contains(layer)) {
-            Log.e(TAG, "Detected a cyclic dependency: " + cyclicAvoidanceSet + " -> " + layer);
-            return;
-        }
-        // A layer may have multiple dependency sets. The layer is available if any dependency
-        // set is satisfied
-        for (Set<VmsLayer> dependencies : mPotentialLayersAndDependencies.get(layer)) {
-            // If layer does not have any dependencies then add to supported.
-            if (dependencies == null || dependencies.isEmpty()) {
-                currentAvailableLayers.add(layer);
-                return;
-            }
-            // Add the layer to cyclic avoidance set
-            cyclicAvoidanceSet.add(layer);
-
-            boolean isSupported = true;
-            for (VmsLayer dependency : dependencies) {
-                addLayerToAvailabilityCalculationLocked(dependency,
-                        currentAvailableLayers,
-                        cyclicAvoidanceSet);
-
-                if (!currentAvailableLayers.contains(dependency)) {
-                    isSupported = false;
-                    break;
-                }
-            }
-            cyclicAvoidanceSet.remove(layer);
-
-            if (isSupported) {
-                currentAvailableLayers.add(layer);
-                return;
-            }
-        }
-        return;
-    }
-}
diff --git a/service/src/com/android/car/VmsPublisherService.java b/service/src/com/android/car/VmsPublisherService.java
deleted file mode 100644
index 8a293e5..0000000
--- a/service/src/com/android/car/VmsPublisherService.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.annotation.FutureFeature;
-import android.car.vms.IVmsSubscriberClient;
-import android.car.vms.IVmsPublisherClient;
-import android.car.vms.IVmsPublisherService;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsLayersOffering;
-import android.car.vms.VmsSubscriptionState;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Binder;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.text.TextUtils;
-import android.util.Log;
-import com.android.car.hal.VmsHalService;
-import com.android.internal.annotations.GuardedBy;
-import java.io.PrintWriter;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * + Receives HAL updates by implementing VmsHalService.VmsHalListener.
- * + Binds to publishers and configures them to use this service.
- * + Notifies publishers of subscription changes.
- */
-@FutureFeature
-public class VmsPublisherService extends IVmsPublisherService.Stub
-        implements CarServiceBase, VmsHalService.VmsHalPublisherListener {
-    private static final boolean DBG = true;
-    private static final String TAG = "VmsPublisherService";
-
-    private final Context mContext;
-    private final VmsHalService mHal;
-    private final VmsPublisherManager mPublisherManager;
-    private Set<String> mSafePermissions;
-
-    public VmsPublisherService(Context context, VmsHalService hal) {
-        mContext = context;
-        mHal = hal;
-        mPublisherManager = new VmsPublisherManager(this);
-    }
-
-    // Implements CarServiceBase interface.
-    @Override
-    public void init() {
-        mHal.addPublisherListener(this);
-        // Load permissions that can be granted to publishers.
-        mSafePermissions = new HashSet<>(
-                Arrays.asList(mContext.getResources().getStringArray(R.array.vmsSafePermissions)));
-        // Launch publishers.
-        String[] publisherNames = mContext.getResources().getStringArray(
-                R.array.vmsPublisherClients);
-        for (String publisherName : publisherNames) {
-            if (TextUtils.isEmpty(publisherName)) {
-                Log.e(TAG, "empty publisher name");
-                continue;
-            }
-            ComponentName name = ComponentName.unflattenFromString(publisherName);
-            if (name == null) {
-                Log.e(TAG, "invalid publisher name: " + publisherName);
-            }
-            mPublisherManager.bind(name);
-        }
-    }
-
-    @Override
-    public void release() {
-        mPublisherManager.release();
-        mHal.removePublisherListener(this);
-    }
-
-    @Override
-    public void dump(PrintWriter writer) {
-    }
-
-    @Override
-    public void setLayersOffering(IBinder token, VmsLayersOffering offering) {
-        mHal.setPublisherLayersOffering(token, offering);
-    }
-
-    // Implements IVmsPublisherService interface.
-    @Override
-    public void publish(IBinder token, VmsLayer layer, int publisherId, byte[] payload) {
-        if (DBG) {
-            Log.d(TAG, "Publishing for layer: " + layer);
-        }
-        ICarImpl.assertVmsPublisherPermission(mContext);
-
-        // Send the message to application listeners.
-        Set<IVmsSubscriberClient> listeners =
-                mHal.getSubscribersForLayerFromPublisher(layer, publisherId);
-
-        if (DBG) {
-            Log.d(TAG, "Number of subscribed apps: " + listeners.size());
-        }
-        for (IVmsSubscriberClient listener : listeners) {
-            try {
-                listener.onVmsMessageReceived(layer, payload);
-            } catch (RemoteException ex) {
-                Log.e(TAG, "unable to publish to listener: " + listener);
-            }
-        }
-
-        // Send the message to HAL
-        if (mHal.isHalSubscribed(layer)) {
-            Log.d(TAG, "HAL is subscribed");
-            mHal.setDataMessage(layer, payload);
-        } else {
-            Log.d(TAG, "HAL is NOT subscribed");
-        }
-    }
-
-    @Override
-    public VmsSubscriptionState getSubscriptions() {
-        ICarImpl.assertVmsPublisherPermission(mContext);
-        return mHal.getSubscriptionState();
-    }
-
-    @Override
-    public int getPublisherId(byte[] publisherInfo) {
-        ICarImpl.assertVmsPublisherPermission(mContext);
-        return mHal.getPublisherId(publisherInfo);
-    }
-
-    // Implements VmsHalListener interface
-    /**
-     * This method is only invoked by VmsHalService.notifyPublishers which is synchronized.
-     * Therefore this method only sees a non-decreasing sequence.
-     */
-    @Override
-    public void onChange(VmsSubscriptionState subscriptionState) {
-        // Send the message to application listeners.
-        for (IVmsPublisherClient client : mPublisherManager.getClients()) {
-            try {
-                client.onVmsSubscriptionChange(subscriptionState);
-            } catch (RemoteException ex) {
-                Log.e(TAG, "unable to send notification to: " + client, ex);
-            }
-        }
-    }
-
-    /**
-     * Keeps track of publishers that are using this service.
-     */
-    private static class VmsPublisherManager {
-        /**
-         * Allows to modify mPublisherMap and mPublisherConnectionMap as a single unit.
-         */
-        private final Object mLock = new Object();
-        @GuardedBy("mLock")
-        private final Map<String, PublisherConnection> mPublisherConnectionMap = new HashMap<>();
-        @GuardedBy("mLock")
-        private final Map<String, IVmsPublisherClient> mPublisherMap = new HashMap<>();
-        private final WeakReference<VmsPublisherService> mPublisherService;
-
-        public VmsPublisherManager(VmsPublisherService publisherService) {
-            mPublisherService = new WeakReference<>(publisherService);
-        }
-
-        /**
-         * Tries to bind to a publisher.
-         *
-         * @param name publisher component name (e.g. android.car.vms.logger/.LoggingService).
-         */
-        public void bind(ComponentName name) {
-            VmsPublisherService publisherService = mPublisherService.get();
-            if (publisherService == null) return;
-            String publisherName = name.flattenToString();
-            if (DBG) {
-                Log.d(TAG, "binding to: " + publisherName);
-            }
-            synchronized (mLock) {
-                if (mPublisherConnectionMap.containsKey(publisherName)) {
-                    // Already registered, nothing to do.
-                    return;
-                }
-                grantPermissions(name);
-                Intent intent = new Intent();
-                intent.setComponent(name);
-                PublisherConnection connection = new PublisherConnection();
-                if (publisherService.mContext.bindServiceAsUser(intent, connection,
-                        Context.BIND_AUTO_CREATE, UserHandle.SYSTEM)) {
-                    mPublisherConnectionMap.put(publisherName, connection);
-                } else {
-                    Log.e(TAG, "unable to bind to: " + publisherName);
-                }
-            }
-        }
-
-        /**
-         * Removes the publisher and associated connection.
-         *
-         * @param name publisher component name (e.g. android.car.vms.Logger).
-         */
-        public void unbind(ComponentName name) {
-            VmsPublisherService publisherService = mPublisherService.get();
-            if (publisherService == null) return;
-            String publisherName = name.flattenToString();
-            if (DBG) {
-                Log.d(TAG, "unbinding from: " + publisherName);
-            }
-            synchronized (mLock) {
-                boolean found = mPublisherMap.remove(publisherName) != null;
-                if (found) {
-                    PublisherConnection connection = mPublisherConnectionMap.get(publisherName);
-                    publisherService.mContext.unbindService(connection);
-                    mPublisherConnectionMap.remove(publisherName);
-                } else {
-                    Log.e(TAG, "unbind: unknown publisher." + publisherName);
-                }
-            }
-        }
-
-        /**
-         * Returns the list of publishers currently registered.
-         *
-         * @return list of publishers.
-         */
-        public List<IVmsPublisherClient> getClients() {
-            synchronized (mLock) {
-                return new ArrayList<>(mPublisherMap.values());
-            }
-        }
-
-        public void release() {
-            VmsPublisherService publisherService = mPublisherService.get();
-            if (publisherService == null) return;
-            for (PublisherConnection connection : mPublisherConnectionMap.values()) {
-                publisherService.mContext.unbindService(connection);
-            }
-            mPublisherConnectionMap.clear();
-            mPublisherMap.clear();
-        }
-
-        private void grantPermissions(ComponentName component) {
-            VmsPublisherService publisherService = mPublisherService.get();
-            if (publisherService == null) return;
-            final PackageManager packageManager = publisherService.mContext.getPackageManager();
-            final String packageName = component.getPackageName();
-            PackageInfo packageInfo;
-            try {
-                packageInfo = packageManager.getPackageInfo(packageName,
-                        PackageManager.GET_PERMISSIONS);
-            } catch (PackageManager.NameNotFoundException e) {
-                Log.e(TAG, "Error getting package info for " + packageName, e);
-                return;
-            }
-            if (packageInfo.requestedPermissions == null) return;
-            for (String permission : packageInfo.requestedPermissions) {
-                if (!publisherService.mSafePermissions.contains(permission)) {
-                    continue;
-                }
-                if (packageManager.checkPermission(permission, packageName)
-                        == PackageManager.PERMISSION_GRANTED) {
-                    continue;
-                }
-                try {
-                    packageManager.grantRuntimePermission(packageName, permission,
-                            UserHandle.SYSTEM);
-                    Log.d(TAG, "Permission " + permission + " granted to " + packageName);
-                } catch (SecurityException | IllegalArgumentException e) {
-                    Log.e(TAG, "Error while trying to grant " + permission + " to " + packageName,
-                            e);
-                }
-            }
-        }
-
-        class PublisherConnection implements ServiceConnection {
-
-            private final IBinder mToken = new Binder();
-
-            /**
-             * Once the service binds to a publisher service, the publisher binder is added to
-             * mPublisherMap
-             * and the publisher is configured to use this service.
-             */
-            @Override
-            public void onServiceConnected(ComponentName name, IBinder binder) {
-                VmsPublisherService publisherService = mPublisherService.get();
-                if (publisherService == null) return;
-                if (DBG) {
-                    Log.d(TAG, "onServiceConnected, name: " + name + ", binder: " + binder);
-                }
-                IVmsPublisherClient service = IVmsPublisherClient.Stub.asInterface(binder);
-                synchronized (mLock) {
-                    mPublisherMap.put(name.flattenToString(), service);
-                }
-                try {
-                    service.setVmsPublisherService(mToken, publisherService);
-                } catch (RemoteException e) {
-                    Log.e(TAG, "unable to configure publisher: " + name);
-                }
-            }
-
-            /**
-             * Tries to rebind to the publisher service.
-             */
-            @Override
-            public void onServiceDisconnected(ComponentName name) {
-                String publisherName = name.flattenToString();
-                Log.d(TAG, "onServiceDisconnected, name: " + publisherName);
-                VmsPublisherManager.this.unbind(name);
-                VmsPublisherManager.this.bind(name);
-            }
-        }
-    }
-}
diff --git a/service/src/com/android/car/VmsPublishersInfo.java b/service/src/com/android/car/VmsPublishersInfo.java
deleted file mode 100644
index 04ee82f..0000000
--- a/service/src/com/android/car/VmsPublishersInfo.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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 com.android.car;
-
-
-import android.car.annotation.FutureFeature;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Arrays;
-import com.android.internal.annotations.GuardedBy;
-import android.util.Log;
-
-@FutureFeature
-public class VmsPublishersInfo {
-    private static final String TAG = "VmsPublishersInfo";
-    private static final boolean DBG = true;
-    private final Object mLock = new Object();
-    @GuardedBy("mLock")
-    private final Map<InfoWrapper, Integer> mPublishersIds = new HashMap();
-    @GuardedBy("mLock")
-    private final Map<Integer, byte[]> mPublishersInfo = new HashMap();
-
-    private static class InfoWrapper {
-        private final byte[] mInfo;
-
-        public InfoWrapper(byte[] info) {
-            mInfo = info;
-        }
-
-        public byte[] getInfo() {
-            return mInfo;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (!(o instanceof InfoWrapper)) {
-                return false;
-            }
-            InfoWrapper p = (InfoWrapper) o;
-            return Arrays.equals(this.mInfo, p.mInfo);
-        }
-
-        @Override
-        public int hashCode() {
-            return Arrays.hashCode(mInfo);
-        }
-    }
-
-    /**
-     * Returns the ID associated with the publisher info. When called for the first time for a
-     * publisher info will store the info and assign an ID
-     */
-    public int getIdForInfo(byte[] publisherInfo) {
-        Integer publisherId;
-        InfoWrapper wrappedPublisherInfo = new InfoWrapper(publisherInfo);
-        synchronized (mLock) {
-            maybeAddPublisherInfoLocked(wrappedPublisherInfo);
-            publisherId = mPublishersIds.get(wrappedPublisherInfo);
-        }
-        if (DBG) {
-            Log.i(TAG, "Publisher ID is: " + publisherId);
-        }
-        return publisherId;
-    }
-
-    public byte[] getPublisherInfo(int publisherId) {
-        synchronized (mLock) {
-            return mPublishersInfo.get(publisherId).clone();
-        }
-    }
-
-    private void maybeAddPublisherInfoLocked(InfoWrapper wrappedPublisherInfo) {
-        if (!mPublishersIds.containsKey(wrappedPublisherInfo)) {
-            // Assign ID to the info
-            Integer publisherId = mPublishersIds.size();
-
-            mPublishersIds.put(wrappedPublisherInfo, publisherId);
-            mPublishersInfo.put(publisherId, wrappedPublisherInfo.getInfo());
-        }
-    }
-}
-
diff --git a/service/src/com/android/car/VmsRouting.java b/service/src/com/android/car/VmsRouting.java
deleted file mode 100644
index 2e66781..0000000
--- a/service/src/com/android/car/VmsRouting.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.annotation.FutureFeature;
-import android.car.vms.IVmsSubscriberClient;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsOperationRecorder;
-import android.car.vms.VmsSubscriptionState;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * Manages all the VMS subscriptions:
- * + Subscriptions to data messages of individual layer + version.
- * + Subscriptions to all data messages.
- * + HAL subscriptions to layer + version.
- */
-@FutureFeature
-public class VmsRouting {
-    private final Object mLock = new Object();
-    // A map of Layer + Version to subscribers.
-    @GuardedBy("mLock")
-    private Map<VmsLayer, Set<IVmsSubscriberClient>> mLayerSubscriptions = new HashMap<>();
-
-    @GuardedBy("mLock")
-    private Map<VmsLayer, Map<Integer, Set<IVmsSubscriberClient>>> mLayerSubscriptionsToPublishers =
-            new HashMap<>();
-    // A set of subscribers that are interested in any layer + version.
-    @GuardedBy("mLock")
-    private Set<IVmsSubscriberClient> mPromiscuousSubscribers = new HashSet<>();
-
-    // A set of all the layers + versions the HAL is subscribed to.
-    @GuardedBy("mLock")
-    private Set<VmsLayer> mHalSubscriptions = new HashSet<>();
-
-    @GuardedBy("mLock")
-    private Map<VmsLayer, Set<Integer>> mHalSubscriptionsToPublishers = new HashMap<>();
-    // A sequence number that is increased every time the subscription state is modified. Note that
-    // modifying the list of promiscuous subscribers does not affect the subscription state.
-    @GuardedBy("mLock")
-    private int mSequenceNumber = 0;
-
-    /**
-     * Add a subscriber subscription to data messages from a VMS layer.
-     *
-     * @param subscriber a VMS subscriber.
-     * @param layer      the layer subscribing to.
-     */
-    public void addSubscription(IVmsSubscriberClient subscriber, VmsLayer layer) {
-        //TODO(b/36902947): revise if need to sync, and return value.
-        synchronized (mLock) {
-            ++mSequenceNumber;
-            // Get or create the list of subscribers for layer and version.
-            Set<IVmsSubscriberClient> subscribers = mLayerSubscriptions.get(layer);
-
-            if (subscribers == null) {
-                subscribers = new HashSet<>();
-                mLayerSubscriptions.put(layer, subscribers);
-            }
-            // Add the subscriber to the list.
-            subscribers.add(subscriber);
-            VmsOperationRecorder.get().addSubscription(mSequenceNumber, layer);
-        }
-    }
-
-    /**
-     * Add a subscriber subscription to all data messages.
-     *
-     * @param subscriber a VMS subscriber.
-     */
-    public void addSubscription(IVmsSubscriberClient subscriber) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-            mPromiscuousSubscribers.add(subscriber);
-            VmsOperationRecorder.get().addPromiscuousSubscription(mSequenceNumber);
-        }
-    }
-
-    /**
-     * Add a subscriber subscription to data messages from a VMS layer from a specific publisher.
-     *
-     * @param subscriber  a VMS subscriber.
-     * @param layer       the layer to subscribing to.
-     * @param publisherId the publisher ID.
-     */
-    public void addSubscription(IVmsSubscriberClient subscriber, VmsLayer layer, int publisherId) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-
-            Map<Integer, Set<IVmsSubscriberClient>> publisherIdsToSubscribersForLayer =
-                    mLayerSubscriptionsToPublishers.get(layer);
-
-            if (publisherIdsToSubscribersForLayer == null) {
-                publisherIdsToSubscribersForLayer = new HashMap<>();
-                mLayerSubscriptionsToPublishers.put(layer, publisherIdsToSubscribersForLayer);
-            }
-
-            Set<IVmsSubscriberClient> subscribersForPublisher =
-                    publisherIdsToSubscribersForLayer.get(publisherId);
-
-            if (subscribersForPublisher == null) {
-                subscribersForPublisher = new HashSet<>();
-                publisherIdsToSubscribersForLayer.put(publisherId, subscribersForPublisher);
-            }
-
-            // Add the subscriber to the list.
-            subscribersForPublisher.add(subscriber);
-        }
-    }
-
-    /**
-     * Remove a subscription for a layer + version and make sure to remove the key if there are no
-     * more subscribers.
-     *
-     * @param subscriber to remove.
-     * @param layer      of the subscription.
-     */
-    public void removeSubscription(IVmsSubscriberClient subscriber, VmsLayer layer) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-            Set<IVmsSubscriberClient> subscribers = mLayerSubscriptions.get(layer);
-
-            // If there are no subscribers we are done.
-            if (subscribers == null) {
-                return;
-            }
-            subscribers.remove(subscriber);
-            VmsOperationRecorder.get().removeSubscription(mSequenceNumber, layer);
-
-            // If there are no more subscribers then remove the list.
-            if (subscribers.isEmpty()) {
-                mLayerSubscriptions.remove(layer);
-            }
-        }
-    }
-
-    /**
-     * Remove a subscriber subscription to all data messages.
-     *
-     * @param subscriber a VMS subscriber.
-     */
-    public void removeSubscription(IVmsSubscriberClient subscriber) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-            mPromiscuousSubscribers.remove(subscriber);
-            VmsOperationRecorder.get().removePromiscuousSubscription(mSequenceNumber);
-        }
-    }
-
-    /**
-     * Remove a subscription to data messages from a VMS layer from a specific publisher.
-     *
-     * @param subscriber  a VMS subscriber.
-     * @param layer       the layer to unsubscribing from.
-     * @param publisherId the publisher ID.
-     */
-    public void removeSubscription(IVmsSubscriberClient subscriber,
-                                   VmsLayer layer,
-                                   int publisherId) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-
-            Map<Integer, Set<IVmsSubscriberClient>> subscribersToPublishers =
-                    mLayerSubscriptionsToPublishers.get(layer);
-
-            if (subscribersToPublishers == null) {
-                return;
-            }
-
-            Set<IVmsSubscriberClient> subscribers = subscribersToPublishers.get(publisherId);
-
-            if (subscribers == null) {
-                return;
-            }
-            subscribers.remove(subscriber);
-
-            if (subscribers.isEmpty()) {
-                subscribersToPublishers.remove(publisherId);
-            }
-
-            if (subscribersToPublishers.isEmpty()) {
-                mLayerSubscriptionsToPublishers.remove(layer);
-            }
-        }
-    }
-
-    /**
-     * Remove a subscriber from all routes (optional operation).
-     *
-     * @param subscriber a VMS subscriber.
-     */
-    public void removeDeadSubscriber(IVmsSubscriberClient subscriber) {
-        synchronized (mLock) {
-            // Remove the subscriber from all the routes.
-            for (VmsLayer layer : mLayerSubscriptions.keySet()) {
-                removeSubscription(subscriber, layer);
-            }
-            // Remove the subscriber from the loggers.
-            removeSubscription(subscriber);
-        }
-    }
-
-    /**
-     * Returns a list of all the subscribers for a layer from a publisher. This includes
-     * subscribers that subscribed to this layer from all publishers, subscribed to this layer
-     * from a specific publisher, and the promiscuous subscribers.
-     *
-     * @param layer       The layer of the message.
-     * @param publisherId the ID of the client that published the message to be routed.
-     * @return a list of the subscribers.
-     */
-    public Set<IVmsSubscriberClient> getSubscribersForLayerFromPublisher(VmsLayer layer,
-                                                                         int publisherId) {
-        Set<IVmsSubscriberClient> subscribers = new HashSet<>();
-        synchronized (mLock) {
-            // Add the subscribers which explicitly subscribed to this layer
-            if (mLayerSubscriptions.containsKey(layer)) {
-                subscribers.addAll(mLayerSubscriptions.get(layer));
-            }
-
-            // Add the subscribers which explicitly subscribed to this layer and publisher
-            if (mLayerSubscriptionsToPublishers.containsKey(layer)) {
-                if (mLayerSubscriptionsToPublishers.get(layer).containsKey(publisherId)) {
-                    subscribers.addAll(mLayerSubscriptionsToPublishers.get(layer).get(publisherId));
-                }
-            }
-
-            // Add the promiscuous subscribers.
-            subscribers.addAll(mPromiscuousSubscribers);
-        }
-        return subscribers;
-    }
-
-    /**
-     * Returns a list with all the subscribers.
-     */
-    public Set<IVmsSubscriberClient> getAllSubscribers() {
-        Set<IVmsSubscriberClient> subscribers = new HashSet<>();
-        synchronized (mLock) {
-            for (VmsLayer layer : mLayerSubscriptions.keySet()) {
-                subscribers.addAll(mLayerSubscriptions.get(layer));
-            }
-            // Add the promiscuous subscribers.
-            subscribers.addAll(mPromiscuousSubscribers);
-        }
-        return subscribers;
-    }
-
-    /**
-     * Checks if a subscriber is subscribed to any messages.
-     *
-     * @param subscriber that may have subscription.
-     * @return true if the subscriber uis subscribed to messages.
-     */
-    public boolean containsSubscriber(IVmsSubscriberClient subscriber) {
-        synchronized (mLock) {
-            // Check if subscriber is subscribed to a layer.
-            for (Set<IVmsSubscriberClient> layerSubscribers : mLayerSubscriptions.values()) {
-                if (layerSubscribers.contains(subscriber)) {
-                    return true;
-                }
-            }
-            // Check is subscriber is subscribed to all data messages.
-            return mPromiscuousSubscribers.contains(subscriber);
-        }
-    }
-
-    /**
-     * Add a layer and version to the HAL subscriptions.
-     *
-     * @param layer the HAL subscribes to.
-     */
-    public void addHalSubscription(VmsLayer layer) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-            mHalSubscriptions.add(layer);
-            VmsOperationRecorder.get().addHalSubscription(mSequenceNumber, layer);
-        }
-    }
-
-    public void addHalSubscriptionToPublisher(VmsLayer layer, int publisherId) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-
-            Set<Integer> publisherIdsForLayer = mHalSubscriptionsToPublishers.get(layer);
-            if (publisherIdsForLayer == null) {
-                publisherIdsForLayer = new HashSet<>();
-                mHalSubscriptionsToPublishers.put(layer, publisherIdsForLayer);
-            }
-            publisherIdsForLayer.add(publisherId);
-        }
-    }
-
-    /**
-     * remove a layer and version to the HAL subscriptions.
-     *
-     * @param layer the HAL unsubscribes from.
-     */
-    public void removeHalSubscription(VmsLayer layer) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-            mHalSubscriptions.remove(layer);
-            VmsOperationRecorder.get().removeHalSubscription(mSequenceNumber, layer);
-        }
-    }
-
-    public void removeHalSubscriptionToPublisher(VmsLayer layer, int publisherId) {
-        synchronized (mLock) {
-            ++mSequenceNumber;
-
-            Set<Integer> publisherIdsForLayer = mHalSubscriptionsToPublishers.get(layer);
-            if (publisherIdsForLayer == null) {
-                return;
-            }
-            publisherIdsForLayer.remove(publisherId);
-
-            if (publisherIdsForLayer.isEmpty()) {
-                mHalSubscriptionsToPublishers.remove(layer);
-            }
-        }
-    }
-
-    /**
-     * checks if the HAL is subscribed to a layer.
-     *
-     * @param layer
-     * @return true if the HAL is subscribed to layer.
-     */
-    public boolean isHalSubscribed(VmsLayer layer) {
-        synchronized (mLock) {
-            return mHalSubscriptions.contains(layer);
-        }
-    }
-
-    /**
-     * checks if there are subscribers to a layer.
-     *
-     * @param layer
-     * @return true if there are subscribers to layer.
-     */
-    public boolean hasLayerSubscriptions(VmsLayer layer) {
-        synchronized (mLock) {
-            return mLayerSubscriptions.containsKey(layer) || mHalSubscriptions.contains(layer);
-        }
-    }
-
-    /**
-     * returns true if there is already a subscription for the layer from publisherId.
-     *
-     * @param layer
-     * @param publisherId
-     * @return
-     */
-    public boolean hasLayerFromPublisherSubscriptions(VmsLayer layer, int publisherId) {
-        synchronized (mLock) {
-            boolean hasClientSubscription =
-                    mLayerSubscriptionsToPublishers.containsKey(layer) &&
-                            mLayerSubscriptionsToPublishers.get(layer).containsKey(publisherId);
-
-            boolean hasHalSubscription = mHalSubscriptionsToPublishers.containsKey(layer) &&
-                    mHalSubscriptionsToPublishers.get(layer).contains(publisherId);
-
-            return hasClientSubscription || hasHalSubscription;
-        }
-    }
-
-    /**
-     * @return a Set of layers and versions which VMS clients are subscribed to.
-     */
-    public VmsSubscriptionState getSubscriptionState() {
-        synchronized (mLock) {
-            Set<VmsLayer> layers = new HashSet<>();
-            layers.addAll(mLayerSubscriptions.keySet());
-            layers.addAll(mHalSubscriptions);
-
-
-            Set<VmsAssociatedLayer> layersFromPublishers = new HashSet<>();
-            layersFromPublishers.addAll(mLayerSubscriptionsToPublishers.entrySet()
-                    .stream()
-                    .map(e -> new VmsAssociatedLayer(e.getKey(), e.getValue().keySet()))
-                    .collect(Collectors.toSet()));
-            layersFromPublishers.addAll(mHalSubscriptionsToPublishers.entrySet()
-                    .stream()
-                    .map(e -> new VmsAssociatedLayer(e.getKey(), e.getValue()))
-                    .collect(Collectors.toSet()));
-
-            return new VmsSubscriptionState(mSequenceNumber, layers, layersFromPublishers);
-        }
-    }
-}
\ No newline at end of file
diff --git a/service/src/com/android/car/VmsSubscriberService.java b/service/src/com/android/car/VmsSubscriberService.java
deleted file mode 100644
index 94f0844..0000000
--- a/service/src/com/android/car/VmsSubscriberService.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.Car;
-import android.car.annotation.FutureFeature;
-import android.car.vms.IVmsSubscriberClient;
-import android.car.vms.IVmsSubscriberService;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.content.Context;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.util.Log;
-
-import com.android.car.hal.VmsHalService;
-import com.android.internal.annotations.GuardedBy;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * + Receives HAL updates by implementing VmsHalService.VmsHalListener.
- * + Offers subscriber/publisher services by implementing IVmsService.Stub.
- */
-@FutureFeature
-public class VmsSubscriberService extends IVmsSubscriberService.Stub
-        implements CarServiceBase, VmsHalService.VmsHalSubscriberListener {
-    private static final boolean DBG = true;
-    private static final String PERMISSION = Car.PERMISSION_VMS_SUBSCRIBER;
-    private static final String TAG = "VmsSubscriberService";
-
-    private final Context mContext;
-    private final VmsHalService mHal;
-
-    @GuardedBy("mSubscriberServiceLock")
-    private final VmsSubscribersManager mSubscribersManager = new VmsSubscribersManager();
-    private final Object mSubscriberServiceLock = new Object();
-
-    /**
-     * Keeps track of subscribers of this service.
-     */
-    class VmsSubscribersManager {
-        /**
-         * Allows to modify mSubscriberMap and mListenerDeathRecipientMap as a single unit.
-         */
-        private final Object mListenerManagerLock = new Object();
-        @GuardedBy("mListenerManagerLock")
-        private final Map<IBinder, ListenerDeathRecipient> mListenerDeathRecipientMap =
-                new HashMap<>();
-        @GuardedBy("mListenerManagerLock")
-        private final Map<IBinder, IVmsSubscriberClient> mSubscriberMap = new HashMap<>();
-
-        class ListenerDeathRecipient implements IBinder.DeathRecipient {
-            private IBinder mSubscriberBinder;
-
-            ListenerDeathRecipient(IBinder subscriberBinder) {
-                mSubscriberBinder = subscriberBinder;
-            }
-
-            /**
-             * Listener died. Remove it from this service.
-             */
-            @Override
-            public void binderDied() {
-                if (DBG) {
-                    Log.d(TAG, "binderDied " + mSubscriberBinder);
-                }
-
-                // Get the Listener from the Binder
-                IVmsSubscriberClient subscriber = mSubscriberMap.get(mSubscriberBinder);
-
-                // Remove the subscriber subscriptions.
-                if (subscriber != null) {
-                    Log.d(TAG, "Removing subscriptions for dead subscriber: " + subscriber);
-                    mHal.removeDeadSubscriber(subscriber);
-                } else {
-                    Log.d(TAG, "Handling dead binder with no matching subscriber");
-
-                }
-
-                // Remove binder
-                VmsSubscribersManager.this.removeListener(mSubscriberBinder);
-            }
-
-            void release() {
-                mSubscriberBinder.unlinkToDeath(this, 0);
-            }
-        }
-
-        public void release() {
-            for (ListenerDeathRecipient recipient : mListenerDeathRecipientMap.values()) {
-                recipient.release();
-            }
-            mListenerDeathRecipientMap.clear();
-            mSubscriberMap.clear();
-        }
-
-        /**
-         * Adds the subscriber and a death recipient associated to it.
-         *
-         * @param subscriber to be added.
-         * @throws IllegalArgumentException if the subscriber is null.
-         * @throws IllegalStateException    if it was not possible to link a death recipient to the
-         *                                  subscriber.
-         */
-        public void add(IVmsSubscriberClient subscriber) {
-            ICarImpl.assertPermission(mContext, PERMISSION);
-            if (subscriber == null) {
-                Log.e(TAG, "register: subscriber is null.");
-                throw new IllegalArgumentException("subscriber cannot be null.");
-            }
-            if (DBG) {
-                Log.d(TAG, "register: " + subscriber);
-            }
-            IBinder subscriberBinder = subscriber.asBinder();
-            synchronized (mListenerManagerLock) {
-                if (mSubscriberMap.containsKey(subscriberBinder)) {
-                    // Already registered, nothing to do.
-                    return;
-                }
-                ListenerDeathRecipient deathRecipient =
-                        new ListenerDeathRecipient(subscriberBinder);
-                try {
-                    subscriberBinder.linkToDeath(deathRecipient, 0);
-                } catch (RemoteException e) {
-                    Log.e(TAG, "Failed to link death for recipient. ", e);
-                    throw new IllegalStateException(Car.CAR_NOT_CONNECTED_EXCEPTION_MSG);
-                }
-                mListenerDeathRecipientMap.put(subscriberBinder, deathRecipient);
-                mSubscriberMap.put(subscriberBinder, subscriber);
-            }
-        }
-
-        /**
-         * Removes the subscriber and associated death recipient.
-         *
-         * @param subscriber to be removed.
-         * @throws IllegalArgumentException if subscriber is null.
-         */
-        public void remove(IVmsSubscriberClient subscriber) {
-            if (DBG) {
-                Log.d(TAG, "unregisterListener");
-            }
-            ICarImpl.assertPermission(mContext, PERMISSION);
-            if (subscriber == null) {
-                Log.e(TAG, "unregister: subscriber is null.");
-                throw new IllegalArgumentException("Listener is null");
-            }
-            IBinder subscriberBinder = subscriber.asBinder();
-            removeListener(subscriberBinder);
-        }
-
-        // Removes the subscriberBinder from the current state.
-        // The function assumes that binder will exist both in subscriber and death recipients list.
-        private void removeListener(IBinder subscriberBinder) {
-            synchronized (mListenerManagerLock) {
-                boolean found = mSubscriberMap.remove(subscriberBinder) != null;
-                if (found) {
-                    mListenerDeathRecipientMap.get(subscriberBinder).release();
-                    mListenerDeathRecipientMap.remove(subscriberBinder);
-                } else {
-                    Log.e(TAG, "removeListener: subscriber was not previously registered.");
-                }
-            }
-        }
-
-        /**
-         * Returns list of subscribers currently registered.
-         *
-         * @return list of subscribers.
-         */
-        public List<IVmsSubscriberClient> getListeners() {
-            synchronized (mListenerManagerLock) {
-                return new ArrayList<>(mSubscriberMap.values());
-            }
-        }
-    }
-
-    public VmsSubscriberService(Context context, VmsHalService hal) {
-        mContext = context;
-        mHal = hal;
-    }
-
-    // Implements CarServiceBase interface.
-    @Override
-    public void init() {
-        mHal.addSubscriberListener(this);
-    }
-
-    @Override
-    public void release() {
-        mSubscribersManager.release();
-        mHal.removeSubscriberListener(this);
-    }
-
-    @Override
-    public void dump(PrintWriter writer) {
-    }
-
-    // Implements IVmsService interface.
-    @Override
-    public void addVmsSubscriberToNotifications(IVmsSubscriberClient subscriber) {
-        synchronized (mSubscriberServiceLock) {
-            // Add the subscriber so it can subscribe.
-            mSubscribersManager.add(subscriber);
-        }
-    }
-
-    @Override
-    public void removeVmsSubscriberToNotifications(IVmsSubscriberClient subscriber) {
-        synchronized (mSubscriberServiceLock) {
-            if (mHal.containsSubscriber(subscriber)) {
-                throw new IllegalArgumentException("Subscriber has active subscriptions.");
-            }
-            mSubscribersManager.remove(subscriber);
-        }
-    }
-
-    @Override
-    public void addVmsSubscriber(IVmsSubscriberClient subscriber, VmsLayer layer) {
-        synchronized (mSubscriberServiceLock) {
-            // Add the subscriber so it can subscribe.
-            mSubscribersManager.add(subscriber);
-
-            // Add the subscription for the layer.
-            mHal.addSubscription(subscriber, layer);
-        }
-    }
-
-    @Override
-    public void removeVmsSubscriber(IVmsSubscriberClient subscriber, VmsLayer layer) {
-        synchronized (mSubscriberServiceLock) {
-            // Remove the subscription.
-            mHal.removeSubscription(subscriber, layer);
-        }
-    }
-
-    @Override
-    public void addVmsSubscriberToPublisher(IVmsSubscriberClient subscriber,
-                                                  VmsLayer layer,
-                                                  int publisherId) {
-        synchronized (mSubscriberServiceLock) {
-            // Add the subscriber so it can subscribe.
-            mSubscribersManager.add(subscriber);
-
-            // Add the subscription for the layer.
-            mHal.addSubscription(subscriber, layer, publisherId);
-        }
-    }
-
-    @Override
-    public void removeVmsSubscriberToPublisher(IVmsSubscriberClient subscriber,
-                                                     VmsLayer layer,
-                                                     int publisherId) {
-        synchronized (mSubscriberServiceLock) {
-            // Remove the subscription.
-            mHal.removeSubscription(subscriber, layer, publisherId);
-        }
-    }
-
-    @Override
-    public void addVmsSubscriberPassive(IVmsSubscriberClient subscriber) {
-        synchronized (mSubscriberServiceLock) {
-            mSubscribersManager.add(subscriber);
-            mHal.addSubscription(subscriber);
-        }
-    }
-
-    @Override
-    public void removeVmsSubscriberPassive(IVmsSubscriberClient subscriber) {
-        synchronized (mSubscriberServiceLock) {
-            // Remove the subscription.
-            mHal.removeSubscription(subscriber);
-        }
-    }
-
-    @Override
-    public byte[] getPublisherInfo(int publisherId) {
-        synchronized (mSubscriberServiceLock) {
-            return mHal.getPublisherInfo(publisherId);
-        }
-    }
-
-    @Override
-    public List<VmsLayer> getAvailableLayers() {
-        //TODO(asafro): return the list of available layers once logic is implemented.
-        return Collections.emptyList();
-    }
-
-    // Implements VmsHalSubscriberListener interface
-    @Override
-    public void onDataMessage(VmsLayer layer, int publisherId, byte[] payload) {
-        if (DBG) {
-            Log.d(TAG, "Publishing a message for layer: " + layer);
-        }
-
-        Set<IVmsSubscriberClient> subscribers =
-                mHal.getSubscribersForLayerFromPublisher(layer, publisherId);
-
-        for (IVmsSubscriberClient subscriber : subscribers) {
-            try {
-                subscriber.onVmsMessageReceived(layer, payload);
-            } catch (RemoteException e) {
-                // If we could not send a record, its likely the connection snapped. Let the binder
-                // death handle the situation.
-                Log.e(TAG, "onVmsMessageReceived calling failed: ", e);
-            }
-        }
-    }
-
-    @Override
-    public void onLayersAvaiabilityChange(List<VmsAssociatedLayer> availableLayers) {
-        if (DBG) {
-            Log.d(TAG, "Publishing layers availability change: " + availableLayers);
-        }
-
-        Set<IVmsSubscriberClient> subscribers;
-        synchronized (mSubscriberServiceLock) {
-            subscribers = new HashSet<>(mSubscribersManager.getListeners());
-        }
-
-        for (IVmsSubscriberClient subscriber : subscribers) {
-            try {
-                subscriber.onLayersAvailabilityChanged(availableLayers);
-            } catch (RemoteException e) {
-                // If we could not send a record, its likely the connection snapped. Let the binder
-                // death handle the situation.
-                Log.e(TAG, "onLayersAvailabilityChanged calling failed: ", e);
-            }
-        }
-    }
-}
diff --git a/service/src/com/android/car/hal/VehicleHal.java b/service/src/com/android/car/hal/VehicleHal.java
index 21f8f51..44c81d7 100644
--- a/service/src/com/android/car/hal/VehicleHal.java
+++ b/service/src/com/android/car/hal/VehicleHal.java
@@ -80,8 +80,6 @@
     private final VendorExtensionHalService mVendorExtensionHal;
     private DiagnosticHalService mDiagnosticHal = null;
 
-    @FutureFeature
-    private VmsHalService mVmsHal;
 
 
     /** Might be re-assigned if Vehicle HAL is reconnected. */
@@ -108,9 +106,6 @@
         mHvacHal = new HvacHalService(this);
         mInputHal = new InputHalService(this);
         mVendorExtensionHal = new VendorExtensionHalService(this);
-        if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-            mVmsHal = new VmsHalService(this);
-        }
         mDiagnosticHal = new DiagnosticHalService(this);
         mAllServices.addAll(Arrays.asList(mPowerHal,
                 mSensorHal,
@@ -122,9 +117,6 @@
                 mInputHal,
                 mVendorExtensionHal,
                 mDiagnosticHal));
-        if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-            mAllServices.add(mVmsHal);
-        }
 
         mHalClient = new HalClient(vehicle, mHandlerThread.getLooper(), this /*IVehicleCallback*/);
     }
@@ -146,10 +138,6 @@
         mVendorExtensionHal = null;
         mDiagnosticHal = null;
 
-        if (FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-            mVmsHal = null;
-        }
-
         mHalClient = halClient;
     }
 
@@ -169,7 +157,6 @@
             mHvacHal = hvacHal;
             mInputHal = null;
             mVendorExtensionHal = null;
-            mVmsHal = null;
             mHalClient = halClient;
             mDiagnosticHal = diagnosticHal;
     }
@@ -281,9 +268,6 @@
         return mVendorExtensionHal;
     }
 
-    @FutureFeature
-    public VmsHalService getVmsHal() { return mVmsHal; }
-
     private void assertServiceOwnerLocked(HalServiceBase service, int property) {
         if (service != mPropertyHandlers.get(property)) {
             throw new IllegalArgumentException("Property 0x" + toHexString(property)
diff --git a/service/src/com/android/car/hal/VmsHalService.java b/service/src/com/android/car/hal/VmsHalService.java
deleted file mode 100644
index d20a453..0000000
--- a/service/src/com/android/car/hal/VmsHalService.java
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
- * 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 com.android.car.hal;
-
-import static com.android.car.CarServiceUtils.toByteArray;
-import static java.lang.Integer.toHexString;
-
-import android.car.VehicleAreaType;
-import android.car.annotation.FutureFeature;
-import android.car.vms.IVmsSubscriberClient;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayerDependency;
-import android.car.vms.VmsLayersOffering;
-import android.car.vms.VmsOperationRecorder;
-import android.car.vms.VmsSubscriptionState;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.hardware.automotive.vehicle.V2_0.VmsBaseMessageIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageType;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageWithLayerAndPublisherIdIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsOfferingMessageIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageWithLayerIntegerValuesIndex;
-import android.os.Binder;
-import android.os.IBinder;
-import android.util.Log;
-import com.android.car.CarLog;
-import com.android.car.VmsLayersAvailability;
-import com.android.car.VmsPublishersInfo;
-import com.android.car.VmsRouting;
-import com.android.internal.annotations.GuardedBy;
-
-import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * This is a glue layer between the VehicleHal and the VmsService. It sends VMS properties back and
- * forth.
- */
-@FutureFeature
-public class VmsHalService extends HalServiceBase {
-
-    private static final boolean DBG = true;
-    private static final int HAL_PROPERTY_ID = VehicleProperty.VEHICLE_MAP_SERVICE;
-    private static final String TAG = "VmsHalService";
-
-    private final static List<Integer> AVAILABILITY_MESSAGE_TYPES = Collections.unmodifiableList(
-            Arrays.asList(
-                    VmsMessageType.AVAILABILITY_RESPONSE,
-                    VmsMessageType.AVAILABILITY_CHANGE));
-
-    private boolean mIsSupported = false;
-    private CopyOnWriteArrayList<VmsHalPublisherListener> mPublisherListeners =
-            new CopyOnWriteArrayList<>();
-    private CopyOnWriteArrayList<VmsHalSubscriberListener> mSubscriberListeners =
-            new CopyOnWriteArrayList<>();
-
-    private final IBinder mHalPublisherToken = new Binder();
-    private final VehicleHal mVehicleHal;
-
-    private final Object mLock = new Object();
-    private final VmsRouting mRouting = new VmsRouting();
-    @GuardedBy("mLock")
-    private final Map<IBinder, VmsLayersOffering> mOfferings = new HashMap<>();
-    @GuardedBy("mLock")
-    private final VmsLayersAvailability mAvailableLayers = new VmsLayersAvailability();
-    private final VmsPublishersInfo mPublishersInfo = new VmsPublishersInfo();
-
-    /**
-     * The VmsPublisherService implements this interface to receive data from the HAL.
-     */
-    public interface VmsHalPublisherListener {
-        void onChange(VmsSubscriptionState subscriptionState);
-    }
-
-    /**
-     * The VmsSubscriberService implements this interface to receive data from the HAL.
-     */
-    public interface VmsHalSubscriberListener {
-        // Notifies the listener on a data Message from a publisher.
-        void onDataMessage(VmsLayer layer, int publisherId, byte[] payload);
-
-        // Notifies the listener on a change in available layers.
-        void onLayersAvaiabilityChange(List<VmsAssociatedLayer> availableLayers);
-    }
-
-    /**
-     * The VmsService implements this interface to receive data from the HAL.
-     */
-    protected VmsHalService(VehicleHal vehicleHal) {
-        mVehicleHal = vehicleHal;
-        if (DBG) {
-            Log.d(TAG, "started VmsHalService!");
-        }
-    }
-
-    public void addPublisherListener(VmsHalPublisherListener listener) {
-        mPublisherListeners.add(listener);
-    }
-
-    public void addSubscriberListener(VmsHalSubscriberListener listener) {
-        mSubscriberListeners.add(listener);
-    }
-
-    public void removePublisherListener(VmsHalPublisherListener listener) {
-        mPublisherListeners.remove(listener);
-    }
-
-    public void removeSubscriberListener(VmsHalSubscriberListener listener) {
-        mSubscriberListeners.remove(listener);
-    }
-
-    public void addSubscription(IVmsSubscriberClient listener, VmsLayer layer) {
-        boolean firstSubscriptionForLayer = false;
-        synchronized (mLock) {
-            // Check if publishers need to be notified about this change in subscriptions.
-            firstSubscriptionForLayer = !mRouting.hasLayerSubscriptions(layer);
-
-            // Add the listeners subscription to the layer
-            mRouting.addSubscription(listener, layer);
-        }
-        if (firstSubscriptionForLayer) {
-            notifyHalPublishers(layer, true);
-            notifyClientPublishers();
-        }
-    }
-
-    public void removeSubscription(IVmsSubscriberClient listener, VmsLayer layer) {
-        boolean layerHasSubscribers = true;
-        synchronized (mLock) {
-            if (!mRouting.hasLayerSubscriptions(layer)) {
-                Log.i(TAG, "Trying to remove a layer with no subscription: " + layer);
-                return;
-            }
-
-            // Remove the listeners subscription to the layer
-            mRouting.removeSubscription(listener, layer);
-
-            // Check if publishers need to be notified about this change in subscriptions.
-            layerHasSubscribers = mRouting.hasLayerSubscriptions(layer);
-        }
-        if (!layerHasSubscribers) {
-            notifyHalPublishers(layer, false);
-            notifyClientPublishers();
-        }
-    }
-
-    public void addSubscription(IVmsSubscriberClient listener) {
-        synchronized (mLock) {
-            mRouting.addSubscription(listener);
-        }
-    }
-
-    public void removeSubscription(IVmsSubscriberClient listener) {
-        synchronized (mLock) {
-            mRouting.removeSubscription(listener);
-        }
-    }
-
-    public void addSubscription(IVmsSubscriberClient listener, VmsLayer layer, int publisherId) {
-        boolean firstSubscriptionForLayer = false;
-        synchronized (mLock) {
-            // Check if publishers need to be notified about this change in subscriptions.
-            firstSubscriptionForLayer = !(mRouting.hasLayerSubscriptions(layer) ||
-                    mRouting.hasLayerFromPublisherSubscriptions(layer, publisherId));
-
-            // Add the listeners subscription to the layer
-            mRouting.addSubscription(listener, layer, publisherId);
-        }
-        if (firstSubscriptionForLayer) {
-            notifyHalPublishers(layer, true);
-            notifyClientPublishers();
-        }
-    }
-
-    public void removeSubscription(IVmsSubscriberClient listener, VmsLayer layer, int publisherId) {
-        boolean layerHasSubscribers = true;
-        synchronized (mLock) {
-            if (!mRouting.hasLayerFromPublisherSubscriptions(layer, publisherId)) {
-                Log.i(TAG, "Trying to remove a layer with no subscription: " +
-                        layer + ", publisher ID:" + publisherId);
-                return;
-            }
-
-            // Remove the listeners subscription to the layer
-            mRouting.removeSubscription(listener, layer, publisherId);
-
-            // Check if publishers need to be notified about this change in subscriptions.
-            layerHasSubscribers = mRouting.hasLayerSubscriptions(layer) ||
-                    mRouting.hasLayerFromPublisherSubscriptions(layer, publisherId);
-        }
-        if (!layerHasSubscribers) {
-            notifyHalPublishers(layer, false);
-            notifyClientPublishers();
-        }
-    }
-
-    public void removeDeadSubscriber(IVmsSubscriberClient listener) {
-        synchronized (mLock) {
-            mRouting.removeDeadSubscriber(listener);
-        }
-    }
-
-    public Set<IVmsSubscriberClient> getSubscribersForLayerFromPublisher(VmsLayer layer,
-                                                                         int publisherId) {
-        synchronized (mLock) {
-            return mRouting.getSubscribersForLayerFromPublisher(layer, publisherId);
-        }
-    }
-
-    public Set<IVmsSubscriberClient> getAllSubscribers() {
-        synchronized (mLock) {
-            return mRouting.getAllSubscribers();
-        }
-    }
-
-    public boolean isHalSubscribed(VmsLayer layer) {
-        synchronized (mLock) {
-            return mRouting.isHalSubscribed(layer);
-        }
-    }
-
-    public VmsSubscriptionState getSubscriptionState() {
-        synchronized (mLock) {
-            return mRouting.getSubscriptionState();
-        }
-    }
-
-    /**
-     * Assigns an idempotent ID for publisherInfo and stores it. The idempotency in this case means
-     * that the same publisherInfo will always, within a trip of the vehicle, return the same ID.
-     * The publisherInfo should be static for a binary and should only change as part of a software
-     * update. The publisherInfo is a serialized proto message which VMS clients can interpret.
-     */
-    public int getPublisherId(byte[] publisherInfo) {
-        if (DBG) {
-            Log.i(TAG, "Getting publisher static ID");
-        }
-        synchronized (mLock) {
-            return mPublishersInfo.getIdForInfo(publisherInfo);
-        }
-    }
-
-    public byte[] getPublisherInfo(int publisherId) {
-        if (DBG) {
-            Log.i(TAG, "Getting information for publisher ID: " + publisherId);
-        }
-        synchronized (mLock) {
-            return mPublishersInfo.getPublisherInfo(publisherId);
-        }
-    }
-
-    private void addHalSubscription(VmsLayer layer) {
-        boolean firstSubscriptionForLayer = true;
-        synchronized (mLock) {
-            // Check if publishers need to be notified about this change in subscriptions.
-            firstSubscriptionForLayer = !mRouting.hasLayerSubscriptions(layer);
-
-            // Add the listeners subscription to the layer
-            mRouting.addHalSubscription(layer);
-        }
-        if (firstSubscriptionForLayer) {
-            notifyHalPublishers(layer, true);
-            notifyClientPublishers();
-        }
-    }
-
-    private void addHalSubscriptionToPublisher(VmsLayer layer, int publisherId) {
-        boolean firstSubscriptionForLayer = true;
-        synchronized (mLock) {
-            // Check if publishers need to be notified about this change in subscriptions.
-            firstSubscriptionForLayer = !(mRouting.hasLayerSubscriptions(layer) ||
-                    mRouting.hasLayerFromPublisherSubscriptions(layer, publisherId));
-
-            // Add the listeners subscription to the layer
-            mRouting.addHalSubscriptionToPublisher(layer, publisherId);
-        }
-        if (firstSubscriptionForLayer) {
-            notifyHalPublishers(layer, publisherId, true);
-            notifyClientPublishers();
-        }
-    }
-
-    private void removeHalSubscription(VmsLayer layer) {
-        boolean layerHasSubscribers = true;
-        synchronized (mLock) {
-            if (!mRouting.hasLayerSubscriptions(layer)) {
-                Log.i(TAG, "Trying to remove a layer with no subscription: " + layer);
-                return;
-            }
-
-            // Remove the listeners subscription to the layer
-            mRouting.removeHalSubscription(layer);
-
-            // Check if publishers need to be notified about this change in subscriptions.
-            layerHasSubscribers = mRouting.hasLayerSubscriptions(layer);
-        }
-        if (!layerHasSubscribers) {
-            notifyHalPublishers(layer, false);
-            notifyClientPublishers();
-        }
-    }
-
-    public void removeHalSubscriptionFromPublisher(VmsLayer layer, int publisherId) {
-        boolean layerHasSubscribers = true;
-        synchronized (mLock) {
-            if (!mRouting.hasLayerSubscriptions(layer)) {
-                Log.i(TAG, "Trying to remove a layer with no subscription: " + layer);
-                return;
-            }
-
-            // Remove the listeners subscription to the layer
-            mRouting.removeHalSubscriptionToPublisher(layer, publisherId);
-
-            // Check if publishers need to be notified about this change in subscriptions.
-            layerHasSubscribers = mRouting.hasLayerSubscriptions(layer) ||
-                    mRouting.hasLayerFromPublisherSubscriptions(layer, publisherId);
-        }
-        if (!layerHasSubscribers) {
-            notifyHalPublishers(layer, publisherId, false);
-            notifyClientPublishers();
-        }
-    }
-
-    public boolean containsSubscriber(IVmsSubscriberClient subscriber) {
-        synchronized (mLock) {
-            return mRouting.containsSubscriber(subscriber);
-        }
-    }
-
-    public void setPublisherLayersOffering(IBinder publisherToken, VmsLayersOffering offering) {
-        Set<VmsAssociatedLayer> availableLayers = Collections.EMPTY_SET;
-        synchronized (mLock) {
-            updateOffering(publisherToken, offering);
-            VmsOperationRecorder.get().setPublisherLayersOffering(offering);
-            availableLayers = mAvailableLayers.getAvailableLayers();
-        }
-        notifyOfAvailabilityChange(availableLayers);
-    }
-
-    public Set<VmsAssociatedLayer> getAvailableLayers() {
-        //TODO(b/36872877): wrap available layers in VmsAvailabilityState similar to VmsSubscriptionState.
-        synchronized (mLock) {
-            return mAvailableLayers.getAvailableLayers();
-        }
-    }
-
-    /**
-     * Notify all the publishers and the HAL on subscription changes regardless of who triggered
-     * the change.
-     *
-     * @param layer          layer which is being subscribed to or unsubscribed from.
-     * @param hasSubscribers indicates if the notification is for subscription or unsubscription.
-     */
-    private void notifyHalPublishers(VmsLayer layer, boolean hasSubscribers) {
-        // notify the HAL
-        setSubscriptionRequest(layer, hasSubscribers);
-    }
-
-    private void notifyHalPublishers(VmsLayer layer, int publisherId, boolean hasSubscribers) {
-        // notify the HAL
-        setSubscriptionToPublisherRequest(layer, publisherId, hasSubscribers);
-    }
-
-    private void notifyClientPublishers() {
-        // Notify the App publishers
-        for (VmsHalPublisherListener listener : mPublisherListeners) {
-            // Besides the list of layers, also a timestamp is provided to the clients.
-            // They should ignore any notification with a timestamp that is older than the most
-            // recent timestamp they have seen.
-            listener.onChange(getSubscriptionState());
-        }
-    }
-
-    /**
-     * Notify all the subscribers and the HAL on layers availability change.
-     *
-     * @param availableLayers the layers which publishers claim they made publish.
-     */
-    private void notifyOfAvailabilityChange(Set<VmsAssociatedLayer> availableLayers) {
-        // notify the HAL
-        notifyAvailabilityChangeToHal(availableLayers);
-
-        // Notify the App subscribers
-        for (VmsHalSubscriberListener listener : mSubscriberListeners) {
-            listener.onLayersAvaiabilityChange(new ArrayList<>(availableLayers));
-        }
-    }
-
-    @Override
-    public void init() {
-        if (DBG) {
-            Log.d(TAG, "init()");
-        }
-        if (mIsSupported) {
-            mVehicleHal.subscribeProperty(this, HAL_PROPERTY_ID);
-        }
-    }
-
-    @Override
-    public void release() {
-        if (DBG) {
-            Log.d(TAG, "release()");
-        }
-        if (mIsSupported) {
-            mVehicleHal.unsubscribeProperty(this, HAL_PROPERTY_ID);
-        }
-        mPublisherListeners.clear();
-        mSubscriberListeners.clear();
-    }
-
-    @Override
-    public Collection<VehiclePropConfig> takeSupportedProperties(
-            Collection<VehiclePropConfig> allProperties) {
-        List<VehiclePropConfig> taken = new LinkedList<>();
-        for (VehiclePropConfig p : allProperties) {
-            if (p.prop == HAL_PROPERTY_ID) {
-                taken.add(p);
-                mIsSupported = true;
-                if (DBG) {
-                    Log.d(TAG, "takeSupportedProperties: " + toHexString(p.prop));
-                }
-                break;
-            }
-        }
-        return taken;
-    }
-
-    /**
-     * Consumes/produces HAL messages. The format of these messages is defined in:
-     * hardware/interfaces/automotive/vehicle/2.1/types.hal
-     */
-    @Override
-    public void handleHalEvents(List<VehiclePropValue> values) {
-        if (DBG) {
-            Log.d(TAG, "Handling a VMS property change");
-        }
-        for (VehiclePropValue v : values) {
-            ArrayList<Integer> vec = v.value.int32Values;
-            int messageType = vec.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE);
-
-            if (DBG) {
-                Log.d(TAG, "Handling VMS message type: " + messageType);
-            }
-            switch (messageType) {
-                case VmsMessageType.DATA:
-                    handleDataEvent(vec, toByteArray(v.value.bytes));
-                    break;
-                case VmsMessageType.SUBSCRIBE:
-                    handleSubscribeEvent(vec);
-                    break;
-                case VmsMessageType.UNSUBSCRIBE:
-                    handleUnsubscribeEvent(vec);
-                    break;
-                case VmsMessageType.SUBSCRIBE_TO_PUBLISHER:
-                    handleSubscribeToPublisherEvent(vec);
-                    break;
-                case VmsMessageType.UNSUBSCRIBE_TO_PUBLISHER:
-                    handleUnsubscribeFromPublisherEvent(vec);
-                    break;
-                case VmsMessageType.OFFERING:
-                    handleOfferingEvent(vec);
-                    break;
-                case VmsMessageType.AVAILABILITY_REQUEST:
-                    handleHalAvailabilityRequestEvent();
-                    break;
-                case VmsMessageType.SUBSCRIPTIONS_REQUEST:
-                    handleSubscriptionRequestEvent();
-                    break;
-                default:
-                    throw new IllegalArgumentException("Unexpected message type: " + messageType);
-            }
-        }
-    }
-
-    private VmsLayer parseVmsLayerFromSimpleMessageIntegerValues(List<Integer> integerValues) {
-        return new VmsLayer(integerValues.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_TYPE),
-                integerValues.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_SUBTYPE),
-                integerValues.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_VERSION));
-    }
-
-    private VmsLayer parseVmsLayerFromDataMessageIntegerValues(List<Integer> integerValues) {
-        return parseVmsLayerFromSimpleMessageIntegerValues(integerValues);
-    }
-
-    private int parsePublisherIdFromDataMessageIntegerValues(List<Integer> integerValues) {
-        return integerValues.get(VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.PUBLISHER_ID);
-    }
-
-
-    /**
-     * Data message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Layer id.
-     * <li>Layer version.
-     * <li>Layer subtype.
-     * <li>Publisher ID.
-     * <li>Payload.
-     * </ul>
-     */
-    private void handleDataEvent(List<Integer> integerValues, byte[] payload) {
-        VmsLayer vmsLayer = parseVmsLayerFromDataMessageIntegerValues(integerValues);
-        int publisherId = parsePublisherIdFromDataMessageIntegerValues(integerValues);
-        if (DBG) {
-            Log.d(TAG, "Handling a data event for Layer: " + vmsLayer);
-        }
-
-        // Send the message.
-        for (VmsHalSubscriberListener listener : mSubscriberListeners) {
-            listener.onDataMessage(vmsLayer, publisherId, payload);
-        }
-    }
-
-    /**
-     * Subscribe message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Layer id.
-     * <li>Layer version.
-     * <li>Layer subtype.
-     * </ul>
-     */
-    private void handleSubscribeEvent(List<Integer> integerValues) {
-        VmsLayer vmsLayer = parseVmsLayerFromSimpleMessageIntegerValues(integerValues);
-        if (DBG) {
-            Log.d(TAG, "Handling a subscribe event for Layer: " + vmsLayer);
-        }
-        addHalSubscription(vmsLayer);
-    }
-
-    /**
-     * Subscribe message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Layer id.
-     * <li>Layer version.
-     * <li>Layer subtype.
-     * <li>Publisher ID
-     * </ul>
-     */
-    private void handleSubscribeToPublisherEvent(List<Integer> integerValues) {
-        VmsLayer vmsLayer = parseVmsLayerFromSimpleMessageIntegerValues(integerValues);
-        if (DBG) {
-            Log.d(TAG, "Handling a subscribe event for Layer: " + vmsLayer);
-        }
-        int publisherId =
-                integerValues.get(VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.PUBLISHER_ID);
-        addHalSubscriptionToPublisher(vmsLayer, publisherId);
-    }
-
-    /**
-     * Unsubscribe message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Layer id.
-     * <li>Layer version.
-     * </ul>
-     */
-    private void handleUnsubscribeEvent(List<Integer> integerValues) {
-        VmsLayer vmsLayer = parseVmsLayerFromSimpleMessageIntegerValues(integerValues);
-        if (DBG) {
-            Log.d(TAG, "Handling an unsubscribe event for Layer: " + vmsLayer);
-        }
-        removeHalSubscription(vmsLayer);
-    }
-
-    /**
-     * Unsubscribe message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Layer id.
-     * <li>Layer version.
-     * </ul>
-     */
-    private void handleUnsubscribeFromPublisherEvent(List<Integer> integerValues) {
-        VmsLayer vmsLayer = parseVmsLayerFromSimpleMessageIntegerValues(integerValues);
-        int publisherId =
-                integerValues.get(VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.PUBLISHER_ID);
-        if (DBG) {
-            Log.d(TAG, "Handling an unsubscribe event for Layer: " + vmsLayer);
-        }
-        removeHalSubscriptionFromPublisher(vmsLayer, publisherId);
-    }
-
-    private static int NUM_INTEGERS_IN_VMS_LAYER = 3;
-
-    private VmsLayer parseVmsLayerFromIndex(List<Integer> integerValues, int index) {
-        int layerType = integerValues.get(index++);
-        int layerSutype = integerValues.get(index++);
-        int layerVersion = integerValues.get(index++);
-        return new VmsLayer(layerType, layerSutype, layerVersion);
-    }
-
-    /**
-     * Offering message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Publisher ID.
-     * <li>Number of offerings.
-     * <li>Each offering consists of:
-     * <ul>
-     * <li>Layer id.
-     * <li>Layer version.
-     * <li>Number of layer dependencies.
-     * <li>Layer type/subtype/version.
-     * </ul>
-     * </ul>
-     */
-    private void handleOfferingEvent(List<Integer> integerValues) {
-        int publisherId = integerValues.get(VmsOfferingMessageIntegerValuesIndex.PUBLISHER_ID);
-        int numLayersDependencies =
-                integerValues.get(
-                        VmsOfferingMessageIntegerValuesIndex.NUMBER_OF_OFFERS);
-        int idx = VmsOfferingMessageIntegerValuesIndex.OFFERING_START;
-
-        Set<VmsLayerDependency> offeredLayers = new HashSet<>();
-
-        // An offering is layerId, LayerVersion, LayerType, NumDeps, <LayerId, LayerVersion> X NumDeps.
-        for (int i = 0; i < numLayersDependencies; i++) {
-            VmsLayer offeredLayer = parseVmsLayerFromIndex(integerValues, idx);
-            idx += NUM_INTEGERS_IN_VMS_LAYER;
-
-            int numDependenciesForLayer = integerValues.get(idx++);
-            if (numDependenciesForLayer == 0) {
-                offeredLayers.add(new VmsLayerDependency(offeredLayer));
-            } else {
-                Set<VmsLayer> dependencies = new HashSet<>();
-
-                for (int j = 0; j < numDependenciesForLayer; j++) {
-                    VmsLayer dependantLayer = parseVmsLayerFromIndex(integerValues, idx);
-                    idx += NUM_INTEGERS_IN_VMS_LAYER;
-                    dependencies.add(dependantLayer);
-                }
-                offeredLayers.add(new VmsLayerDependency(offeredLayer, dependencies));
-            }
-        }
-        // Store the HAL offering.
-        VmsLayersOffering offering = new VmsLayersOffering(offeredLayers, publisherId);
-        synchronized (mLock) {
-            updateOffering(mHalPublisherToken, offering);
-            VmsOperationRecorder.get().setHalPublisherLayersOffering(offering);
-        }
-    }
-
-    /**
-     * Availability message format:
-     * <ul>
-     * <li>Message type.
-     * <li>Number of layers.
-     * <li>Layer type/subtype/version.
-     * </ul>
-     */
-    private void handleHalAvailabilityRequestEvent() {
-        synchronized (mLock) {
-            Collection<VmsAssociatedLayer> availableLayers = mAvailableLayers.getAvailableLayers();
-            VehiclePropValue vehiclePropertyValue =
-                    toAvailabilityUpdateVehiclePropValue(
-                            availableLayers,
-                            VmsMessageType.AVAILABILITY_RESPONSE);
-
-            setPropertyValue(vehiclePropertyValue);
-        }
-    }
-
-    /**
-     * VmsSubscriptionRequestFormat:
-     * <ul>
-     * <li>Message type.
-     * </ul>
-     * <p>
-     * VmsSubscriptionResponseFormat:
-     * <ul>
-     * <li>Message type.
-     * <li>Sequence number.
-     * <li>Number of layers.
-     * <li>Layer type/subtype/version.
-     * </ul>
-     */
-    private void handleSubscriptionRequestEvent() {
-        VmsSubscriptionState subscription = getSubscriptionState();
-        VehiclePropValue vehicleProp =
-                toTypedVmsVehiclePropValue(VmsMessageType.SUBSCRIPTIONS_RESPONSE);
-        VehiclePropValue.RawValue v = vehicleProp.value;
-        v.int32Values.add(subscription.getSequenceNumber());
-        Set<VmsLayer> layers = subscription.getLayers();
-        v.int32Values.add(layers.size());
-
-        //TODO(asafro): get the real number of associated layers in the subscriptions
-        //              state and send the associated layers themselves.
-        v.int32Values.add(0);
-
-        for (VmsLayer layer : layers) {
-            v.int32Values.add(layer.getType());
-            v.int32Values.add(layer.getSubtype());
-            v.int32Values.add(layer.getVersion());
-        }
-        setPropertyValue(vehicleProp);
-    }
-
-    private void updateOffering(IBinder publisherToken, VmsLayersOffering offering) {
-        Set<VmsAssociatedLayer> availableLayers = Collections.EMPTY_SET;
-        synchronized (mLock) {
-            mOfferings.put(publisherToken, offering);
-
-            // Update layers availability.
-            mAvailableLayers.setPublishersOffering(mOfferings.values());
-
-            availableLayers = mAvailableLayers.getAvailableLayers();
-        }
-        notifyOfAvailabilityChange(availableLayers);
-    }
-
-    @Override
-    public void dump(PrintWriter writer) {
-        writer.println(TAG);
-        writer.println("VmsProperty " + (mIsSupported ? "" : "not") + " supported.");
-    }
-
-    /**
-     * Updates the VMS HAL property with the given value.
-     *
-     * @param layer          layer data to update the hal property.
-     * @param hasSubscribers if it is a subscribe or unsubscribe message.
-     * @return true if the call to the HAL to update the property was successful.
-     */
-    public boolean setSubscriptionRequest(VmsLayer layer, boolean hasSubscribers) {
-        VehiclePropValue vehiclePropertyValue = toTypedVmsVehiclePropValueWithLayer(
-                hasSubscribers ? VmsMessageType.SUBSCRIBE : VmsMessageType.UNSUBSCRIBE, layer);
-        return setPropertyValue(vehiclePropertyValue);
-    }
-
-    public boolean setSubscriptionToPublisherRequest(VmsLayer layer,
-                                                     int publisherId,
-                                                     boolean hasSubscribers) {
-        VehiclePropValue vehiclePropertyValue = toTypedVmsVehiclePropValueWithLayer(
-                hasSubscribers ?
-                        VmsMessageType.SUBSCRIBE_TO_PUBLISHER :
-                        VmsMessageType.UNSUBSCRIBE_TO_PUBLISHER, layer);
-        vehiclePropertyValue.value.int32Values.add(publisherId);
-        return setPropertyValue(vehiclePropertyValue);
-    }
-
-    public boolean setDataMessage(VmsLayer layer, byte[] payload) {
-        VehiclePropValue vehiclePropertyValue =
-                toTypedVmsVehiclePropValueWithLayer(VmsMessageType.DATA, layer);
-        VehiclePropValue.RawValue v = vehiclePropertyValue.value;
-        v.bytes.ensureCapacity(payload.length);
-        for (byte b : payload) {
-            v.bytes.add(b);
-        }
-        return setPropertyValue(vehiclePropertyValue);
-    }
-
-    public boolean notifyAvailabilityChangeToHal(Collection<VmsAssociatedLayer> availableLayers) {
-        VehiclePropValue vehiclePropertyValue =
-                toAvailabilityUpdateVehiclePropValue(
-                        availableLayers,
-                        VmsMessageType.AVAILABILITY_CHANGE);
-
-        return setPropertyValue(vehiclePropertyValue);
-    }
-
-    public boolean setPropertyValue(VehiclePropValue vehiclePropertyValue) {
-        try {
-            mVehicleHal.set(vehiclePropertyValue);
-            return true;
-        } catch (PropertyTimeoutException e) {
-            Log.e(CarLog.TAG_PROPERTY, "set, property not ready 0x" + toHexString(HAL_PROPERTY_ID));
-        }
-        return false;
-    }
-
-    private static VehiclePropValue toTypedVmsVehiclePropValue(int messageType) {
-        VehiclePropValue vehicleProp = new VehiclePropValue();
-        vehicleProp.prop = HAL_PROPERTY_ID;
-        vehicleProp.areaId = VehicleAreaType.VEHICLE_AREA_TYPE_NONE;
-        VehiclePropValue.RawValue v = vehicleProp.value;
-
-        v.int32Values.add(messageType);
-        return vehicleProp;
-    }
-
-    /**
-     * Creates a {@link VehiclePropValue}
-     */
-    private static VehiclePropValue toTypedVmsVehiclePropValueWithLayer(
-            int messageType, VmsLayer layer) {
-        VehiclePropValue vehicleProp = toTypedVmsVehiclePropValue(messageType);
-        VehiclePropValue.RawValue v = vehicleProp.value;
-        v.int32Values.add(layer.getType());
-        v.int32Values.add(layer.getSubtype());
-        v.int32Values.add(layer.getVersion());
-        return vehicleProp;
-    }
-
-    private static VehiclePropValue toAvailabilityUpdateVehiclePropValue(
-            Collection<VmsAssociatedLayer> availableAssociatedLayers, int messageType) {
-
-        if (!AVAILABILITY_MESSAGE_TYPES.contains(messageType)) {
-            throw new IllegalArgumentException("Unsupported availability type: " + messageType);
-        }
-        VehiclePropValue vehicleProp =
-                toTypedVmsVehiclePropValue(messageType);
-        populateAvailabilityPropValueFields(availableAssociatedLayers, vehicleProp);
-        return vehicleProp;
-
-    }
-
-    private static void populateAvailabilityPropValueFields(
-            Collection<VmsAssociatedLayer> availableAssociatedLayers,
-            VehiclePropValue vehicleProp) {
-        VehiclePropValue.RawValue v = vehicleProp.value;
-        int numLayers = availableAssociatedLayers.size();
-        v.int32Values.add(numLayers);
-        for (VmsAssociatedLayer layer : availableAssociatedLayers) {
-            v.int32Values.add(layer.getVmsLayer().getType());
-            v.int32Values.add(layer.getVmsLayer().getSubtype());
-            v.int32Values.add(layer.getVmsLayer().getVersion());
-            v.int32Values.add(layer.getPublisherIds().size());
-            for (int publisherId : layer.getPublisherIds()) {
-                v.int32Values.add(publisherId);
-            }
-        }
-    }
-}
diff --git a/tests/VmsPublisherClientSample/Android.mk b/tests/VmsPublisherClientSample/Android.mk
deleted file mode 100644
index 2aa6c40..0000000
--- a/tests/VmsPublisherClientSample/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-#
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := VmsPublisherClientSample
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_CERTIFICATE := testkey
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_JAVA_LIBRARIES += android.car
-
-include $(BUILD_PACKAGE)
\ No newline at end of file
diff --git a/tests/VmsPublisherClientSample/AndroidManifest.xml b/tests/VmsPublisherClientSample/AndroidManifest.xml
deleted file mode 100644
index fdc1a31..0000000
--- a/tests/VmsPublisherClientSample/AndroidManifest.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.google.android.car.vms.publisher">
-
-    <uses-permission android:name="android.car.permission.VMS_PUBLISHER" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
-    <uses-permission android:name="android.permission.CAMERA"/>
-
-    <uses-sdk android:minSdkVersion="25" android:targetSdkVersion='25'/>
-
-    <application android:label="@string/app_name"
-                 android:icon="@mipmap/ic_launcher"
-                 android:directBootAware="true">
-        <service android:name=".VmsPublisherClientSampleService"
-                 android:exported="true"
-                 android:singleUser="true">
-        </service>
-    </application>
-</manifest>
diff --git a/tests/VmsPublisherClientSample/res/mipmap-hdpi/ic_launcher.png b/tests/VmsPublisherClientSample/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index cde69bc..0000000
--- a/tests/VmsPublisherClientSample/res/mipmap-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsPublisherClientSample/res/mipmap-mdpi/ic_launcher.png b/tests/VmsPublisherClientSample/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index c133a0c..0000000
--- a/tests/VmsPublisherClientSample/res/mipmap-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsPublisherClientSample/res/mipmap-xhdpi/ic_launcher.png b/tests/VmsPublisherClientSample/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bfa42f0..0000000
--- a/tests/VmsPublisherClientSample/res/mipmap-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsPublisherClientSample/res/mipmap-xxhdpi/ic_launcher.png b/tests/VmsPublisherClientSample/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 324e72c..0000000
--- a/tests/VmsPublisherClientSample/res/mipmap-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsPublisherClientSample/res/mipmap-xxxhdpi/ic_launcher.png b/tests/VmsPublisherClientSample/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index aee44e1..0000000
--- a/tests/VmsPublisherClientSample/res/mipmap-xxxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsPublisherClientSample/res/values/strings.xml b/tests/VmsPublisherClientSample/res/values/strings.xml
deleted file mode 100644
index df8bf05..0000000
--- a/tests/VmsPublisherClientSample/res/values/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<resources>
-  <string name="app_name">VmsPublisherClientSample</string>
-</resources>
diff --git a/tests/VmsPublisherClientSample/src/com/google/android/car/vms/publisher/VmsPublisherClientSampleService.java b/tests/VmsPublisherClientSample/src/com/google/android/car/vms/publisher/VmsPublisherClientSampleService.java
deleted file mode 100644
index e235f1e..0000000
--- a/tests/VmsPublisherClientSample/src/com/google/android/car/vms/publisher/VmsPublisherClientSampleService.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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 com.google.android.car.vms.publisher;
-
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsPublisherClientService;
-import android.car.vms.VmsSubscriptionState;
-import android.os.Handler;
-import android.os.Message;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * This service is launched during the initialization of the VMS publisher service.
- * Once onVmsPublisherServiceReady is invoked, it starts publishing a single byte every second.
- */
-public class VmsPublisherClientSampleService extends VmsPublisherClientService {
-    public static final int PUBLISH_EVENT = 0;
-    public static final VmsLayer TEST_LAYER = new VmsLayer(0, 0, 0);
-    public static final int PUBLISHER_ID = 1;
-
-    private byte mCounter = 0;
-    private AtomicBoolean mInitialized = new AtomicBoolean(false);
-
-    private final Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            if (msg.what == PUBLISH_EVENT && mInitialized.get()) {
-                periodicPublish();
-            }
-        }
-    };
-
-    /**
-     * Notifies that the publisher services are ready to be used: {@link #publish(VmsLayer, byte[])}
-     * and {@link #getSubscriptions()}.
-     */
-    @Override
-    public void onVmsPublisherServiceReady() {
-        VmsSubscriptionState subscriptionState = getSubscriptions();
-        onVmsSubscriptionChange(subscriptionState);
-    }
-
-    @Override
-    public void onVmsSubscriptionChange(VmsSubscriptionState subscriptionState) {
-        if (mInitialized.compareAndSet(false, true)) {
-            for (VmsLayer layer : subscriptionState.getLayers()) {
-                if (layer.equals(TEST_LAYER)) {
-                    mHandler.sendEmptyMessage(PUBLISH_EVENT);
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        mInitialized.set(false);
-        mHandler.removeMessages(PUBLISH_EVENT);
-    }
-
-    private void periodicPublish() {
-        publish(TEST_LAYER, PUBLISHER_ID, new byte[]{mCounter});
-        ++mCounter;
-        mHandler.sendEmptyMessageDelayed(PUBLISH_EVENT, 1000);
-    }
-}
diff --git a/tests/VmsSubscriberClientSample/Android.mk b/tests/VmsSubscriberClientSample/Android.mk
deleted file mode 100644
index f59e267..0000000
--- a/tests/VmsSubscriberClientSample/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# 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.
-#
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := VmsSubscriberClientSample
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_CERTIFICATE := platform
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_JAVA_LIBRARIES += android.car
-
-include packages/services/Car/car-support-lib/car-support.mk
-
-include $(BUILD_PACKAGE)
\ No newline at end of file
diff --git a/tests/VmsSubscriberClientSample/AndroidManifest.xml b/tests/VmsSubscriberClientSample/AndroidManifest.xml
deleted file mode 100644
index bc798d7..0000000
--- a/tests/VmsSubscriberClientSample/AndroidManifest.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-          package="com.google.android.car.vms.subscriber"
-          android:sharedUserId="android.uid.system">
-    <uses-sdk android:minSdkVersion="25" android:targetSdkVersion='25'/>
-
-    <application android:label="@string/app_name"
-                 android:icon="@mipmap/ic_launcher">
-        <meta-data
-            android:name="android.car.application"
-            android:resource="@xml/automotive_app_desc"/>
-        <activity android:name=".VmsSubscriberClientSampleActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
\ No newline at end of file
diff --git a/tests/VmsSubscriberClientSample/res/layout/activity_main.xml b/tests/VmsSubscriberClientSample/res/layout/activity_main.xml
deleted file mode 100644
index ce05a4d..0000000
--- a/tests/VmsSubscriberClientSample/res/layout/activity_main.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/activity_main"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="@dimen/activity_vertical_margin"
-    android:paddingBottom="@dimen/activity_vertical_margin"
-    android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
-    tools:context="vms.apps.android.google.com.java.myapplication.MainActivity">
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:text=""
-        android:id="@+id/textview"/>
-</RelativeLayout>
diff --git a/tests/VmsSubscriberClientSample/res/mipmap-hdpi/ic_launcher.png b/tests/VmsSubscriberClientSample/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index cde69bc..0000000
--- a/tests/VmsSubscriberClientSample/res/mipmap-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsSubscriberClientSample/res/mipmap-mdpi/ic_launcher.png b/tests/VmsSubscriberClientSample/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index c133a0c..0000000
--- a/tests/VmsSubscriberClientSample/res/mipmap-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsSubscriberClientSample/res/mipmap-xhdpi/ic_launcher.png b/tests/VmsSubscriberClientSample/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bfa42f0..0000000
--- a/tests/VmsSubscriberClientSample/res/mipmap-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsSubscriberClientSample/res/mipmap-xxhdpi/ic_launcher.png b/tests/VmsSubscriberClientSample/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 324e72c..0000000
--- a/tests/VmsSubscriberClientSample/res/mipmap-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsSubscriberClientSample/res/mipmap-xxxhdpi/ic_launcher.png b/tests/VmsSubscriberClientSample/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index aee44e1..0000000
--- a/tests/VmsSubscriberClientSample/res/mipmap-xxxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/tests/VmsSubscriberClientSample/res/values-w820dp/dimens.xml b/tests/VmsSubscriberClientSample/res/values-w820dp/dimens.xml
deleted file mode 100644
index 308a194..0000000
--- a/tests/VmsSubscriberClientSample/res/values-w820dp/dimens.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<resources>
-  <!-- Example customization of dimensions originally defined in res/values/dimens.xml
-         (such as screen margins) for screens with more than 820dp of available width. This
-         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
-  <dimen name="activity_horizontal_margin">64dp</dimen>
-</resources>
diff --git a/tests/VmsSubscriberClientSample/res/values/colors.xml b/tests/VmsSubscriberClientSample/res/values/colors.xml
deleted file mode 100644
index 5a077b3..0000000
--- a/tests/VmsSubscriberClientSample/res/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <color name="colorPrimary">#3F51B5</color>
-  <color name="colorPrimaryDark">#303F9F</color>
-  <color name="colorAccent">#FF4081</color>
-</resources>
diff --git a/tests/VmsSubscriberClientSample/res/values/dimens.xml b/tests/VmsSubscriberClientSample/res/values/dimens.xml
deleted file mode 100644
index acf94cc..0000000
--- a/tests/VmsSubscriberClientSample/res/values/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<resources>
-  <!-- Default screen margins, per the Android Design guidelines. -->
-  <dimen name="activity_horizontal_margin">16dp</dimen>
-  <dimen name="activity_vertical_margin">16dp</dimen>
-</resources>
diff --git a/tests/VmsSubscriberClientSample/res/values/strings.xml b/tests/VmsSubscriberClientSample/res/values/strings.xml
deleted file mode 100644
index 24df55e..0000000
--- a/tests/VmsSubscriberClientSample/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<resources>
-  <string name="app_name">VmsSubscriberClientSample</string>
-</resources>
diff --git a/tests/VmsSubscriberClientSample/res/values/styles.xml b/tests/VmsSubscriberClientSample/res/values/styles.xml
deleted file mode 100644
index a7a0615..0000000
--- a/tests/VmsSubscriberClientSample/res/values/styles.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<resources>
-
-  <!-- Base application theme. -->
-  <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
-    <!-- Customize your theme here. -->
-  </style>
-
-</resources>
diff --git a/tests/VmsSubscriberClientSample/res/xml/automotive_app_desc.xml b/tests/VmsSubscriberClientSample/res/xml/automotive_app_desc.xml
deleted file mode 100644
index b10ddd0..0000000
--- a/tests/VmsSubscriberClientSample/res/xml/automotive_app_desc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 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.
--->
-<automotiveApp>
-    <uses name="service" />
-    <uses name="projection" />
-    <uses name="activity" class="com.google.android.car.vms.subscriber.VmsSubscriberClientSampleActivity" />
-</automotiveApp>
diff --git a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
deleted file mode 100644
index 3ac0707..0000000
--- a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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 com.google.android.car.vms.subscriber;
-
-import android.app.Activity;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsSubscriberManager;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
-import android.util.Log;
-import android.widget.TextView;
-
-import java.util.List;
-
-/**
- * Connects to the Car service during onCreate. CarConnectionCallback.onConnected is invoked when
- * the connection is ready. Then, it subscribes to a VMS layer/version and updates the TextView when
- * a message is received.
- */
-public class VmsSubscriberClientSampleActivity extends Activity {
-    private static final String TAG = "VmsSampleActivity";
-    // The layer id and version should match the ones defined in
-    // com.google.android.car.vms.publisher.VmsPublisherClientSampleService
-    public static final VmsLayer TEST_LAYER = new VmsLayer(0, 0, 0);
-
-    private Car mCarApi;
-    private TextView mTextView;
-    private VmsSubscriberManager mVmsSubscriberManager;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-        mTextView = (TextView) findViewById(R.id.textview);
-        if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            mCarApi = Car.createCar(this, mCarConnectionCallback);
-            mCarApi.connect();
-        } else {
-            Log.d(TAG, "No automotive feature.");
-        }
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        if (mCarApi != null) {
-            mCarApi.disconnect();
-        }
-        Log.i(TAG, "onDestroy");
-    }
-
-    private final CarConnectionCallback mCarConnectionCallback = new CarConnectionCallback() {
-        @Override
-        public void onConnected(Car car) {
-            Log.d(TAG, "Connected to Car Service");
-            mVmsSubscriberManager = getVmsSubscriberManager();
-            configureSubscriptions(mVmsSubscriberManager);
-        }
-
-        @Override
-        public void onDisconnected(Car car) {
-            Log.d(TAG, "Disconnect from Car Service");
-        }
-
-        private VmsSubscriberManager getVmsSubscriberManager() {
-            try {
-                return (VmsSubscriberManager) mCarApi.getCarManager(
-                        android.car.Car.VMS_SUBSCRIBER_SERVICE);
-            } catch (android.support.car.CarNotConnectedException e) {
-                Log.e(TAG, "Car is not connected!", e);
-            }
-            return null;
-        }
-
-        private void configureSubscriptions(VmsSubscriberManager vmsSubscriberManager) {
-            try {
-                vmsSubscriberManager.registerClientCallback(mClientCallback);
-                vmsSubscriberManager.subscribe(TEST_LAYER);
-            } catch (android.car.CarNotConnectedException e) {
-                Log.e(TAG, "Car is not connected!", e);
-            }
-        }
-    };
-
-    private final VmsSubscriberManager.VmsSubscriberClientCallback mClientCallback =
-            new VmsSubscriberManager.VmsSubscriberClientCallback() {
-                @Override
-                public void onVmsMessageReceived(VmsLayer layer, byte[] payload) {
-                    mTextView.setText(String.valueOf(payload[0]));
-                }
-
-                @Override
-                public void onLayersAvailabilityChanged(List<VmsLayer> availableLayers) {
-                    mTextView.setText(String.valueOf(availableLayers));
-                }
-            };
-}
diff --git a/tests/carservice_test/AndroidManifest.xml b/tests/carservice_test/AndroidManifest.xml
index 6f7ba34..6a1e2bf 100644
--- a/tests/carservice_test/AndroidManifest.xml
+++ b/tests/carservice_test/AndroidManifest.xml
@@ -43,9 +43,5 @@
             android:process="com.android.car.carservicetest.activityC"/>
         <activity android:name="com.android.car.test.SystemActivityMonitoringServiceTest$BlockingActivity"
             android:taskAffinity="com.android.car.carservicetest.block"/>
-        <service android:name=".SimpleVmsPublisherClientService"
-                 android:exported="true"
-        />
-        <service android:name=".VmsPublisherClientMockService" android:exported="true" />
     </application>
 </manifest>
diff --git a/tests/carservice_test/src/com/android/car/test/SimpleVmsPublisherClientService.java b/tests/carservice_test/src/com/android/car/test/SimpleVmsPublisherClientService.java
deleted file mode 100644
index c3c15f5..0000000
--- a/tests/carservice_test/src/com/android/car/test/SimpleVmsPublisherClientService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsPublisherClientService;
-import android.car.vms.VmsSubscriptionState;
-
-/**
- * This service is launched during the tests in VmsPublisherClientServiceTest.
- */
-@FutureFeature
-public class SimpleVmsPublisherClientService extends VmsPublisherClientService {
-    @Override
-    public void onVmsSubscriptionChange(VmsSubscriptionState subscriptionState) {
-
-    }
-
-    @Override
-    public void onVmsPublisherServiceReady() {
-        // Publish a property that is going to be verified in the test.
-        publish(VmsPublisherClientServiceTest.MOCK_PUBLISHER_LAYER,
-                VmsPublisherClientServiceTest.MOCK_PUBLISHER_ID,
-                VmsPublisherClientServiceTest.PAYLOAD);
-    }
-}
diff --git a/tests/carservice_test/src/com/android/car/test/VmsHalServiceSubscriptionEventTest.java b/tests/carservice_test/src/com/android/car/test/VmsHalServiceSubscriptionEventTest.java
deleted file mode 100644
index cad3086..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsHalServiceSubscriptionEventTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import static org.junit.Assume.assumeTrue;
-
-import android.car.VehicleAreaType;
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsLayer;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageWithLayerIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageType;
-import android.hardware.automotive.vehicle.V2_0.VmsSubscriptionsStateIntegerValuesIndex;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.car.vehiclehal.VehiclePropValueBuilder;
-import com.android.car.vehiclehal.test.MockedVehicleHal;
-import com.android.car.vehiclehal.test.MockedVehicleHal.VehicleHalPropertyHandler;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@FutureFeature
-@MediumTest
-public class VmsHalServiceSubscriptionEventTest extends MockedCarTestBase {
-    private static final String TAG = "VmsHalServiceTest";
-
-    private HalHandler mHalHandler;
-    private MockedVehicleHal mHal;
-    // Used to block until the HAL property is updated in HalHandler.onPropertySet.
-    private Semaphore mHalHandlerSemaphore;
-
-    @Override
-    protected synchronized void configureMockedHal() {
-        mHalHandler = new HalHandler();
-        addProperty(VehicleProperty.VEHICLE_MAP_SERVICE, mHalHandler)
-                .setChangeMode(VehiclePropertyChangeMode.ON_CHANGE)
-                .setAccess(VehiclePropertyAccess.READ_WRITE)
-                .setSupportedAreas(VehicleAreaType.VEHICLE_AREA_TYPE_NONE);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.setUp();
-        mHal = getMockedVehicleHal();
-        mHalHandlerSemaphore = new Semaphore(0);
-    }
-
-    @Override
-    protected synchronized void tearDown() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.tearDown();
-    }
-
-    public void testEmptySubscriptions() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        List<VmsLayer> layers = new ArrayList<>();
-        subscriptionTestLogic(layers);
-    }
-
-    public void testOneSubscription() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        List<VmsLayer> layers = Arrays.asList(new VmsLayer(8, 0, 3));
-        subscriptionTestLogic(layers);
-    }
-
-    public void testManySubscriptions() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        List<VmsLayer> layers = Arrays.asList(
-                new VmsLayer(8, 1, 3),
-                new VmsLayer(5, 2, 1),
-                new VmsLayer(3, 3, 9),
-                new VmsLayer(2, 4, 7),
-                new VmsLayer(9, 5, 3));
-        subscriptionTestLogic(layers);
-    }
-
-    /**
-     * First, it subscribes to the given layers. Then it validates that a subscription request
-     * responds with the same layers.
-     */
-    private void subscriptionTestLogic(List<VmsLayer> layers) throws Exception {
-        for (VmsLayer layer : layers) {
-            subscribeViaHal(layer);
-        }
-        // Send subscription request.
-        mHal.injectEvent(createHalSubscriptionRequest());
-        // Wait for response.
-        assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        // Validate response.
-        ArrayList<Integer> v = mHalHandler.getValues();
-        int messageType = v.get(VmsSubscriptionsStateIntegerValuesIndex.MESSAGE_TYPE);
-        int sequenceNumber = v.get(VmsSubscriptionsStateIntegerValuesIndex.SEQUENCE_NUMBER);
-        int numberLayers = v.get(VmsSubscriptionsStateIntegerValuesIndex.NUMBER_OF_LAYERS);
-        assertEquals(VmsMessageType.SUBSCRIPTIONS_RESPONSE, messageType);
-        //TODO(asafro): This assertion makes no sense. need to fix.
-        //assertEquals(layers.size(), sequenceNumber);
-        assertEquals(layers.size(), numberLayers);
-        List<VmsLayer> receivedLayers = new ArrayList<>();
-        int start = VmsSubscriptionsStateIntegerValuesIndex.SUBSCRIPTIONS_START;
-        int end = VmsSubscriptionsStateIntegerValuesIndex.SUBSCRIPTIONS_START + 3 * numberLayers;
-        while (start < end) {
-            int type = v.get(start++);
-            int subtype = v.get(start++);
-            int version = v.get(start++);
-            receivedLayers.add(new VmsLayer(type, subtype, version));
-        }
-        assertEquals(new HashSet<>(layers), new HashSet<>(receivedLayers));
-    }
-
-    /**
-     * Subscribes to a layer, waits for the event to propagate back to the HAL layer and validates
-     * the propagated message.
-     */
-    private void subscribeViaHal(VmsLayer layer) throws Exception {
-        // Send subscribe request.
-        mHal.injectEvent(createHalSubscribeRequest(layer));
-        // Wait for response.
-        assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        // Validate response.
-        ArrayList<Integer> v = mHalHandler.getValues();
-        int messsageType = v.get(VmsMessageWithLayerIntegerValuesIndex.MESSAGE_TYPE);
-        int layerId = v.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_TYPE);
-        int layerVersion = v.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_VERSION);
-        int fused = v.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_SUBTYPE);
-        assertEquals(VmsMessageType.SUBSCRIBE, messsageType);
-        assertEquals(layer.getType(), layerId);
-        assertEquals(layer.getVersion(), layerVersion);
-    }
-
-    private VehiclePropValue createHalSubscribeRequest(VmsLayer layer) {
-        return VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .addIntValue(VmsMessageType.SUBSCRIBE)
-                .addIntValue(layer.getType())
-                .addIntValue(layer.getSubtype())
-                .addIntValue(layer.getVersion())
-                .build();
-    }
-
-    private VehiclePropValue createHalSubscriptionRequest() {
-        return VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .addIntValue(VmsMessageType.SUBSCRIPTIONS_REQUEST)
-                .build();
-    }
-
-    private class HalHandler implements VehicleHalPropertyHandler {
-        private ArrayList<Integer> mValues;
-
-        @Override
-        public synchronized void onPropertySet(VehiclePropValue value) {
-            mValues = value.value.int32Values;
-            mHalHandlerSemaphore.release();
-        }
-
-        public ArrayList<Integer> getValues() {
-            return mValues;
-        }
-    }
-}
\ No newline at end of file
diff --git a/tests/carservice_test/src/com/android/car/test/VmsOperationRecorderTest.java b/tests/carservice_test/src/com/android/car/test/VmsOperationRecorderTest.java
deleted file mode 100644
index 179a194..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsOperationRecorderTest.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsLayerDependency;
-import android.car.vms.VmsLayersOffering;
-import android.car.vms.VmsOperationRecorder;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
-import junit.framework.TestCase;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-
-@MediumTest
-public class VmsOperationRecorderTest extends TestCase {
-
-    /**
-     * Capture messages that VmsOperationRecorder.Writer would normally pass to Log.d(...).
-     */
-    class TestWriter extends VmsOperationRecorder.Writer {
-        public String mMsg;
-
-        @Override
-        public boolean isEnabled() {
-            return true;
-        }
-
-        @Override
-        public void write(String msg) {
-            super.write(msg);
-            mMsg = msg;
-        }
-    }
-
-    private TestWriter mWriter;
-    private VmsOperationRecorder mRecorder;
-    private static final String TAG = "VmsOperationRecorderTest";
-
-    private static final VmsLayer layer1 = new VmsLayer(1, 3, 2);
-    private static final VmsLayer layer2 = new VmsLayer(2, 4, 3);
-    private static final VmsLayer layer3 = new VmsLayer(3, 5, 4);
-
-    private static final VmsLayerDependency layerDependency1 = new VmsLayerDependency(layer3);
-    private static final VmsLayerDependency layerDependency2 = new VmsLayerDependency(layer1,
-            new HashSet<VmsLayer>(Arrays.asList(layer2, layer3)));
-
-    private static final VmsLayersOffering layersOffering0 = new VmsLayersOffering(
-            new HashSet<VmsLayerDependency>(), 66);
-    private static final VmsLayersOffering layersOffering1 = new VmsLayersOffering(
-            new HashSet<>(Arrays.asList(layerDependency1)), 66);
-    private static final VmsLayersOffering layersOffering2 = new VmsLayersOffering(
-            new HashSet<>(Arrays.asList(layerDependency1, layerDependency2)), 66);
-
-    public void setUp() {
-        mWriter = new TestWriter();
-        mRecorder = new VmsOperationRecorder(mWriter);
-    }
-
-    public void testSubscribe() throws Exception {
-        mRecorder.subscribe(layer1);
-        assertJsonMsgEquals("{'subscribe':{'layer':{'subtype':3,'type':1,'version':2}}}");
-    }
-
-    public void testUnsubscribe() throws Exception {
-        mRecorder.unsubscribe(layer1);
-        assertJsonMsgEquals("{'unsubscribe':{'layer':{'type':1,'subtype':3,'version':2}}}");
-    }
-
-    public void testStartMonitoring() throws Exception {
-        mRecorder.startMonitoring();
-        assertJsonMsgEquals("{'startMonitoring':{}}");
-    }
-
-    public void testStopMonitoring() throws Exception {
-        mRecorder.stopMonitoring();
-        assertJsonMsgEquals("{'stopMonitoring':{}}");
-    }
-
-    public void testSetLayersOffering0() throws Exception {
-        mRecorder.setLayersOffering(layersOffering0);
-        assertJsonMsgEquals("{'setLayersOffering':{}}");
-    }
-
-    public void testSetLayersOffering2() throws Exception {
-        mRecorder.setLayersOffering(layersOffering2);
-        assertJsonMsgEquals("{'setLayersOffering':{'layerDependency':["
-                + "{'layer':{'type':3,'subtype':5,'version':4}},"
-                + "{'layer':{'type':1,'subtype':3,'version':2},'dependency':["
-                + "{'type':2,'subtype':4,'version':3},{'type':3,'subtype':5,'version':4}]}"
-                + "]}}");
-    }
-
-    public void testGetPublisherId() throws Exception {
-        mRecorder.getPublisherId(9);
-        assertJsonMsgEquals("{'getPublisherId':{'publisherId':9}}");
-    }
-
-    public void testAddSubscription() throws Exception {
-        mRecorder.addSubscription(42, layer1);
-        assertJsonMsgEquals(
-                "{'addSubscription':{'sequenceNumber':42,'layer':{'type':1,'subtype':3,'version':2}}}"
-        );
-    }
-
-    public void testRemoveSubscription() throws Exception {
-        mRecorder.removeSubscription(42, layer1);
-        assertJsonMsgEquals("{'removeSubscription':"
-                + "{'sequenceNumber':42,'layer':{'type':1,'subtype':3,'version':2}}}");
-    }
-
-    public void testAddPromiscuousSubscription() throws Exception {
-        mRecorder.addPromiscuousSubscription(42);
-        assertJsonMsgEquals("{'addPromiscuousSubscription':{'sequenceNumber':42}}");
-    }
-
-    public void testRemovePromiscuousSubscription() throws Exception {
-        mRecorder.removePromiscuousSubscription(42);
-        assertJsonMsgEquals("{'removePromiscuousSubscription':{'sequenceNumber':42}}");
-    }
-
-    public void testAddHalSubscription() throws Exception {
-        mRecorder.addHalSubscription(42, layer1);
-        assertJsonMsgEquals("{'addHalSubscription':"
-                + "{'sequenceNumber':42,'layer':{'type':1,'subtype':3,'version':2}}}");
-    }
-
-    public void testRemoveHalSubscription() throws Exception {
-        mRecorder.removeHalSubscription(42, layer1);
-        assertJsonMsgEquals("{'removeHalSubscription':"
-                + "{'sequenceNumber':42,'layer':{'type':1,'subtype':3,'version':2}}}");
-    }
-
-    public void testSetPublisherLayersOffering() throws Exception {
-        mRecorder.setPublisherLayersOffering(layersOffering1);
-        assertJsonMsgEquals("{'setPublisherLayersOffering':{'layerDependency':["
-                + "{'layer':{'type':3,'subtype':5,'version':4}}]}}");
-    }
-
-    public void testSetHalPublisherLayersOffering() throws Exception {
-        mRecorder.setHalPublisherLayersOffering(layersOffering1);
-        assertJsonMsgEquals("{'setHalPublisherLayersOffering':{'layerDependency':["
-                + "{'layer':{'type':3,'subtype':5,'version':4}}]}}");
-    }
-
-    public void testSubscribeToPublisher() throws Exception {
-        mRecorder.subscribe(layer1, 99);
-        assertJsonMsgEquals(
-                "{'subscribe':{'publisherId':99, 'layer':{'type':1,'subtype':3,'version':2}}}");
-    }
-
-    public void testUnsubscribeToPublisher() throws Exception {
-        mRecorder.unsubscribe(layer1, 99);
-        assertJsonMsgEquals(
-                "{'unsubscribe':{'publisherId':99, 'layer':{'type':1,'subtype':3,'version':2}}}}");
-    }
-
-    private void assertJsonMsgEquals(String expectJson) throws Exception {
-        // Escaping double quotes in a JSON string is really noisy. The test data uses single
-        // quotes instead, which gets replaced here.
-        JSONObject expect = new JSONObject(expectJson.replace("'", "\""));
-        JSONObject got = new JSONObject(mWriter.mMsg);
-        assertTrue(similar(expect, got));
-    }
-
-    /*
-     * Determine if two JSONObjects are similar.
-     * They must contain the same set of names which must be associated with
-     * similar values.
-     */
-    private boolean similar(JSONObject expect, JSONObject got) {
-        try {
-            if (!expect.keySet().equals(got.keySet())) {
-                return false;
-            }
-
-            for (String key : expect.keySet()) {
-                Object valueExpect = expect.get(key);
-                Object valueGot = got.get(key);
-
-                if (valueExpect == valueGot) {
-                    continue;
-                }
-
-                if (valueExpect == null) {
-                    return false;
-                }
-
-                if (valueExpect instanceof JSONObject) {
-                    return similar((JSONObject) valueExpect, (JSONObject) valueGot);
-                } else if (valueExpect instanceof JSONArray) {
-                    // Equal JSONArray have the same length and one contains the other.
-                    JSONArray expectArray = (JSONArray) valueExpect;
-                    JSONArray gotArray = (JSONArray) valueGot;
-
-                    if (expectArray.length() != gotArray.length()) {
-                        return false;
-                    }
-
-                    for (int i = 0; i < expectArray.length(); i++) {
-                        boolean gotContainsSimilar = false;
-                        for (int j = 0; j < gotArray.length(); j++) {
-                            if (similar((JSONObject) expectArray.get(i),
-                                    (JSONObject) gotArray.get(j))) {
-                                gotContainsSimilar = true;
-                                break;
-                            }
-                        }
-                        if (!gotContainsSimilar) {
-                            return false;
-                        }
-                    }
-                } else if (!valueExpect.equals(valueGot)) {
-                    return false;
-                }
-            }
-
-        } catch (JSONException e) {
-            Log.d(TAG, "Could not compare JSONObjects: " + e);
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/tests/carservice_test/src/com/android/car/test/VmsPublisherClientMockService.java b/tests/carservice_test/src/com/android/car/test/VmsPublisherClientMockService.java
deleted file mode 100644
index 0d5c427..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsPublisherClientMockService.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsLayerDependency;
-import android.car.vms.VmsLayersOffering;
-import android.car.vms.VmsPublisherClientService;
-import android.car.vms.VmsSubscriptionState;
-import android.util.Log;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * This service is launched during the tests in VmsPublisherSubscriberTest. It publishes a property
- * that is going to be verified in the test.
- *
- * The service makes offering for pre-defined layers which verifies availability notifications for
- * subscribers without them actively being subscribed to a layer, and also echos all the
- * subscription requests with an offering for that layer.
- * For example, without any subscription request from any client, this service will make offering
- * to layer X. If a client will subscribe later to layer Y, this service will respond with offering
- * to both layers X and Y.
- *
- * Note that the subscriber can subscribe before the publisher finishes initialization. To cover
- * both potential scenarios, this service publishes the test message in onVmsSubscriptionChange
- * and in onVmsPublisherServiceReady. See comments below.
- */
-@FutureFeature
-public class VmsPublisherClientMockService extends VmsPublisherClientService {
-    private static final String TAG = "VmsPublisherClientMockService";
-
-    @Override
-    public void onVmsSubscriptionChange(VmsSubscriptionState subscriptionState) {
-        // Case when the publisher finished initialization before the subscription request.
-        initializeMockPublisher(subscriptionState);
-    }
-
-    @Override
-    public void onVmsPublisherServiceReady() {
-        // Case when the subscription request was sent before the publisher was ready.
-        VmsSubscriptionState subscriptionState = getSubscriptions();
-        initializeMockPublisher(subscriptionState);
-    }
-
-    private void initializeMockPublisher(VmsSubscriptionState subscriptionState) {
-        Log.d(TAG, "Initializing Mock publisher");
-        int publisherId = getPublisherId(VmsPublisherSubscriberTest.PAYLOAD);
-        publishIfNeeded(subscriptionState);
-        declareOffering(subscriptionState, publisherId);
-    }
-
-    private void publishIfNeeded(VmsSubscriptionState subscriptionState) {
-        for (VmsLayer layer : subscriptionState.getLayers()) {
-            if (layer.equals(VmsPublisherSubscriberTest.LAYER)) {
-                publish(VmsPublisherSubscriberTest.LAYER,
-                        VmsPublisherSubscriberTest.EXPECTED_PUBLISHER_ID,
-                        VmsPublisherSubscriberTest.PAYLOAD);
-            }
-        }
-    }
-
-    private void declareOffering(VmsSubscriptionState subscriptionState, int publisherId) {
-        Set<VmsLayerDependency> dependencies = new HashSet<>();
-
-        // Add all layers from the subscription state.
-        for( VmsLayer layer : subscriptionState.getLayers()) {
-            dependencies.add(new VmsLayerDependency(layer));
-        }
-
-        // Add default test layers.
-        dependencies.add(new VmsLayerDependency(VmsPublisherSubscriberTest.LAYER));
-
-        VmsLayersOffering offering = new VmsLayersOffering(dependencies, publisherId);
-        setLayersOffering(offering);
-    }
-}
diff --git a/tests/carservice_test/src/com/android/car/test/VmsPublisherClientServiceTest.java b/tests/carservice_test/src/com/android/car/test/VmsPublisherClientServiceTest.java
deleted file mode 100644
index 053bab7..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsPublisherClientServiceTest.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import android.annotation.ArrayRes;
-import android.car.VehicleAreaType;
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsLayer;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.hardware.automotive.vehicle.V2_0.VmsBaseMessageIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageWithLayerIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageType;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
-import com.android.car.R;
-import com.android.car.vehiclehal.VehiclePropValueBuilder;
-import com.android.car.vehiclehal.test.MockedVehicleHal;
-import com.android.car.vehiclehal.test.MockedVehicleHal.VehicleHalPropertyHandler;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@FutureFeature
-@MediumTest
-public class VmsPublisherClientServiceTest extends MockedCarTestBase {
-    private static final String TAG = "VmsPublisherTest";
-    private static final int MOCK_PUBLISHER_LAYER_ID = 12;
-    private static final int MOCK_PUBLISHER_LAYER_VERSION = 34;
-    private static final int MOCK_PUBLISHER_LAYER_SUBTYPE = 56;
-    public static final int MOCK_PUBLISHER_ID = 1234;
-    public static final VmsLayer MOCK_PUBLISHER_LAYER =
-            new VmsLayer(MOCK_PUBLISHER_LAYER_ID,
-                    MOCK_PUBLISHER_LAYER_SUBTYPE,
-                    MOCK_PUBLISHER_LAYER_VERSION);
-    public static final byte[] PAYLOAD = new byte[]{1, 1, 2, 3, 5, 8, 13};
-
-    private HalHandler mHalHandler;
-    // Used to block until the HAL property is updated in HalHandler.onPropertySet.
-    private Semaphore mHalHandlerSemaphore;
-
-    @Override
-    protected synchronized void configureMockedHal() {
-        mHalHandler = new HalHandler();
-        addProperty(VehicleProperty.VEHICLE_MAP_SERVICE, mHalHandler)
-                .setChangeMode(VehiclePropertyChangeMode.ON_CHANGE)
-                .setAccess(VehiclePropertyAccess.READ_WRITE)
-                .setSupportedAreas(VehicleAreaType.VEHICLE_AREA_TYPE_NONE);
-    }
-
-    /**
-     * Creates a context with the resource vmsPublisherClients overridden. The overridden value
-     * contains the name of the test service defined also in this test package.
-     */
-    @Override
-    protected Context getCarServiceContext() throws PackageManager.NameNotFoundException {
-        Context context = getContext()
-                .createPackageContext("com.android.car", Context.CONTEXT_IGNORE_SECURITY);
-        Resources resources = new Resources(context.getAssets(),
-                context.getResources().getDisplayMetrics(),
-                context.getResources().getConfiguration()) {
-            @Override
-            public String[] getStringArray(@ArrayRes int id) throws NotFoundException {
-                if (id == R.array.vmsPublisherClients) {
-                    return new String[]{"com.android.car.test/.SimpleVmsPublisherClientService"};
-                }
-                return super.getStringArray(id);
-            }
-        };
-        ContextWrapper wrapper = new ContextWrapper(context) {
-            @Override
-            public Resources getResources() {
-                return resources;
-            }
-        };
-        return wrapper;
-    }
-
-    private VehiclePropValue getHalSubscriptionRequest() {
-        return VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .addIntValue(VmsMessageType.SUBSCRIBE)
-                .addIntValue(MOCK_PUBLISHER_LAYER_ID)
-                .addIntValue(MOCK_PUBLISHER_LAYER_SUBTYPE)
-                .addIntValue(MOCK_PUBLISHER_LAYER_VERSION)
-                .build();
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        /**
-         * First init the semaphore, setUp will start a series of events that will ultimately
-         * update the HAL layer and release this semaphore.
-         */
-        mHalHandlerSemaphore = new Semaphore(0);
-        super.setUp();
-
-        // Inject a subscribe event which simulates the HAL is subscribed to the Mock Publisher.
-        MockedVehicleHal mHal = getMockedVehicleHal();
-        mHal.injectEvent(getHalSubscriptionRequest());
-    }
-
-    @Override
-    protected synchronized void tearDown() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.tearDown();
-    }
-
-    /**
-     * The method setUp initializes all the Car services, including the VmsPublisherService.
-     * The VmsPublisherService will start and configure its list of clients. This list was
-     * overridden in the method getCarServiceContext.
-     * Therefore, only SimpleVmsPublisherClientService will be started.
-     * The service SimpleVmsPublisherClientService will publish one message, which is validated in
-     * this test.
-     */
-    public void testPublish() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        //TODO: This test is using minial synchronisation between clients.
-        //      If more complexity is added this may result in publisher
-        //      publishing before the subscriber subscribed, in which case
-        //      the semaphore will not be released.
-        assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        VehiclePropValue.RawValue rawValue = mHalHandler.getValue().value;
-        int messageType = rawValue.int32Values.get(VmsMessageWithLayerIntegerValuesIndex.MESSAGE_TYPE);
-        int layerId = rawValue.int32Values.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_TYPE);
-        int layerVersion = rawValue.int32Values.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_VERSION);
-        byte[] payload = new byte[rawValue.bytes.size()];
-        for (int i = 0; i < rawValue.bytes.size(); ++i) {
-            payload[i] = rawValue.bytes.get(i);
-        }
-        assertEquals(VmsMessageType.DATA, messageType);
-        assertEquals(MOCK_PUBLISHER_LAYER_ID, layerId);
-        assertEquals(MOCK_PUBLISHER_LAYER_VERSION, layerVersion);
-        assertTrue(Arrays.equals(PAYLOAD, payload));
-    }
-
-    private class HalHandler implements VehicleHalPropertyHandler {
-        private VehiclePropValue mValue;
-
-        @Override
-        public synchronized void onPropertySet(VehiclePropValue value) {
-            mValue = value;
-
-            // If this is the data message release the semaphone so the test can continue.
-            ArrayList<Integer> int32Values = value.value.int32Values;
-            if (int32Values.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE) ==
-                    VmsMessageType.DATA) {
-                mHalHandlerSemaphore.release();
-            }
-        }
-
-        @Override
-        public synchronized VehiclePropValue onPropertyGet(VehiclePropValue value) {
-            return mValue != null ? mValue : value;
-        }
-
-        @Override
-        public synchronized void onPropertySubscribe(int property, int zones, float sampleRate) {
-            Log.d(TAG, "onPropertySubscribe property " + property + " sampleRate " + sampleRate);
-        }
-
-        @Override
-        public synchronized void onPropertyUnsubscribe(int property) {
-            Log.d(TAG, "onPropertyUnSubscribe property " + property);
-        }
-
-        public VehiclePropValue getValue() {
-            return mValue;
-        }
-    }
-}
\ No newline at end of file
diff --git a/tests/carservice_test/src/com/android/car/test/VmsPublisherPermissionsTest.java b/tests/carservice_test/src/com/android/car/test/VmsPublisherPermissionsTest.java
deleted file mode 100644
index 1d14c57..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsPublisherPermissionsTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import android.annotation.ArrayRes;
-import android.car.VehicleAreaType;
-import android.car.annotation.FutureFeature;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.hardware.automotive.vehicle.V2_0.VmsBaseMessageIntegerValuesIndex;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageType;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.car.R;
-import com.android.car.vehiclehal.VehiclePropValueBuilder;
-import com.android.car.vehiclehal.test.MockedVehicleHal;
-import com.android.car.vehiclehal.test.MockedVehicleHal.VehicleHalPropertyHandler;
-
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@FutureFeature
-@MediumTest
-public class VmsPublisherPermissionsTest extends MockedCarTestBase {
-    private static final String TAG = "VmsPublisherTest";
-    private static final int MOCK_PUBLISHER_LAYER_ID = 0;
-    private static final int MOCK_PUBLISHER_LAYER_VERSION = 0;
-    private static final int MOCK_PUBLISHER_LAYER_FUSION_INT_VALUE = 0;
-
-    private HalHandler mHalHandler;
-    // Used to block until the HAL property is updated in HalHandler.onPropertySet.
-    private Semaphore mHalHandlerSemaphore;
-
-    @Override
-    protected synchronized void configureMockedHal() {
-        mHalHandler = new HalHandler();
-        addProperty(VehicleProperty.VEHICLE_MAP_SERVICE, mHalHandler)
-                .setChangeMode(VehiclePropertyChangeMode.ON_CHANGE)
-                .setAccess(VehiclePropertyAccess.READ_WRITE)
-                .setSupportedAreas(VehicleAreaType.VEHICLE_AREA_TYPE_NONE);
-    }
-
-    /**
-     * Creates a context with the resource vmsPublisherClients overridden. The overridden value
-     * contains the name of the test service defined also in this test package.
-     */
-    @Override
-    protected Context getCarServiceContext() throws PackageManager.NameNotFoundException {
-        Context context = getContext()
-                .createPackageContext("com.android.car", Context.CONTEXT_IGNORE_SECURITY);
-        Resources resources = new Resources(context.getAssets(),
-                context.getResources().getDisplayMetrics(),
-                context.getResources().getConfiguration()) {
-            @Override
-            public String[] getStringArray(@ArrayRes int id) throws NotFoundException {
-                if (id == R.array.vmsPublisherClients) {
-                    return new String[]{
-                            "com.google.android.car.vms.publisher/"
-                                    + ".VmsPublisherClientSampleService"};
-                } else if (id == R.array.vmsSafePermissions) {
-                    return new String[]{"android.permission.ACCESS_FINE_LOCATION"};
-                }
-                return super.getStringArray(id);
-            }
-        };
-        ContextWrapper wrapper = new ContextWrapper(context) {
-            @Override
-            public Resources getResources() {
-                return resources;
-            }
-        };
-        return wrapper;
-    }
-
-    private VehiclePropValue getHalSubscriptionRequest() {
-        return VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .addIntValue(VmsMessageType.SUBSCRIBE)
-                .addIntValue(MOCK_PUBLISHER_LAYER_ID)
-                .addIntValue(MOCK_PUBLISHER_LAYER_VERSION)
-                .addIntValue(MOCK_PUBLISHER_LAYER_FUSION_INT_VALUE)
-                .build();
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        /**
-         * First init the semaphore, setUp will start a series of events that will ultimately
-         * update the HAL layer and release this semaphore.
-         */
-        mHalHandlerSemaphore = new Semaphore(0);
-        super.setUp();
-
-        // Inject a subscribe event which simulates the HAL is subscribed to the Sample Publisher.
-        MockedVehicleHal mHal = getMockedVehicleHal();
-        mHal.injectEvent(getHalSubscriptionRequest());
-    }
-
-    @Override
-    protected synchronized void tearDown() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.tearDown();
-    }
-
-    /**
-     * The method setUp initializes all the Car services, including the VmsPublisherService.
-     * The VmsPublisherService will start and configure its list of clients. This list was
-     * overridden in the method getCarServiceContext.
-     * Therefore, only VmsPublisherClientSampleService will be started.
-     * The service VmsPublisherClientSampleService will publish one message, which is validated in
-     * this test.
-     */
-    public void testPermissions() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        // At this point the client initialization finished. Let's validate the permissions.
-        // The VMS service is only allowed to grant ACCESS_FINE_LOCATION but not CAMERA.
-        assertTrue(
-                getContext().getPackageManager().checkPermission(
-                        "android.permission.ACCESS_FINE_LOCATION",
-                        "com.google.android.car.vms.publisher")
-                        == PackageManager.PERMISSION_GRANTED);
-        assertFalse(getContext().getPackageManager().checkPermission(
-                "android.permission.CAMERA", "com.google.android.car.vms.publisher")
-                == PackageManager.PERMISSION_GRANTED);
-    }
-
-    private class HalHandler implements VehicleHalPropertyHandler {
-        @Override
-        public synchronized void onPropertySet(VehiclePropValue value) {
-            // If this is the data message release the semaphore so the test can continue.
-            ArrayList<Integer> int32Values = value.value.int32Values;
-            if (int32Values.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE) ==
-                    VmsMessageType.DATA) {
-                mHalHandlerSemaphore.release();
-            }
-        }
-    }
-}
diff --git a/tests/carservice_test/src/com/android/car/test/VmsPublisherSubscriberTest.java b/tests/carservice_test/src/com/android/car/test/VmsPublisherSubscriberTest.java
deleted file mode 100644
index 5b387d2..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsPublisherSubscriberTest.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import android.annotation.ArrayRes;
-import android.car.Car;
-import android.car.VehicleAreaType;
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsSubscriberManager;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.car.vehiclehal.test.MockedVehicleHal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@FutureFeature
-@MediumTest
-public class VmsPublisherSubscriberTest extends MockedCarTestBase {
-    private static final int LAYER_ID = 88;
-    private static final int LAYER_VERSION = 19;
-    private static final int LAYER_SUBTYPE = 55;
-    private static final String TAG = "VmsPubSubTest";
-
-    // The expected publisher ID is 0 since it the expected assigned ID from the VMS core.
-    public static final int EXPECTED_PUBLISHER_ID = 0;
-    public static final VmsLayer LAYER = new VmsLayer(LAYER_ID, LAYER_SUBTYPE, LAYER_VERSION);
-    public static final VmsAssociatedLayer ASSOCIATED_LAYER =
-            new VmsAssociatedLayer(LAYER, new HashSet<>(Arrays.asList(EXPECTED_PUBLISHER_ID)));
-    public static final byte[] PAYLOAD = new byte[]{2, 3, 5, 7, 11, 13, 17};
-
-    private static final List<VmsAssociatedLayer> AVAILABLE_ASSOCIATED_LAYERS =
-            new ArrayList<>(Arrays.asList(ASSOCIATED_LAYER));
-
-
-    private static final int SUBSCRIBED_LAYER_ID = 89;
-    public static final VmsLayer SUBSCRIBED_LAYER =
-            new VmsLayer(SUBSCRIBED_LAYER_ID, LAYER_SUBTYPE, LAYER_VERSION);
-    public static final VmsAssociatedLayer ASSOCIATED_SUBSCRIBED_LAYER =
-            new VmsAssociatedLayer(SUBSCRIBED_LAYER, new HashSet<>(Arrays.asList(EXPECTED_PUBLISHER_ID)));
-    private static final List<VmsAssociatedLayer> AVAILABLE_ASSOCIATED_LAYERS_WITH_SUBSCRIBED_LAYER =
-            new ArrayList<>(Arrays.asList(ASSOCIATED_LAYER, ASSOCIATED_SUBSCRIBED_LAYER));
-
-
-    private HalHandler mHalHandler;
-    // Used to block until a value is propagated to the TestClientCallback.onVmsMessageReceived.
-    private Semaphore mSubscriberSemaphore;
-    private Semaphore mAvailabilitySemaphore;
-
-    @Override
-    protected synchronized void configureMockedHal() {
-        mHalHandler = new HalHandler();
-        addProperty(VehicleProperty.VEHICLE_MAP_SERVICE, mHalHandler)
-                .setChangeMode(VehiclePropertyChangeMode.ON_CHANGE)
-                .setAccess(VehiclePropertyAccess.READ_WRITE)
-                .setSupportedAreas(VehicleAreaType.VEHICLE_AREA_TYPE_NONE);
-    }
-
-    /**
-     * Creates a context with the resource vmsPublisherClients overridden. The overridden value
-     * contains the name of the test service defined also in this test package.
-     */
-    @Override
-    protected Context getCarServiceContext() throws PackageManager.NameNotFoundException {
-        Context context = getContext()
-                .createPackageContext("com.android.car", Context.CONTEXT_IGNORE_SECURITY);
-        Resources resources = new Resources(context.getAssets(),
-                context.getResources().getDisplayMetrics(),
-                context.getResources().getConfiguration()) {
-            @Override
-            public String[] getStringArray(@ArrayRes int id) throws NotFoundException {
-                if (id == com.android.car.R.array.vmsPublisherClients) {
-                    return new String[]{"com.android.car.test/.VmsPublisherClientMockService"};
-                }
-                return super.getStringArray(id);
-            }
-        };
-        ContextWrapper wrapper = new ContextWrapper(context) {
-            @Override
-            public Resources getResources() {
-                return resources;
-            }
-        };
-        return wrapper;
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.setUp();
-        mSubscriberSemaphore = new Semaphore(0);
-        mAvailabilitySemaphore = new Semaphore(0);
-    }
-
-    @Override
-    protected synchronized void tearDown() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.tearDown();
-    }
-
-    /**
-     * The method setUp initializes all the Car services, including the VmsPublisherService.
-     * The VmsPublisherService will start and configure its list of clients. This list was
-     * overridden in the method getCarServiceContext. Therefore, only VmsPublisherClientMockService
-     * will be started. This test method subscribes to a layer and triggers
-     * VmsPublisherClientMockService.onVmsSubscriptionChange. In turn, the mock service will publish
-     * a message, which is validated in this test.
-     */
-    public void testPublisherToSubscriber() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(LAYER);
-
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertEquals(LAYER, clientCallback.getLayer());
-        assertTrue(Arrays.equals(PAYLOAD, clientCallback.getPayload()));
-    }
-
-    /**
-     * The Mock service will get a publisher ID by sending its information when it will get
-     * ServiceReady as well as on SubscriptionChange. Since clients are not notified when
-     * publishers are assigned IDs, this test waits until the availability is changed which indicates
-     * that the Mock service has gotten its ServiceReady and publisherId.
-     */
-    public void testPublisherInfo() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        // Subscribe to layer as a way to make sure the mock client completed setting the information.
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(LAYER);
-
-        assertTrue(mAvailabilitySemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-
-        byte[] info = vmsSubscriberManager.getPublisherInfo(EXPECTED_PUBLISHER_ID);
-        assertTrue(Arrays.equals(PAYLOAD, info));
-    }
-
-    /**
-     * The Mock service offers all the subscribed layers as available layers.
-     * In this test the client subscribes to a layer and verifies that it gets the
-     * notification that it is available.
-     */
-    public void testAvailabilityWithSubscription() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-            Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIBED_LAYER);
-
-        assertTrue(mAvailabilitySemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertEquals(AVAILABLE_ASSOCIATED_LAYERS_WITH_SUBSCRIBED_LAYER, clientCallback.getAvailalbeLayers());
-    }
-
-    /**
-     * The Mock service offers all the subscribed layers as available layers, so in this
-     * test the client subscribes to a layer and verifies that it gets the notification that it
-     * is available.
-     */
-    public void testAvailabilityWithoutSubscription() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-
-        assertTrue(mAvailabilitySemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertEquals(AVAILABLE_ASSOCIATED_LAYERS, clientCallback.getAvailalbeLayers());
-    }
-
-    private class HalHandler implements MockedVehicleHal.VehicleHalPropertyHandler {
-    }
-
-    private class TestClientCallback implements VmsSubscriberManager.VmsSubscriberClientCallback {
-        private VmsLayer mLayer;
-        private byte[] mPayload;
-        private List<VmsLayer> mAvailableLayers;
-
-        @Override
-        public void onVmsMessageReceived(VmsLayer layer, byte[] payload) {
-            assertEquals(LAYER, layer);
-            assertTrue(Arrays.equals(PAYLOAD, payload));
-            mLayer = layer;
-            mPayload = payload;
-            mSubscriberSemaphore.release();
-        }
-
-        @Override
-        public void onLayersAvailabilityChanged(List<VmsLayer> availableLayers) {
-            mAvailableLayers = availableLayers;
-            mAvailabilitySemaphore.release();
-        }
-
-        public VmsLayer getLayer() {
-            return mLayer;
-        }
-
-        public byte[] getPayload() {
-            return mPayload;
-        }
-
-        public List<VmsLayer> getAvailalbeLayers() {
-            return mAvailableLayers;
-        }
-    }
-}
diff --git a/tests/carservice_test/src/com/android/car/test/VmsSubscriberManagerTest.java b/tests/carservice_test/src/com/android/car/test/VmsSubscriberManagerTest.java
deleted file mode 100644
index 9e9a5d0..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsSubscriberManagerTest.java
+++ /dev/null
@@ -1,614 +0,0 @@
-/*
- * 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 com.android.car.test;
-
-import static org.junit.Assume.assumeTrue;
-
-import android.car.Car;
-import android.car.VehicleAreaType;
-import android.car.annotation.FutureFeature;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsSubscriberManager;
-import android.car.vms.VmsSubscriberManager.VmsSubscriberClientCallback;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.hardware.automotive.vehicle.V2_0.VmsMessageType;
-import android.os.SystemClock;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-import com.android.car.vehiclehal.VehiclePropValueBuilder;
-import com.android.car.vehiclehal.test.MockedVehicleHal.VehicleHalPropertyHandler;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@FutureFeature
-@MediumTest
-public class VmsSubscriberManagerTest extends MockedCarTestBase {
-    private static final String TAG = "VmsSubscriberManagerTest";
-    private static final int PUBLISHER_ID = 17;
-    private static final int WRONG_PUBLISHER_ID = 26;
-    private static final Set<Integer> PUBLISHERS_LIST = new HashSet<Integer>(Arrays.asList(PUBLISHER_ID));
-
-    private static final int SUBSCRIPTION_LAYER_ID = 2;
-    private static final int SUBSCRIPTION_LAYER_VERSION = 3;
-    private static final int MOCK_PUBLISHER_LAYER_SUBTYPE = 444;
-    private static final VmsLayer SUBSCRIPTION_LAYER = new VmsLayer(SUBSCRIPTION_LAYER_ID,
-            MOCK_PUBLISHER_LAYER_SUBTYPE,
-            SUBSCRIPTION_LAYER_VERSION);
-    private static final VmsAssociatedLayer SUBSCRIPTION_ASSOCIATED_LAYER =
-            new VmsAssociatedLayer(SUBSCRIPTION_LAYER, PUBLISHERS_LIST);
-
-    private static final int SUBSCRIPTION_DEPENDANT_LAYER_ID_1 = 4;
-    private static final int SUBSCRIPTION_DEPENDANT_LAYER_VERSION_1 = 5;
-    private static final VmsLayer SUBSCRIPTION_DEPENDANT_LAYER_1 =
-            new VmsLayer(SUBSCRIPTION_DEPENDANT_LAYER_ID_1,
-                    MOCK_PUBLISHER_LAYER_SUBTYPE,
-                    SUBSCRIPTION_DEPENDANT_LAYER_VERSION_1);
-
-    private static final VmsAssociatedLayer SUBSCRIPTION_DEPENDANT_ASSOCIATED_LAYER_1 =
-            new VmsAssociatedLayer(SUBSCRIPTION_DEPENDANT_LAYER_1, PUBLISHERS_LIST);
-
-    private static final int SUBSCRIPTION_DEPENDANT_LAYER_ID_2 = 6;
-    private static final int SUBSCRIPTION_DEPENDANT_LAYER_VERSION_2 = 7;
-    private static final VmsLayer SUBSCRIPTION_DEPENDANT_LAYER_2 =
-            new VmsLayer(SUBSCRIPTION_DEPENDANT_LAYER_ID_2,
-                    MOCK_PUBLISHER_LAYER_SUBTYPE,
-                    SUBSCRIPTION_DEPENDANT_LAYER_VERSION_2);
-
-    private static final VmsAssociatedLayer SUBSCRIPTION_DEPENDANT_ASSOCIATED_LAYER_2 =
-            new VmsAssociatedLayer(SUBSCRIPTION_DEPENDANT_LAYER_2, PUBLISHERS_LIST);
-
-    private static final int SUBSCRIPTION_UNSUPPORTED_LAYER_ID = 100;
-    private static final int SUBSCRIPTION_UNSUPPORTED_LAYER_VERSION = 200;
-
-
-    private HalHandler mHalHandler;
-    // Used to block until the HAL property is updated in HalHandler.onPropertySet.
-    private Semaphore mHalHandlerSemaphore;
-    // Used to block until a value is propagated to the TestClientCallback.onVmsMessageReceived.
-    private Semaphore mSubscriberSemaphore;
-
-    @Override
-    protected synchronized void configureMockedHal() {
-        mHalHandler = new HalHandler();
-        addProperty(VehicleProperty.VEHICLE_MAP_SERVICE, mHalHandler)
-                .setChangeMode(VehiclePropertyChangeMode.ON_CHANGE)
-                .setAccess(VehiclePropertyAccess.READ_WRITE)
-                .setSupportedAreas(VehicleAreaType.VEHICLE_AREA_TYPE_NONE);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.setUp();
-        mSubscriberSemaphore = new Semaphore(0);
-        mHalHandlerSemaphore = new Semaphore(0);
-    }
-
-    @Override
-    protected synchronized void tearDown() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        super.tearDown();
-    }
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber.
-    public void testSubscribe() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER);
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE);
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertEquals(SUBSCRIPTION_LAYER, clientCallback.getLayer());
-        byte[] expectedPayload = {(byte) 0xa, (byte) 0xb};
-        assertTrue(Arrays.equals(expectedPayload, clientCallback.getPayload()));
-    }
-
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber.
-    public void testSubscribeToPublisher() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER, PUBLISHER_ID);
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE);
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(WRONG_PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-
-        assertFalse(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-    }
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber.
-    public void testSubscribeFromPublisher() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER, PUBLISHER_ID);
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE); //<-
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertEquals(SUBSCRIPTION_LAYER, clientCallback.getLayer());
-        byte[] expectedPayload = {(byte) 0xa, (byte) 0xb};
-        assertTrue(Arrays.equals(expectedPayload, clientCallback.getPayload()));
-    }
-
-    // Test injecting a value in the HAL and verifying it does not propagate to a subscriber.
-    public void testUnsubscribe() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER);
-        vmsSubscriberManager.unsubscribe(SUBSCRIPTION_LAYER);
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE);
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertFalse(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-    }
-
-    // Test injecting a value in the HAL and verifying it does not propagate to a subscriber.
-    public void testSubscribeFromWrongPublisher() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER, PUBLISHER_ID);
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE);
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(WRONG_PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertFalse(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-    }
-
-    // Test injecting a value in the HAL and verifying it does not propagate to a subscriber.
-    public void testUnsubscribeFromPublisher() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER, PUBLISHER_ID);
-        vmsSubscriberManager.unsubscribe(SUBSCRIPTION_LAYER, PUBLISHER_ID);
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE);
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertFalse(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-    }
-
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber.
-    public void testSubscribeAll() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.startMonitoring();
-
-        // Inject a value and wait for its callback in TestClientCallback.onVmsMessageReceived.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        v.value.int32Values.add(VmsMessageType.DATA); // MessageType
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_ID);
-        v.value.int32Values.add(MOCK_PUBLISHER_LAYER_SUBTYPE);
-        v.value.int32Values.add(SUBSCRIPTION_LAYER_VERSION);
-        v.value.int32Values.add(PUBLISHER_ID);
-        v.value.bytes.add((byte) 0xa);
-        v.value.bytes.add((byte) 0xb);
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertEquals(SUBSCRIPTION_LAYER, clientCallback.getLayer());
-        byte[] expectedPayload = {(byte) 0xa, (byte) 0xb};
-        assertTrue(Arrays.equals(expectedPayload, clientCallback.getPayload()));
-    }
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber.
-    public void testSimpleAvailableLayers() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-
-        // Inject a value and wait for its callback in TestClientCallback.onLayersAvailabilityChanged.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        /*
-        Offering:
-        Layer             | Dependency
-        ===============================
-        (2, 3, 444), [17] | {}
-
-        Expected availability:
-        {(2, 3, 444 [17])}
-         */
-        v.value.int32Values.addAll(
-                Arrays.asList(
-                        VmsMessageType.OFFERING, // MessageType
-                        PUBLISHER_ID,
-                        1, // Number of offered layers
-
-                        SUBSCRIPTION_LAYER_ID,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_LAYER_VERSION,
-                        0 // number of dependencies for layer
-                )
-        );
-
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        List<VmsAssociatedLayer> expectedAvailableLayers =
-                new ArrayList<>(Arrays.asList(SUBSCRIPTION_ASSOCIATED_LAYER));
-        assertTrue(expectedAvailableLayers.containsAll(clientCallback.getAvailableLayers()));
-        assertEquals(expectedAvailableLayers.size(), clientCallback.getAvailableLayers().size());
-    }
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber after it has
-    // subscribed to a layer.
-    public void testSimpleAvailableLayersAfterSubscription() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER);
-
-        // Inject a value and wait for its callback in TestClientCallback.onLayersAvailabilityChanged.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        /*
-        Offering:
-        Layer             | Dependency
-        ===============================
-        (2, 3, 444), [17] | {}
-
-        Expected availability:
-        {(2, 3, 444 [17])}
-         */
-        v.value.int32Values.addAll(
-                Arrays.asList(
-                        VmsMessageType.OFFERING, // MessageType
-                        PUBLISHER_ID,
-                        1, // Number of offered layers
-
-                        SUBSCRIPTION_LAYER_ID,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_LAYER_VERSION,
-                        0 // number of dependencies for layer
-                )
-        );
-
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        getMockedVehicleHal().injectEvent(v);
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        List<VmsAssociatedLayer> expectedAvailableLayers =
-                new ArrayList<>(Arrays.asList(SUBSCRIPTION_ASSOCIATED_LAYER));
-        assertTrue(expectedAvailableLayers.containsAll(clientCallback.getAvailableLayers()));
-        assertEquals(expectedAvailableLayers.size(), clientCallback.getAvailableLayers().size());
-    }
-
-    // Test injecting a value in the HAL and verifying it does not propagates to a subscriber after
-    // it has unregistered its callback.
-    public void testSimpleAvailableLayersAfterUnregister() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.unregisterClientCallback();
-
-
-        // Inject a value and wait for its callback in TestClientCallback.onLayersAvailabilityChanged.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        /*
-        Offering:
-        Layer             | Dependency
-        ===============================
-        (2, 3, 444), [17] | {}
-
-        Expected availability:
-        {(2, 3, 444 [17])}
-         */
-        v.value.int32Values.addAll(
-                Arrays.asList(
-                        VmsMessageType.OFFERING, // MessageType
-                        PUBLISHER_ID,
-                        1, // Number of offered layers
-
-                        SUBSCRIPTION_LAYER_ID,
-                        SUBSCRIPTION_LAYER_VERSION,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        0 // number of dependencies for layer
-                )
-        );
-
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-        getMockedVehicleHal().injectEvent(v);
-        assertFalse(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-    }
-
-    // Test injecting a value in the HAL and verifying it does not propagates to a subscriber after
-    // it has unregistered its callback.
-    public void testSomething() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-        vmsSubscriberManager.subscribe(SUBSCRIPTION_LAYER);
-        try {
-            vmsSubscriberManager.unregisterClientCallback();
-        } catch (IllegalArgumentException e) {
-            return;
-        }
-        fail();
-    }
-
-
-    // Test injecting a value in the HAL and verifying it propagates to a subscriber.
-    public void testComplexAvailableLayers() throws Exception {
-        if (!VmsTestUtils.canRunTest(TAG)) return;
-        VmsSubscriberManager vmsSubscriberManager = (VmsSubscriberManager) getCar().getCarManager(
-                Car.VMS_SUBSCRIBER_SERVICE);
-        TestClientCallback clientCallback = new TestClientCallback();
-        vmsSubscriberManager.registerClientCallback(clientCallback);
-
-        // Inject a value and wait for its callback in TestClientCallback.onLayersAvailabilityChanged.
-        VehiclePropValue v = VehiclePropValueBuilder.newBuilder(VehicleProperty.VEHICLE_MAP_SERVICE)
-                .setAreaId(VehicleAreaType.VEHICLE_AREA_TYPE_NONE)
-                .setTimestamp(SystemClock.elapsedRealtimeNanos())
-                .build();
-        /*
-        Offering:
-        Layer  | Dependency
-        ====================
-        (2, 3, 444), [17] | {}
-        (4, 5, 444), [17] | {(2, 3)}
-        (6, 7, 444), [17] | {(2, 3), (4, 5)}
-        (6, 7, 444), [17] | {(100, 200)}
-
-        Expected availability:
-        {(2, 3, 444 [17]), (4, 5, 444 [17]), (6, 7, 444 [17])}
-         */
-
-        v.value.int32Values.addAll(
-                Arrays.asList(
-                        VmsMessageType.OFFERING, // MessageType
-                        PUBLISHER_ID,
-                        4, // Number of offered layers
-
-                        SUBSCRIPTION_LAYER_ID,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_LAYER_VERSION,
-                        0, // number of dependencies for layer
-
-                        SUBSCRIPTION_DEPENDANT_LAYER_ID_1,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_DEPENDANT_LAYER_VERSION_1,
-                        1, // number of dependencies for layer
-                        SUBSCRIPTION_LAYER_ID,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_LAYER_VERSION,
-
-                        SUBSCRIPTION_DEPENDANT_LAYER_ID_2,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_DEPENDANT_LAYER_VERSION_2,
-                        2, // number of dependencies for layer
-                        SUBSCRIPTION_LAYER_ID,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_LAYER_VERSION,
-                        SUBSCRIPTION_DEPENDANT_LAYER_ID_1,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_DEPENDANT_LAYER_VERSION_1,
-
-                        SUBSCRIPTION_DEPENDANT_LAYER_ID_2,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_DEPENDANT_LAYER_VERSION_2,
-                        1, // number of dependencies for layer
-                        SUBSCRIPTION_UNSUPPORTED_LAYER_ID,
-                        MOCK_PUBLISHER_LAYER_SUBTYPE,
-                        SUBSCRIPTION_UNSUPPORTED_LAYER_VERSION
-                )
-        );
-
-        assertEquals(0, mSubscriberSemaphore.availablePermits());
-
-        List<VmsAssociatedLayer> expectedAvailableLayers =
-                new ArrayList<>(Arrays.asList(
-                        SUBSCRIPTION_ASSOCIATED_LAYER,
-                        SUBSCRIPTION_DEPENDANT_ASSOCIATED_LAYER_1,
-                        SUBSCRIPTION_DEPENDANT_ASSOCIATED_LAYER_2
-                ));
-        getMockedVehicleHal().injectEvent(v);
-        assertTrue(mSubscriberSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
-        assertTrue(expectedAvailableLayers.containsAll(clientCallback.getAvailableLayers()));
-        assertEquals(expectedAvailableLayers.size(), clientCallback.getAvailableLayers().size());
-    }
-
-    private class HalHandler implements VehicleHalPropertyHandler {
-        private VehiclePropValue mValue;
-
-        @Override
-        public synchronized void onPropertySet(VehiclePropValue value) {
-            mValue = value;
-            mHalHandlerSemaphore.release();
-        }
-
-        @Override
-        public synchronized VehiclePropValue onPropertyGet(VehiclePropValue value) {
-            return mValue != null ? mValue : value;
-        }
-
-        @Override
-        public synchronized void onPropertySubscribe(int property, int zones, float sampleRate) {
-            Log.d(TAG, "onPropertySubscribe property " + property + " sampleRate " + sampleRate);
-        }
-
-        @Override
-        public synchronized void onPropertyUnsubscribe(int property) {
-            Log.d(TAG, "onPropertyUnSubscribe property " + property);
-        }
-
-        public VehiclePropValue getValue() {
-            return mValue;
-        }
-    }
-
-    private class TestClientCallback implements VmsSubscriberClientCallback {
-        private VmsLayer mLayer;
-        private byte[] mPayload;
-        private List<VmsLayer> mAvailableLayers = new ArrayList<>();
-
-        @Override
-        public void onVmsMessageReceived(VmsLayer layer, byte[] payload) {
-            Log.d(TAG, "onVmsMessageReceived: layer: " + layer + " Payload: " + payload);
-            mLayer = layer;
-            mPayload = payload;
-            mSubscriberSemaphore.release();
-        }
-
-        @Override
-        public void onLayersAvailabilityChanged(List<VmsLayer> availableLayers) {
-            Log.d(TAG, "onLayersAvailabilityChanged: Layers: " + availableLayers);
-            mAvailableLayers.addAll(availableLayers);
-            mSubscriberSemaphore.release();
-        }
-
-        public VmsLayer getLayer() {
-            return mLayer;
-        }
-
-        public byte[] getPayload() {
-            return mPayload;
-        }
-
-        public List<VmsLayer> getAvailableLayers() {
-            return mAvailableLayers;
-        }
-    }
-}
diff --git a/tests/carservice_test/src/com/android/car/test/VmsTestUtils.java b/tests/carservice_test/src/com/android/car/test/VmsTestUtils.java
deleted file mode 100644
index 2f3af52..0000000
--- a/tests/carservice_test/src/com/android/car/test/VmsTestUtils.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.android.car.test;
-
-import android.car.annotation.FutureFeature;
-import android.util.Log;
-
-import com.android.car.internal.FeatureConfiguration;
-
-@FutureFeature
-public class VmsTestUtils {
-    public static boolean canRunTest(String tag) {
-        if (!FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE) {
-            Log.i(tag, "Skipping test because ENABLE_VEHICLE_MAP_SERVICE = false");
-        }
-        return FeatureConfiguration.ENABLE_VEHICLE_MAP_SERVICE;
-    }
-}
diff --git a/tests/carservice_unit_test/src/com/android/car/VmsLayersAvailabilityTest.java b/tests/carservice_unit_test/src/com/android/car/VmsLayersAvailabilityTest.java
deleted file mode 100644
index 4a09d4f..0000000
--- a/tests/carservice_unit_test/src/com/android/car/VmsLayersAvailabilityTest.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsLayerDependency;
-import android.car.vms.VmsLayersOffering;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-@SmallTest
-public class VmsLayersAvailabilityTest extends AndroidTestCase {
-
-    private static final VmsLayer LAYER_X = new VmsLayer(1, 1, 2);
-    private static final VmsLayer LAYER_Y = new VmsLayer(3, 2, 4);
-    private static final VmsLayer LAYER_Z = new VmsLayer(5, 3, 6);
-
-    private static final int PUBLISHER_ID_1 = 19;
-    private static final int PUBLISHER_ID_2 = 28;
-
-    private static final Set<Integer> PUBLISHERS_1 = new HashSet<>(Arrays.asList(PUBLISHER_ID_1));
-    private static final Set<Integer> PUBLISHERS_2 = new HashSet<>(Arrays.asList(PUBLISHER_ID_2));
-    private static final Set<Integer> PUBLISHERS_1_AND_2 =
-            new HashSet<>(Arrays.asList(PUBLISHER_ID_1, PUBLISHER_ID_2));
-
-    private static final VmsLayerDependency X_DEPENDS_ON_Y =
-            new VmsLayerDependency(LAYER_X, new HashSet<VmsLayer>(Arrays.asList(LAYER_Y)));
-
-    private static final VmsLayerDependency X_DEPENDS_ON_Z =
-            new VmsLayerDependency(LAYER_X, new HashSet<VmsLayer>(Arrays.asList(LAYER_Z)));
-
-    private static final VmsLayerDependency Y_DEPENDS_ON_Z =
-            new VmsLayerDependency(LAYER_Y, new HashSet<VmsLayer>(Arrays.asList(LAYER_Z)));
-
-    private static final VmsLayerDependency Y_DEPENDS_ON_X =
-            new VmsLayerDependency(LAYER_Y, new HashSet<VmsLayer>(Arrays.asList(LAYER_X)));
-
-    private static final VmsLayerDependency Z_DEPENDS_ON_X =
-            new VmsLayerDependency(LAYER_Z, new HashSet<VmsLayer>(Arrays.asList(LAYER_X)));
-
-    private static final VmsLayerDependency Z_DEPENDS_ON_NOTHING =
-            new VmsLayerDependency(LAYER_Z);
-
-    private static final VmsLayerDependency X_DEPENDS_ON_SELF =
-            new VmsLayerDependency(LAYER_X, new HashSet<VmsLayer>(Arrays.asList(LAYER_X)));
-
-    private Set<VmsLayersOffering> mOfferings;
-    private VmsLayersAvailability mLayersAvailability;
-
-    @Override
-    protected void setUp() throws Exception {
-        mLayersAvailability = new VmsLayersAvailability();
-        mOfferings = new HashSet<>();
-        super.setUp();
-    }
-
-    public void testNoOffering() {
-        assertTrue(mLayersAvailability.getAvailableLayers().isEmpty());
-    }
-
-    public void testEmptyOffering() {
-        mLayersAvailability.setPublishersOffering(Collections.EMPTY_LIST);
-        assertTrue(mLayersAvailability.getAvailableLayers().isEmpty());
-    }
-
-    public void testSingleLayerNoDeps() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_2));
-
-        VmsLayersOffering offering =
-                new VmsLayersOffering(new HashSet<>(Arrays.asList(new VmsLayerDependency(LAYER_X))),
-                        PUBLISHER_ID_2);
-
-        mOfferings.add(offering);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers, mLayersAvailability.getAvailableLayers());
-    }
-
-    public void testChainOfDependenciesSatisfied() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Y, PUBLISHERS_1));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Z, PUBLISHERS_1));
-
-        VmsLayersOffering offering =
-                new VmsLayersOffering(
-                        new HashSet<>(Arrays.asList(X_DEPENDS_ON_Y, Y_DEPENDS_ON_Z, Z_DEPENDS_ON_NOTHING)),
-                        PUBLISHER_ID_1);
-
-        mOfferings.add(offering);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-    }
-
-    public void testChainOfDependenciesSatisfiedTwoOfferings() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Y, PUBLISHERS_1));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Z, PUBLISHERS_1));
-
-        VmsLayersOffering offering1 =
-                new VmsLayersOffering(
-                        new HashSet<>(Arrays.asList(X_DEPENDS_ON_Y, Y_DEPENDS_ON_Z)),
-                        PUBLISHER_ID_1);
-
-        VmsLayersOffering offering2 =
-                new VmsLayersOffering(new HashSet<>(Arrays.asList(Z_DEPENDS_ON_NOTHING)),
-                        PUBLISHER_ID_1);
-
-        mOfferings.add(offering1);
-        mOfferings.add(offering2);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-    }
-
-    public void testChainOfDependencieNotSatisfied() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        VmsLayersOffering offering =
-                new VmsLayersOffering(new HashSet<>(Arrays.asList(X_DEPENDS_ON_Y, Y_DEPENDS_ON_Z)),
-                        PUBLISHER_ID_1);
-
-        mOfferings.add(offering);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-
-        Set<VmsAssociatedLayer> expectedUnavailableAssociatedLayers = new HashSet<>();
-        expectedUnavailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-        expectedUnavailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Y, PUBLISHERS_1));
-
-
-        assertEquals(expectedUnavailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getUnavailableLayers()));
-    }
-
-    public void testOneOfMultipleDependencySatisfied() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Z, PUBLISHERS_1));
-
-
-        VmsLayersOffering offering =
-                new VmsLayersOffering(
-                        new HashSet<>(Arrays.asList(
-                                X_DEPENDS_ON_Y, X_DEPENDS_ON_Z, Z_DEPENDS_ON_NOTHING)),
-                        PUBLISHER_ID_1);
-
-        mOfferings.add(offering);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-    }
-
-    public void testCyclicDependency() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-
-        VmsLayersOffering offering =
-                new VmsLayersOffering(
-                        new HashSet<>(
-                                Arrays.asList(X_DEPENDS_ON_Y, Y_DEPENDS_ON_Z, Z_DEPENDS_ON_X)),
-                        PUBLISHER_ID_1);
-
-        mOfferings.add(offering);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-    }
-
-    public void testAlmostCyclicDependency() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Z, PUBLISHERS_1_AND_2));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Y, PUBLISHERS_2));
-
-        VmsLayersOffering offering1 =
-                new VmsLayersOffering(
-                        new HashSet<>(Arrays.asList(X_DEPENDS_ON_Y, Z_DEPENDS_ON_NOTHING)),
-                        PUBLISHER_ID_1);
-
-        VmsLayersOffering offering2 =
-                new VmsLayersOffering(new HashSet<>(Arrays.asList(Y_DEPENDS_ON_Z, Z_DEPENDS_ON_X)),
-                        PUBLISHER_ID_2);
-
-        mOfferings.add(offering1);
-        mOfferings.add(offering2);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers, mLayersAvailability.getAvailableLayers());
-    }
-
-    public void testCyclicDependencyAndLayerWithoutDependency() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-        expectedAvailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Z, PUBLISHERS_1));
-
-        VmsLayersOffering offering1 =
-                new VmsLayersOffering(
-                        new HashSet<>(
-                                Arrays.asList(X_DEPENDS_ON_Y, Z_DEPENDS_ON_NOTHING)),
-                        PUBLISHER_ID_1);
-
-        VmsLayersOffering offering2 =
-                new VmsLayersOffering(new HashSet<>(Arrays.asList(Y_DEPENDS_ON_X)), PUBLISHER_ID_2);
-
-        mOfferings.add(offering1);
-        mOfferings.add(offering2);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-
-        Set<VmsAssociatedLayer> expectedUnavailableAssociatedLayers = new HashSet<>();
-        expectedUnavailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-        expectedUnavailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_Y, PUBLISHERS_2));
-
-        assertEquals(expectedUnavailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getUnavailableLayers()));
-    }
-
-    public void testSelfDependency() throws Exception {
-        Set<VmsAssociatedLayer> expectedAvailableAssociatedLayers = new HashSet<>();
-
-        VmsLayersOffering offering =
-                new VmsLayersOffering(new HashSet<>(Arrays.asList(X_DEPENDS_ON_SELF)),
-                        PUBLISHER_ID_1);
-
-        mOfferings.add(offering);
-        mLayersAvailability.setPublishersOffering(mOfferings);
-
-        assertEquals(expectedAvailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getAvailableLayers()));
-
-        Set<VmsAssociatedLayer> expectedUnavailableAssociatedLayers = new HashSet<>();
-        expectedUnavailableAssociatedLayers.add(new VmsAssociatedLayer(LAYER_X, PUBLISHERS_1));
-
-        assertEquals(expectedUnavailableAssociatedLayers,
-                new HashSet<VmsAssociatedLayer>(mLayersAvailability.getUnavailableLayers()));
-    }
-}
\ No newline at end of file
diff --git a/tests/carservice_unit_test/src/com/android/car/VmsPublishersInfoTest.java b/tests/carservice_unit_test/src/com/android/car/VmsPublishersInfoTest.java
deleted file mode 100644
index 2b75012..0000000
--- a/tests/carservice_unit_test/src/com/android/car/VmsPublishersInfoTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.annotation.FutureFeature;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.Arrays;
-import java.util.Map;
-
-@FutureFeature
-@SmallTest
-public class VmsPublishersInfoTest extends AndroidTestCase {
-    public static final byte[] MOCK_INFO_0 = new byte[]{2, 3, 5, 7, 11, 13, 17};
-    public static final byte[] SAME_MOCK_INFO_0 = new byte[]{2, 3, 5, 7, 11, 13, 17};
-    public static final byte[] MOCK_INFO_1 = new byte[]{2, 3, 5, 7, 11, 13, 17, 19};
-
-    private VmsPublishersInfo mVmsPublishersInfo;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mVmsPublishersInfo = new VmsPublishersInfo();
-    }
-
-    // Test one info sanity
-    public void testSingleInfo() throws Exception {
-        int id = mVmsPublishersInfo.getIdForInfo(MOCK_INFO_0);
-        assertEquals(0, id);
-
-        byte[] info = mVmsPublishersInfo.getPublisherInfo(id);
-        assertTrue(Arrays.equals(MOCK_INFO_0, info));
-    }
-
-    // Test one info sanity - wrong ID fails.
-    public void testSingleInfoWrongId() throws Exception {
-        int id = mVmsPublishersInfo.getIdForInfo(MOCK_INFO_0);
-        assertEquals(0, id);
-
-        try {
-            byte[] info = mVmsPublishersInfo.getPublisherInfo(id + 1);
-        }
-        catch (NullPointerException e) {
-            return;
-        }
-        fail();
-    }
-
-    // Test two infos.
-    public void testTwoInfos() throws Exception {
-        int id0 = mVmsPublishersInfo.getIdForInfo(MOCK_INFO_0);
-        int id1 = mVmsPublishersInfo.getIdForInfo(MOCK_INFO_1);
-        assertEquals(0, id0);
-        assertEquals(1, id1);
-
-        byte[] info0 = mVmsPublishersInfo.getPublisherInfo(id0);
-        byte[] info1 = mVmsPublishersInfo.getPublisherInfo(id1);
-        assertTrue(Arrays.equals(MOCK_INFO_0, info0));
-        assertTrue(Arrays.equals(MOCK_INFO_1, info1));
-    }
-
-    // Test same info twice get the same ID.
-    public void testSingleInfoInsertedTwice() throws Exception {
-        int id = mVmsPublishersInfo.getIdForInfo(MOCK_INFO_0);
-        assertEquals(0, id);
-
-        int sameId = mVmsPublishersInfo.getIdForInfo(SAME_MOCK_INFO_0);
-        assertEquals(sameId, id);
-    }
-}
diff --git a/tests/carservice_unit_test/src/com/android/car/VmsRoutingTest.java b/tests/carservice_unit_test/src/com/android/car/VmsRoutingTest.java
deleted file mode 100644
index 8fe849b..0000000
--- a/tests/carservice_unit_test/src/com/android/car/VmsRoutingTest.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * 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 com.android.car;
-
-import android.car.vms.IVmsSubscriberClient;
-import android.car.vms.VmsAssociatedLayer;
-import android.car.vms.VmsLayer;
-import android.car.vms.VmsSubscriptionState;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.Map;
-
-@SmallTest
-public class VmsRoutingTest extends AndroidTestCase {
-    private static VmsLayer LAYER_WITH_SUBSCRIPTION_1 = new VmsLayer(1, 1, 2);
-    private static VmsLayer LAYER_WITH_SUBSCRIPTION_2 = new VmsLayer(1, 3, 3);
-    private static VmsLayer LAYER_WITHOUT_SUBSCRIPTION =
-            new VmsLayer(1, 7, 4);
-    private static int PUBLISHER_ID_1 = 123;
-    private static int PUBLISHER_ID_2 = 456;
-    private static int PUBLISHER_ID_UNLISTED = 789;
-    private VmsRouting mRouting;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mRouting = new VmsRouting();
-    }
-
-    public void testAddingSubscribersAndHalLayersNoOverlap() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a HAL subscription.
-        mRouting.addHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        // Verify expected subscriptions are in routing manager.
-        Set<VmsLayer> expectedSubscriptions = new HashSet<>();
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_1);
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_2);
-        VmsSubscriptionState subscriptionState = mRouting.getSubscriptionState();
-        assertEquals(2, subscriptionState.getSequenceNumber());
-        assertEquals(expectedSubscriptions,
-                new HashSet<>(subscriptionState.getLayers()));
-
-        // Verify there is only a single subscriber.
-        assertEquals(1,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1).size());
-    }
-
-    public void testAddingSubscribersAndHalLayersWithOverlap() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_2);
-
-        // Add a HAL subscription to a layer there is already another subscriber for.
-        mRouting.addHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        // Verify expected subscriptions are in routing manager.
-        Set<VmsLayer> expectedSubscriptions = new HashSet<>();
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_1);
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_2);
-        VmsSubscriptionState subscriptionState = mRouting.getSubscriptionState();
-        assertEquals(3, subscriptionState.getSequenceNumber());
-        assertEquals(expectedSubscriptions,
-                new HashSet<>(subscriptionState.getLayers()));
-    }
-
-    public void testAddingAndRemovingLayers() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a HAL subscription.
-        mRouting.addHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        // Remove a subscription to a layer.
-        mRouting.removeSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Update the HAL subscription
-        mRouting.removeHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        // Verify there are no subscribers in the routing manager.
-        VmsSubscriptionState subscriptionState = mRouting.getSubscriptionState();
-        assertEquals(4, subscriptionState.getSequenceNumber());
-        assertTrue(subscriptionState.getLayers().isEmpty());
-    }
-
-    public void testAddingBothTypesOfSubscribers() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriberForLayer = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriberForLayer, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a subscription without a layer.
-        MockVmsSubscriber subscriberWithoutLayer = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriberWithoutLayer);
-
-        // Verify 2 subscribers for the layer.
-        assertEquals(2,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1).size());
-
-        // Add the subscriber with layer as also a subscriber without layer
-        mRouting.addSubscription(subscriberForLayer);
-
-        // The number of subscribers for the layer should remain the same as before.
-        assertEquals(2,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1).size());
-    }
-
-    public void testOnlyRelevantSubscribers() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriberForLayer = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriberForLayer, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a subscription without a layer.
-        MockVmsSubscriber subscriberWithoutLayer = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriberWithoutLayer);
-
-        // Verify that only the subscriber without layer is returned.
-        Set<MockVmsSubscriber> expectedListeneres = new HashSet<MockVmsSubscriber>();
-        expectedListeneres.add(subscriberWithoutLayer);
-        assertEquals(expectedListeneres,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITHOUT_SUBSCRIPTION, PUBLISHER_ID_1));
-    }
-
-    public void testAddingSubscribersAndHalLayersAndSubscribersToPublishers() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a HAL subscription.
-        mRouting.addHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_2);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_2, PUBLISHER_ID_2);
-
-        // Verify expected subscriptions are in routing manager.
-        Set<VmsLayer> expectedSubscriptions = new HashSet<>();
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_1);
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_2);
-
-        Set<VmsAssociatedLayer> expectedSubscriptionsToPublishers = new HashSet<>();
-        expectedSubscriptionsToPublishers.add(new VmsAssociatedLayer(LAYER_WITH_SUBSCRIPTION_1,
-                new HashSet(Arrays.asList(PUBLISHER_ID_1, PUBLISHER_ID_2))));
-        expectedSubscriptionsToPublishers.add(new VmsAssociatedLayer(LAYER_WITH_SUBSCRIPTION_2,
-                new HashSet(Arrays.asList(PUBLISHER_ID_2))));
-
-        VmsSubscriptionState subscriptionState = mRouting.getSubscriptionState();
-        assertEquals(5, subscriptionState.getSequenceNumber());
-        assertEquals(expectedSubscriptions,
-                new HashSet<>(subscriptionState.getLayers()));
-
-        assertEquals(expectedSubscriptionsToPublishers,
-                subscriptionState.getAssociatedLayers());
-
-        // Verify there is only a single subscriber.
-        assertEquals(1,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1).size());
-    }
-
-    public void testAddingSubscriberToPublishersAndGetListeneresToDifferentPublisher()
-            throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_2);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1);
-
-        Set<IVmsSubscriberClient> subscribers;
-        // Need to route a layer 1 message from publisher 2 so there are no subscribers.
-        subscribers =
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1,
-                        PUBLISHER_ID_2);
-        assertEquals(0, subscribers.size());
-
-        // Need to route a layer 1 message from publisher 1 so there is one subscriber.
-        subscribers =
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1,
-                        PUBLISHER_ID_1);
-        assertEquals(1, subscribers.size());
-        assertTrue(subscribers.contains(subscriber));
-
-        // Verify all the messages for LAYER_WITH_SUBSCRIPTION_2 have subscribers since the
-        // subscription was done without specifying a specific publisher.
-        subscribers =
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_2,
-                        PUBLISHER_ID_UNLISTED);
-        assertEquals(1, subscribers.size());
-        assertTrue(subscribers.contains(subscriber));
-    }
-
-
-    public void testRemovalOfSubscribersToPublishers() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a HAL subscription.
-        mRouting.addHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_2);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_2, PUBLISHER_ID_2);
-        mRouting.removeSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_2, PUBLISHER_ID_2);
-
-        // Verify expected subscriptions are in routing manager.
-        Set<VmsLayer> expectedSubscriptions = new HashSet<>();
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_1);
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_2);
-
-
-        Set<VmsAssociatedLayer> expectedSubscriptionsToPublishers = new HashSet<>();
-        expectedSubscriptionsToPublishers.add(new VmsAssociatedLayer(LAYER_WITH_SUBSCRIPTION_1,
-                new HashSet(Arrays.asList(PUBLISHER_ID_1, PUBLISHER_ID_2))));
-
-        VmsSubscriptionState subscriptionState = mRouting.getSubscriptionState();
-        assertEquals(6, subscriptionState.getSequenceNumber());
-        assertEquals(expectedSubscriptions,
-                new HashSet<>(subscriptionState.getLayers()));
-
-        assertEquals(expectedSubscriptionsToPublishers,
-                subscriptionState.getAssociatedLayers());
-
-        // Verify there is only a single subscriber.
-        assertEquals(1,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1).size());
-    }
-
-    public void testRemovalOfSubscribersToPublishersClearListForPublisher() throws Exception {
-        // Add a subscription to a layer.
-        MockVmsSubscriber subscriber = new MockVmsSubscriber();
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1);
-
-        // Add a HAL subscription.
-        mRouting.addHalSubscription(LAYER_WITH_SUBSCRIPTION_2);
-
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_2);
-        mRouting.addSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_2, PUBLISHER_ID_2);
-        mRouting.removeSubscription(subscriber, LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1);
-
-        // Verify expected subscriptions are in routing manager.
-        Set<VmsLayer> expectedSubscriptions = new HashSet<>();
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_1);
-        expectedSubscriptions.add(LAYER_WITH_SUBSCRIPTION_2);
-
-        Set<VmsAssociatedLayer> expectedSubscriptionsToPublishers = new HashSet<>();
-        expectedSubscriptionsToPublishers.add(new VmsAssociatedLayer(LAYER_WITH_SUBSCRIPTION_1,
-                new HashSet(Arrays.asList(PUBLISHER_ID_2))));
-        expectedSubscriptionsToPublishers.add(new VmsAssociatedLayer(LAYER_WITH_SUBSCRIPTION_2,
-                new HashSet(Arrays.asList(PUBLISHER_ID_2))));
-
-        VmsSubscriptionState subscriptionState = mRouting.getSubscriptionState();
-        assertEquals(6, subscriptionState.getSequenceNumber());
-        assertEquals(expectedSubscriptions,
-                new HashSet<>(subscriptionState.getLayers()));
-
-        assertEquals(expectedSubscriptionsToPublishers,
-                subscriptionState.getAssociatedLayers());
-
-        // Verify there is only a single subscriber.
-        assertEquals(1,
-                mRouting.getSubscribersForLayerFromPublisher(
-                        LAYER_WITH_SUBSCRIPTION_1, PUBLISHER_ID_1).size());
-    }
-
-    class MockVmsSubscriber extends IVmsSubscriberClient.Stub {
-        @Override
-        public void onVmsMessageReceived(VmsLayer layer, byte[] payload) {
-        }
-
-        @Override
-        public void onLayersAvailabilityChanged(List<VmsAssociatedLayer> availableLayers) {
-        }
-    }
-}
\ No newline at end of file