diff --git a/tests/Android.mk b/tests/Android.mk
index e4d00f9..b122183 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -24,11 +24,11 @@
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
-LOCAL_PACKAGE_NAME := TelecommTests
+LOCAL_PACKAGE_NAME := TelecomTests
 LOCAL_CERTIFICATE := platform
 
 LOCAL_MODULE_TAGS := tests
 
-LOCAL_INSTRUMENTATION_FOR := Telecomm
+LOCAL_INSTRUMENTATION_FOR := Telecom
 
 include $(BUILD_PACKAGE)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 47ce802..a6c25c5 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -16,44 +16,44 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           coreApp="true"
-          package="com.android.telecomm.tests"
+          package="com.android.server.telecom.tests"
           android:debuggable="true">
 
     <!-- Test connection service outgoing video preview. -->
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission
-            android:name="com.android.telecomm.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION" />
+            android:name="com.android.server.telecom.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION" />
     <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
 
     <application android:label="@string/app_name"
                  android:debuggable="true">
         <uses-library android:name="android.test.runner" />
 
-        <!-- Miscellaneous telecomm app-related test activities. -->
+        <!-- Miscellaneous telecom app-related test activities. -->
 
-        <service android:name="com.android.telecomm.testapps.TestConnectionService"
+        <service android:name="com.android.server.telecom.testapps.TestConnectionService"
                  android:permission="android.permission.BIND_CONNECTION_SERVICE" >
             <intent-filter>
-                <action android:name="android.telecomm.ConnectionService" />
+                <action android:name="android.telecom.ConnectionService" />
             </intent-filter>
         </service>
 
-        <service android:name="com.android.telecomm.testapps.TestConnectionManager"
+        <service android:name="com.android.server.telecom.testapps.TestConnectionManager"
                  android:permission="android.permission.BIND_CONNECTION_SERVICE" >
             <intent-filter>
-                <action android:name="android.telecomm.ConnectionService" />
+                <action android:name="android.telecom.ConnectionService" />
             </intent-filter>
         </service>
 
-        <service android:name="com.android.telecomm.testapps.TestInCallServiceImpl"
-                 android:process="com.android.telecomm.testapps.TestInCallService"
+        <service android:name="com.android.server.telecom.testapps.TestInCallServiceImpl"
+                 android:process="com.android.server.telecom.testapps.TestInCallService"
                  android:permission="android.permission.BIND_INCALL_SERVICE" >
             <intent-filter>
-                <action android:name="android.telecomm.InCallService"/>
+                <action android:name="android.telecom.InCallService"/>
             </intent-filter>
         </service>
 
-        <activity android:name="com.android.telecomm.testapps.TestCallActivity"
+        <activity android:name="com.android.server.telecom.testapps.TestCallActivity"
                 android:label="@string/testCallActivityLabel">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -61,23 +61,22 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <intent-filter>
-                <action android:name="android.telecomm.testapps.ACTION_START_INCOMING_CALL" />
+                <action android:name="android.telecom.testapps.ACTION_START_INCOMING_CALL" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:scheme="tel" />
             </intent-filter>
         </activity>
 
-        <receiver android:name="com.android.telecomm.testapps.CallNotificationReceiver"
+        <receiver android:name="com.android.server.telecom.testapps.CallNotificationReceiver"
                 android:exported="false">
             <intent-filter>
-                <action android:name="com.android.telecomm.testapps.ACTION_CALL_SERVICE_EXIT"
-                />
+                <action android:name="com.android.server.telecom.testapps.ACTION_CALL_SERVICE_EXIT" />
             </intent-filter>
         </receiver>
 
-        <activity android:name="com.android.telecomm.testapps.TestDialerActivity"
+        <activity android:name="com.android.server.telecom.testapps.TestDialerActivity"
                 android:label="@string/testDialerActivityLabel"
-                android:process="com.android.telecomm.testapps.TestInCallService">
+                android:process="com.android.server.telecom.testapps.TestInCallService">
             <intent-filter>
                 <action android:name="android.intent.action.DIAL" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -112,17 +111,17 @@
 
     <!--
         The prefered way is to use 'runtest':
-           runtest telecomm-unit
+           runtest telecom-unit
 
         runtest is a wrapper around 'adb shell'. The low level shell command is:
