auto import from //branches/cupcake/...@131421
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index bc6fd71..db4daa5 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -132,7 +132,7 @@
     private static final int MESSAGE_HEARTBEAT = 1;
     private static final int MESSAGE_ACQUIRE_WAKE_LOCK = 2;
     private static final int MESSAGE_RELEASE_WAKE_LOCK = 3;
-    private static final int MESSAGE_SET_NETWORK_LOCATION_PROVIDER = 4;
+    private static final int MESSAGE_INSTALL_NETWORK_LOCATION_PROVIDER = 4;
 
     // Alarm manager and wakelock variables
     private final static String ALARM_INTENT = "com.android.location.ALARM_INTENT";
@@ -565,13 +565,21 @@
         }
     }
 
-    public void setNetworkLocationProvider(INetworkLocationProvider provider) {
-        mLocationHandler.removeMessages(MESSAGE_SET_NETWORK_LOCATION_PROVIDER);
+    public void setInstallCallback(InstallCallback callback) {
+        mLocationHandler.removeMessages(MESSAGE_INSTALL_NETWORK_LOCATION_PROVIDER);
         Message m = Message.obtain(mLocationHandler, 
-                MESSAGE_SET_NETWORK_LOCATION_PROVIDER, provider);
+                MESSAGE_INSTALL_NETWORK_LOCATION_PROVIDER, callback);
         mLocationHandler.sendMessageAtFrontOfQueue(m);
     }
 
+    public void setNetworkLocationProvider(INetworkLocationProvider provider) {
+        mNetworkLocationInterface = provider;
+        provider.addListener(getPackageNames());
+        mNetworkLocationProvider = (LocationProviderImpl)provider;
+        LocationProviderImpl.addProvider(mNetworkLocationProvider);
+        updateProviders();
+    }
+
     public void setLocationCollector(ILocationCollector collector) {
         mCollector = collector;
         if (mGpsLocationProvider != null) {
@@ -1598,16 +1606,12 @@
                     // Update wakelock status so the next alarm is set before releasing wakelock
                     updateWakelockStatus(mScreenOn);
                     releaseWakeLock();
-                } else if (msg.what == MESSAGE_SET_NETWORK_LOCATION_PROVIDER) {
+                } else if (msg.what == MESSAGE_INSTALL_NETWORK_LOCATION_PROVIDER) {
                     synchronized (LocationManagerService.class) {
-                        Log.d(TAG, "adding network location provider");
-                        mNetworkLocationInterface = 
-                                (INetworkLocationProvider)msg.obj;
-                        mNetworkLocationInterface.addListener(getPackageNames());
-                        mNetworkLocationProvider = 
-                                (LocationProviderImpl)mNetworkLocationInterface;
-                        LocationProviderImpl.addProvider(mNetworkLocationProvider);
-                        updateProviders();
+                        Log.d(TAG, "installing network location provider");
+                        INetworkLocationManager.InstallCallback callback =
+                                (INetworkLocationManager.InstallCallback)msg.obj;
+                        callback.installNetworkLocationProvider(mContext, LocationManagerService.this);
                     }
                 }
             } catch (Exception e) {