OSDN Git Service

Add dynamic uid info for tracking the sip service usage.
authorChung-yih Wang <cywang@google.com>
Wed, 25 Aug 2010 11:02:18 +0000 (19:02 +0800)
committerChung-yih Wang <cywang@google.com>
Thu, 26 Aug 2010 02:12:05 +0000 (10:12 +0800)
Change-Id: Ibc340401b63799326b08aee6eba602a3e753b13f

services/java/com/android/server/sip/SipService.java
voip/java/android/net/sip/SipProfile.java

index 1142136..3dcaff6 100644 (file)
@@ -32,6 +32,7 @@ import android.net.sip.SipProfile;
 import android.net.sip.SipSessionAdapter;
 import android.net.sip.SipSessionState;
 import android.net.wifi.WifiManager;
+import android.os.Binder;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.SystemClock;
@@ -97,6 +98,7 @@ public final class SipService extends ISipService.Stub {
     }
 
     public void open(SipProfile localProfile) {
+        localProfile.setCallingUid(Binder.getCallingUid());
         if (localProfile.getAutoRegistration()) {
             openToReceiveCalls(localProfile);
         } else {
@@ -119,6 +121,7 @@ public final class SipService extends ISipService.Stub {
 
     public synchronized void open3(SipProfile localProfile,
             String incomingCallBroadcastAction, ISipSessionListener listener) {
+        localProfile.setCallingUid(Binder.getCallingUid());
         if (TextUtils.isEmpty(incomingCallBroadcastAction)) {
             throw new RuntimeException(
                     "empty broadcast action for incoming call");
@@ -165,6 +168,7 @@ public final class SipService extends ISipService.Stub {
 
     public synchronized ISipSession createSession(SipProfile localProfile,
             ISipSessionListener listener) {
+        localProfile.setCallingUid(Binder.getCallingUid());
         if (!mConnected) return null;
         try {
             SipSessionGroupExt group = createGroup(localProfile);
@@ -362,16 +366,7 @@ public final class SipService extends ISipService.Stub {
 
         private SipProfile duplicate(SipProfile p) {
             try {
-                return new SipProfile.Builder(p.getUserName(), p.getSipDomain())
-                        .setProfileName(p.getProfileName())
-                        .setPassword("*")
-                        .setPort(p.getPort())
-                        .setProtocol(p.getProtocol())
-                        .setOutboundProxy(p.getProxyAddress())
-                        .setSendKeepAlive(p.getSendKeepAlive())
-                        .setAutoRegistration(p.getAutoRegistration())
-                        .setDisplayName(p.getDisplayName())
-                        .build();
+                return new SipProfile.Builder(p).setPassword("*").build();
             } catch (Exception e) {
                 Log.wtf(TAG, "duplicate()", e);
                 throw new RuntimeException("duplicate profile", e);
index ec8d0ed..6c99141 100644 (file)
@@ -47,6 +47,7 @@ public class SipProfile implements Parcelable, Serializable, Cloneable {
     private boolean mSendKeepAlive = false;
     private boolean mAutoRegistration = true;
     private boolean mAllowOutgoingCall = false;
+    private int mCallingUid = -1;
 
     /** @hide */
     public static final Parcelable.Creator<SipProfile> CREATOR =
@@ -293,6 +294,7 @@ public class SipProfile implements Parcelable, Serializable, Cloneable {
         mSendKeepAlive = (in.readInt() == 0) ? false : true;
         mAutoRegistration = (in.readInt() == 0) ? false : true;
         mAllowOutgoingCall = (in.readInt() == 0) ? false : true;
+        mCallingUid = in.readInt();
     }
 
     /** @hide */
@@ -306,6 +308,7 @@ public class SipProfile implements Parcelable, Serializable, Cloneable {
         out.writeInt(mSendKeepAlive ? 1 : 0);
         out.writeInt(mAutoRegistration ? 1 : 0);
         out.writeInt(mAllowOutgoingCall ? 1 : 0);
+        out.writeInt(mCallingUid);
     }
 
     /** @hide */
@@ -437,4 +440,20 @@ public class SipProfile implements Parcelable, Serializable, Cloneable {
     public boolean isOutgoingCallAllowed() {
         return mAllowOutgoingCall;
     }
+
+    /**
+     * Sets the calling process's Uid in the sip service.
+     * @hide
+     */
+    public void setCallingUid(int uid) {
+        mCallingUid = uid;
+    }
+
+    /**
+     * Gets the calling process's Uid in the sip settings.
+     * @hide
+     */
+    public int getCallingUid() {
+        return mCallingUid;
+    }
 }