-        adb shell am instrument -w com.android.telecomm.tests/android.test.InstrumentationTestRunner
+        adb shell am instrument -w com.android.server.telecom.tests/android.test.InstrumentationTestRunner
 
         To run a single test case:
-        adb shell am instrument -w com.android.telecomm.tests/android.test.InstrumentationTestRunner
-                                -e com.android.telecomm.tests.unit.FooUnitTest
+        adb shell am instrument -w com.android.server.telecom.tests/android.test.InstrumentationTestRunner
+                                -e com.android.server.telecom.tests.unit.FooUnitTest
     -->
     <instrumentation android:name="android.test.InstrumentationTestRunner"
-            android:targetPackage="com.android.telecomm"
+            android:targetPackage="com.android.server.telecom"
             android:label="Telecomm application tests."
             android:debuggable="true"/>
 </manifest>
diff --git a/tests/src/com/android/telecomm/testapps/CallNotificationReceiver.java b/tests/src/com/android/server/telecom/testapps/CallNotificationReceiver.java
similarity index 83%
rename from tests/src/com/android/telecomm/testapps/CallNotificationReceiver.java
rename to tests/src/com/android/server/telecom/testapps/CallNotificationReceiver.java
index 5b49434..6105f3e 100644
--- a/tests/src/com/android/telecomm/testapps/CallNotificationReceiver.java
+++ b/tests/src/com/android/server/telecom/testapps/CallNotificationReceiver.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -22,8 +22,8 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.telecomm.PhoneAccountHandle;
-import android.telecomm.TelecommManager;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
 
 /**
  * This class receives the notification callback intents used to update call states for
@@ -35,15 +35,15 @@
      * TestConnectionService notification. Used to cancel (remove) the notification.
      */
     static final String ACTION_CALL_SERVICE_EXIT =
-            "com.android.telecomm.testapps.ACTION_CALL_SERVICE_EXIT";
+            "com.android.server.telecom.testapps.ACTION_CALL_SERVICE_EXIT";
     static final String ACTION_REGISTER_PHONE_ACCOUNT =
-            "com.android.telecomm.testapps.ACTION_REGISTER_PHONE_ACCOUNT";
+            "com.android.server.telecom.testapps.ACTION_REGISTER_PHONE_ACCOUNT";
     static final String ACTION_SHOW_ALL_PHONE_ACCOUNTS =
-            "com.android.telecomm.testapps.ACTION_SHOW_ALL_PHONE_ACCOUNTS";
+            "com.android.server.telecom.testapps.ACTION_SHOW_ALL_PHONE_ACCOUNTS";
     static final String ACTION_VIDEO_CALL =
-            "com.android.telecomm.testapps.ACTION_VIDEO_CALL";
+            "com.android.server.telecom.testapps.ACTION_VIDEO_CALL";
     static final String ACTION_AUDIO_CALL =
-            "com.android.telecomm.testapps.ACTION_AUDIO_CALL";
+            "com.android.server.telecom.testapps.ACTION_AUDIO_CALL";
 
     /** {@inheritDoc} */
     @Override
@@ -63,7 +63,7 @@
     }
 
     /**
-     * Creates and sends the intent to add an incoming call through Telecomm.
+     * Creates and sends the intent to add an incoming call through Telecom.
      *
      * @param context The current context.
      * @param isVideoCall {@code True} if this is a video call.
@@ -81,6 +81,6 @@
             extras.putParcelable(TestConnectionService.EXTRA_HANDLE, handle);
         }
 
-        TelecommManager.from(context).addNewIncomingCall(phoneAccount, extras);
+        TelecomManager.from(context).addNewIncomingCall(phoneAccount, extras);
     }
 }
diff --git a/tests/src/com/android/telecomm/testapps/CallServiceNotifier.java b/tests/src/com/android/server/telecom/testapps/CallServiceNotifier.java
similarity index 88%
rename from tests/src/com/android/telecomm/testapps/CallServiceNotifier.java
rename to tests/src/com/android/server/telecom/testapps/CallServiceNotifier.java
index 54cbe74..f620b27 100644
--- a/tests/src/com/android/telecomm/testapps/CallServiceNotifier.java
+++ b/tests/src/com/android/server/telecom/testapps/CallServiceNotifier.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
-import com.android.telecomm.tests.R;
+import com.android.server.telecom.tests.R;
 
 import android.app.Notification;
 import android.app.NotificationManager;
@@ -25,9 +25,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.telecomm.PhoneAccount;
-import android.telecomm.PhoneAccountHandle;
-import android.telecomm.TelecommManager;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -91,19 +91,19 @@
     }
 
     /**
-     * Registers a phone account with telecomm.
+     * Registers a phone account with telecom.
      */
     public void registerPhoneAccount(Context context) {
-        TelecommManager telecommManager =
-                (TelecommManager) context.getSystemService(Context.TELECOMM_SERVICE);
+        TelecomManager telecomManager =
+                (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
 
-        telecommManager.clearAccounts();
+        telecomManager.clearAccounts();
 
-        telecommManager.registerPhoneAccount(PhoneAccount.builder(
+        telecomManager.registerPhoneAccount(PhoneAccount.builder(
                         new PhoneAccountHandle(
                                 new ComponentName(context, TestConnectionService.class),
                                 CALL_PROVIDER_ID),
-                        "TelecommTestApp Call Provider")
+                        "TelecomTestApp Call Provider")
                 .setAddress(Uri.parse("tel:555-TEST"))
                 .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
                 .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
@@ -112,11 +112,11 @@
                 .setSupportedUriSchemes(Arrays.asList("tel"))
                 .build());
 
-        telecommManager.registerPhoneAccount(PhoneAccount.builder(
+        telecomManager.registerPhoneAccount(PhoneAccount.builder(
                         new PhoneAccountHandle(
                                 new ComponentName(context, TestConnectionService.class),
                                 SIM_SUBSCRIPTION_ID),
-                        "TelecommTestApp SIM Subscription")
+                        "TelecomTestApp SIM Subscription")
                 .setAddress(Uri.parse("tel:555-TSIM"))
                 .setSubscriptionAddress(Uri.parse("tel:555-TSIM"))
                 .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER |
@@ -125,11 +125,11 @@
                 .setShortDescription("a short description for the sim subscription")
                 .build());
 
-        telecommManager.registerPhoneAccount(PhoneAccount.builder(
+        telecomManager.registerPhoneAccount(PhoneAccount.builder(
                         new PhoneAccountHandle(
                                 new ComponentName(context, TestConnectionManager.class),
                                 CONNECTION_MANAGER_ID),
-                        "TelecommTestApp CONNECTION MANAGER")
+                        "TelecomTestApp CONNECTION MANAGER")
                 .setAddress(Uri.parse("tel:555-CMGR"))
                 .setSubscriptionAddress(Uri.parse("tel:555-CMGR"))
                 .setCapabilities(PhoneAccount.CAPABILITY_CONNECTION_MANAGER)
@@ -139,12 +139,12 @@
     }
 
     /**
-     * Displays all phone accounts registered with telecomm.
+     * Displays all phone accounts registered with telecom.
      */
     public void showAllPhoneAccounts(Context context) {
-        TelecommManager telecommManager =
-                (TelecommManager) context.getSystemService(Context.TELECOMM_SERVICE);
-        List<PhoneAccountHandle> accounts = telecommManager.getEnabledPhoneAccounts();
+        TelecomManager telecomManager =
+                (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+        List<PhoneAccountHandle> accounts = telecomManager.getEnabledPhoneAccounts();
 
         Toast.makeText(context, accounts.toString(), Toast.LENGTH_LONG).show();
     }
@@ -157,7 +157,7 @@
     }
 
     /**
-     * Creates a notification object for using the telecomm APIs.
+     * Creates a notification object for using the telecom APIs.
      */
     private Notification getPhoneAccountNotification(Context context) {
         final Notification.Builder builder = new Notification.Builder(context);
@@ -172,7 +172,7 @@
 
         builder.setSmallIcon(android.R.drawable.stat_sys_phone_call);
         // TODO: Consider moving this into a strings.xml
-        builder.setContentText("Test phone accounts via telecomm APIs.");
+        builder.setContentText("Test phone accounts via telecom APIs.");
         builder.setContentTitle("Test Phone Accounts");
 
         addRegisterPhoneAccountAction(builder, context);
@@ -246,7 +246,7 @@
     }
 
     /**
-     * Adds an action to the Notification Builder for adding an incoming call through Telecomm.
+     * Adds an action to the Notification Builder for adding an incoming call through Telecom.
      * @param builder The Notification Builder.
      */
     private void addAddCallAction(Notification.Builder builder, Context context) {
@@ -254,7 +254,7 @@
     }
 
     /**
-     * Adds an action to the Notification Builder to add an incoming video call through Telecomm.
+     * Adds an action to the Notification Builder to add an incoming video call through Telecom.
      */
     private void addAddVideoCallAction(Notification.Builder builder, Context context) {
         builder.addAction(0, "Add Video", createIncomingVideoCall(context));
diff --git a/tests/src/com/android/telecomm/testapps/CameraThread.java b/tests/src/com/android/server/telecom/testapps/CameraThread.java
similarity index 98%
rename from tests/src/com/android/telecomm/testapps/CameraThread.java
rename to tests/src/com/android/server/telecom/testapps/CameraThread.java
index f077428..fbcd6b2 100644
--- a/tests/src/com/android/telecomm/testapps/CameraThread.java
+++ b/tests/src/com/android/server/telecom/testapps/CameraThread.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
 import android.os.ConditionVariable;
 import android.os.Handler;
diff --git a/tests/src/com/android/telecomm/testapps/TestCallActivity.java b/tests/src/com/android/server/telecom/testapps/TestCallActivity.java
similarity index 88%
rename from tests/src/com/android/telecomm/testapps/TestCallActivity.java
rename to tests/src/com/android/server/telecom/testapps/TestCallActivity.java
index 4caf3e8..f5e24ec 100644
--- a/tests/src/com/android/telecomm/testapps/TestCallActivity.java
+++ b/tests/src/com/android/server/telecom/testapps/TestCallActivity.java
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
 import android.app.Activity;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.util.Log;
 
 /**
  * This activity exists in order to add an icon to the launcher. This activity has no UI of its own
@@ -30,12 +29,12 @@
  *
  * To directly trigger a new incoming call, use the following adb command:
  *
- * adb shell am start -a android.telecomm.testapps.ACTION_START_INCOMING_CALL -d "tel:123456789"
+ * adb shell am start -a android.telecom.testapps.ACTION_START_INCOMING_CALL -d "tel:123456789"
  */
 public class TestCallActivity extends Activity {
 
     public static final String ACTION_NEW_INCOMING_CALL =
-            "android.telecomm.testapps.ACTION_START_INCOMING_CALL";
+            "android.telecom.testapps.ACTION_START_INCOMING_CALL";
 
     @Override
     protected void onCreate(Bundle icicle) {
diff --git a/tests/src/com/android/telecomm/testapps/TestConnectionManager.java b/tests/src/com/android/server/telecom/testapps/TestConnectionManager.java
similarity index 95%
rename from tests/src/com/android/telecomm/testapps/TestConnectionManager.java
rename to tests/src/com/android/server/telecom/testapps/TestConnectionManager.java
index 256d119..2c086d9 100644
--- a/tests/src/com/android/telecomm/testapps/TestConnectionManager.java
+++ b/tests/src/com/android/server/telecom/testapps/TestConnectionManager.java
@@ -14,19 +14,19 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
 import android.net.Uri;
-import android.telecomm.AudioState;
-import android.telecomm.Conference;
-import android.telecomm.Connection;
-import android.telecomm.ConnectionRequest;
-import android.telecomm.ConnectionService;
-import android.telecomm.PhoneAccountHandle;
-import android.telecomm.RemoteConference;
-import android.telecomm.RemoteConnection;
-import android.telecomm.StatusHints;
-import android.telecomm.VideoProfile;
+import android.telecom.AudioState;
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.ConnectionRequest;
+import android.telecom.ConnectionService;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConference;
+import android.telecom.RemoteConnection;
+import android.telecom.StatusHints;
+import android.telecom.VideoProfile;
 import android.util.Log;
 
 import java.util.ArrayList;
diff --git a/tests/src/com/android/telecomm/testapps/TestConnectionService.java b/tests/src/com/android/server/telecom/testapps/TestConnectionService.java
similarity index 93%
rename from tests/src/com/android/telecomm/testapps/TestConnectionService.java
rename to tests/src/com/android/server/telecom/testapps/TestConnectionService.java
index d35d789..a20525b 100644
--- a/tests/src/com/android/telecomm/testapps/TestConnectionService.java
+++ b/tests/src/com/android/server/telecom/testapps/TestConnectionService.java
@@ -14,35 +14,33 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
-import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Intent;
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
-import android.telecomm.AudioState;
-import android.telecomm.Conference;
-import android.telecomm.Connection;
-import android.telecomm.PhoneAccount;
-import android.telecomm.PhoneCapabilities;
-import android.telecomm.ConnectionRequest;
-import android.telecomm.ConnectionService;
-import android.telecomm.PhoneAccountHandle;
-import android.telecomm.RemoteConnection;
-import android.telecomm.StatusHints;
-import android.telecomm.TelecommManager;
-import android.telecomm.VideoProfile;
+import android.telecom.AudioState;
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneCapabilities;
+import android.telecom.ConnectionRequest;
+import android.telecom.ConnectionService;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConnection;
+import android.telecom.StatusHints;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
 import android.telephony.DisconnectCause;
 import android.util.Log;
 
-import com.android.telecomm.tests.R;
+import com.android.server.telecom.tests.R;
 
 import java.lang.String;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Random;
 
@@ -262,8 +260,8 @@
         }
 
         Bundle extras = originalRequest.getExtras();
-        String gatewayPackage = extras.getString(TelecommManager.GATEWAY_PROVIDER_PACKAGE);
-        Uri originalHandle = extras.getParcelable(TelecommManager.GATEWAY_ORIGINAL_ADDRESS);
+        String gatewayPackage = extras.getString(TelecomManager.GATEWAY_PROVIDER_PACKAGE);
+        Uri originalHandle = extras.getParcelable(TelecomManager.GATEWAY_ORIGINAL_ADDRESS);
 
         log("gateway package [" + gatewayPackage + "], original handle [" +
                 originalHandle + "]");
@@ -326,7 +324,7 @@
                     VideoProfile.VideoState.BIDIRECTIONAL :
                     VideoProfile.VideoState.AUDIO_ONLY;
             connection.setVideoState(videoState);
-            connection.setAddress(address, TelecommManager.PRESENTATION_ALLOWED);
+            connection.setAddress(address, TelecomManager.PRESENTATION_ALLOWED);
 
             addCall(connection);
 
diff --git a/tests/src/com/android/telecomm/testapps/TestDialerActivity.java b/tests/src/com/android/server/telecom/testapps/TestDialerActivity.java
similarity index 94%
rename from tests/src/com/android/telecomm/testapps/TestDialerActivity.java
rename to tests/src/com/android/server/telecom/testapps/TestDialerActivity.java
index 405bca5..7a9ed3f 100644
--- a/tests/src/com/android/telecomm/testapps/TestDialerActivity.java
+++ b/tests/src/com/android/server/telecom/testapps/TestDialerActivity.java
@@ -1,4 +1,4 @@
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -7,7 +7,7 @@
 import android.view.View.OnClickListener;
 import android.widget.EditText;
 
-import com.android.telecomm.tests.R;
+import com.android.server.telecom.tests.R;
 
 public class TestDialerActivity extends Activity {
     private EditText mNumberView;
diff --git a/tests/src/com/android/telecomm/testapps/TestInCallServiceImpl.java b/tests/src/com/android/server/telecom/testapps/TestInCallServiceImpl.java
similarity index 85%
rename from tests/src/com/android/telecomm/testapps/TestInCallServiceImpl.java
rename to tests/src/com/android/server/telecom/testapps/TestInCallServiceImpl.java
index e48d5fb..1d7e805 100644
--- a/tests/src/com/android/telecomm/testapps/TestInCallServiceImpl.java
+++ b/tests/src/com/android/server/telecom/testapps/TestInCallServiceImpl.java
@@ -14,10 +14,10 @@
  * limitations under the License
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
-import android.telecomm.InCallService;
-import android.telecomm.Phone;
+import android.telecom.InCallService;
+import android.telecom.Phone;
 import android.util.Log;
 
 import java.lang.Override;
@@ -34,11 +34,11 @@
 
     private Phone.Listener mPhoneListener = new Phone.Listener() {
         @Override
-        public void onCallAdded(Phone phone, android.telecomm.Call call) {
+        public void onCallAdded(Phone phone, android.telecom.Call call) {
             Log.i(TAG, "onCallAdded: "+call.toString());
         }
         @Override
-        public void onCallRemoved(Phone phone, android.telecomm.Call call) {
+        public void onCallRemoved(Phone phone, android.telecom.Call call) {
             Log.i(TAG, "onCallRemoved: "+call.toString());
         }
     };
diff --git a/tests/src/com/android/telecomm/testapps/TestManagedVideoProvider.java b/tests/src/com/android/server/telecom/testapps/TestManagedVideoProvider.java
similarity index 94%
rename from tests/src/com/android/telecomm/testapps/TestManagedVideoProvider.java
rename to tests/src/com/android/server/telecom/testapps/TestManagedVideoProvider.java
index 9e7b9a1..50b77ed 100644
--- a/tests/src/com/android/telecomm/testapps/TestManagedVideoProvider.java
+++ b/tests/src/com/android/server/telecom/testapps/TestManagedVideoProvider.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
-import android.telecomm.CameraCapabilities;
-import android.telecomm.Connection;
-import android.telecomm.RemoteConnection;
-import android.telecomm.VideoProfile;
+import android.telecom.CameraCapabilities;
+import android.telecom.Connection;
+import android.telecom.RemoteConnection;
+import android.telecom.VideoProfile;
 import android.view.Surface;
 
 public class TestManagedVideoProvider extends Connection.VideoProvider {
diff --git a/tests/src/com/android/telecomm/testapps/TestVideoProvider.java b/tests/src/com/android/server/telecom/testapps/TestVideoProvider.java
similarity index 97%
rename from tests/src/com/android/telecomm/testapps/TestVideoProvider.java
rename to tests/src/com/android/server/telecom/testapps/TestVideoProvider.java
index f338101..58f093a 100644
--- a/tests/src/com/android/telecomm/testapps/TestVideoProvider.java
+++ b/tests/src/com/android/server/telecom/testapps/TestVideoProvider.java
@@ -14,12 +14,12 @@
  * limitations under the License
  */
 
-package com.android.telecomm.testapps;
+package com.android.server.telecom.testapps;
 
 import com.android.ex.camera2.blocking.BlockingCameraManager;
 import com.android.ex.camera2.blocking.BlockingCameraManager.BlockingOpenException;
 import com.android.ex.camera2.blocking.BlockingSessionCallback;
-import com.android.telecomm.tests.R;
+import com.android.server.telecom.tests.R;
 
 import android.content.Context;
 import android.graphics.SurfaceTexture;
@@ -34,9 +34,9 @@
 import android.hardware.camera2.params.StreamConfigurationMap;
 import android.media.MediaPlayer;
 import android.os.Handler;
-import android.telecomm.CameraCapabilities;
-import android.telecomm.Connection;
-import android.telecomm.VideoProfile;
+import android.telecom.CameraCapabilities;
+import android.telecom.Connection;
+import android.telecom.VideoProfile;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Size;
diff --git a/tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java b/tests/src/com/android/server/telecom/tests/unit/PhoneAccountRegistrarTest.java
similarity index 98%
rename from tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java
rename to tests/src/com/android/server/telecom/tests/unit/PhoneAccountRegistrarTest.java
index 08fa351..b3aa626 100644
--- a/tests/src/com/android/telecomm/tests/unit/PhoneAccountRegistrarTest.java
+++ b/tests/src/com/android/server/telecom/tests/unit/PhoneAccountRegistrarTest.java
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.telecomm.tests.unit;
+package com.android.server.telecom.tests.unit;
 
 import com.android.internal.util.FastXmlSerializer;
-import com.android.telecomm.Log;
-import com.android.telecomm.PhoneAccountRegistrar;
+import com.android.server.telecom.Log;
+import com.android.server.telecom.PhoneAccountRegistrar;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlSerializer;
@@ -26,8 +26,8 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.net.Uri;
-import android.telecomm.PhoneAccount;
-import android.telecomm.PhoneAccountHandle;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
 import android.test.AndroidTestCase;
 import android.util.Xml;
 
