2525import android .net .NetworkUtils ;
2626import android .os .Binder ;
2727import android .os .Build .VERSION_CODES ;
28+ import android .os .Bundle ;
2829import android .os .Handler ;
2930import android .os .HandlerThread ;
3031import android .os .IBinder ;
@@ -2147,50 +2148,57 @@ public void handleMessage(Message message) {
21472148 Log .d (TAG , "CM callback handler got msg " + message .what );
21482149 switch (message .what ) {
21492150 case CALLBACK_PRECHECK : {
2150- NetworkRequest request = getNetworkRequest (message );
2151+ NetworkRequest request = (NetworkRequest )getObject (message ,
2152+ NetworkRequest .class );
21512153 NetworkCallback callbacks = getCallbacks (request );
21522154 if (callbacks != null ) {
2153- callbacks .onPreCheck (getNetwork ( message ));
2155+ callbacks .onPreCheck (( Network ) getObject ( message , Network . class ));
21542156 } else {
21552157 Log .e (TAG , "callback not found for PRECHECK message" );
21562158 }
21572159 break ;
21582160 }
21592161 case CALLBACK_AVAILABLE : {
2160- NetworkRequest request = getNetworkRequest (message );
2162+ NetworkRequest request = (NetworkRequest )getObject (message ,
2163+ NetworkRequest .class );
21612164 NetworkCallback callbacks = getCallbacks (request );
21622165 if (callbacks != null ) {
2163- callbacks .onAvailable (getNetwork ( message ));
2166+ callbacks .onAvailable (( Network ) getObject ( message , Network . class ));
21642167 } else {
21652168 Log .e (TAG , "callback not found for AVAILABLE message" );
21662169 }
21672170 break ;
21682171 }
21692172 case CALLBACK_LOSING : {
2170- NetworkRequest request = getNetworkRequest (message );
2173+ NetworkRequest request = (NetworkRequest )getObject (message ,
2174+ NetworkRequest .class );
21712175 NetworkCallback callbacks = getCallbacks (request );
21722176 if (callbacks != null ) {
2173- callbacks .onLosing (getNetwork (message ), message .arg1 );
2177+ callbacks .onLosing ((Network )getObject (message , Network .class ),
2178+ message .arg1 );
21742179 } else {
21752180 Log .e (TAG , "callback not found for LOSING message" );
21762181 }
21772182 break ;
21782183 }
21792184 case CALLBACK_LOST : {
2180- NetworkRequest request = getNetworkRequest (message );
2185+ NetworkRequest request = (NetworkRequest )getObject (message ,
2186+ NetworkRequest .class );
2187+
21812188 NetworkCallback callbacks = getCallbacks (request );
21822189 if (callbacks != null ) {
2183- callbacks .onLost (getNetwork ( message ));
2190+ callbacks .onLost (( Network ) getObject ( message , Network . class ));
21842191 } else {
21852192 Log .e (TAG , "callback not found for LOST message" );
21862193 }
21872194 break ;
21882195 }
21892196 case CALLBACK_UNAVAIL : {
2190- NetworkRequest req = (NetworkRequest )message .obj ;
2197+ NetworkRequest request = (NetworkRequest )getObject (message ,
2198+ NetworkRequest .class );
21912199 NetworkCallback callbacks = null ;
21922200 synchronized (mCallbackMap ) {
2193- callbacks = mCallbackMap .get (req );
2201+ callbacks = mCallbackMap .get (request );
21942202 }
21952203 if (callbacks != null ) {
21962204 callbacks .onUnavailable ();
@@ -2200,33 +2208,37 @@ public void handleMessage(Message message) {
22002208 break ;
22012209 }
22022210 case CALLBACK_CAP_CHANGED : {
2203- NetworkRequest request = getNetworkRequest (message );
2211+ NetworkRequest request = (NetworkRequest )getObject (message ,
2212+ NetworkRequest .class );
22042213 NetworkCallback callbacks = getCallbacks (request );
22052214 if (callbacks != null ) {
2206- Network network = getNetwork (message );
2207- NetworkCapabilities cap = mCm .getNetworkCapabilities (network );
2215+ Network network = (Network )getObject (message , Network .class );
2216+ NetworkCapabilities cap = (NetworkCapabilities )getObject (message ,
2217+ NetworkCapabilities .class );
22082218
22092219 callbacks .onCapabilitiesChanged (network , cap );
22102220 } else {
2211- Log .e (TAG , "callback not found for CHANGED message" );
2221+ Log .e (TAG , "callback not found for CAP_CHANGED message" );
22122222 }
22132223 break ;
22142224 }
22152225 case CALLBACK_IP_CHANGED : {
2216- NetworkRequest request = getNetworkRequest (message );
2226+ NetworkRequest request = (NetworkRequest )getObject (message ,
2227+ NetworkRequest .class );
22172228 NetworkCallback callbacks = getCallbacks (request );
22182229 if (callbacks != null ) {
2219- Network network = getNetwork (message );
2220- LinkProperties lp = mCm .getLinkProperties (network );
2230+ Network network = (Network )getObject (message , Network .class );
2231+ LinkProperties lp = (LinkProperties )getObject (message ,
2232+ LinkProperties .class );
22212233
22222234 callbacks .onLinkPropertiesChanged (network , lp );
22232235 } else {
2224- Log .e (TAG , "callback not found for CHANGED message" );
2236+ Log .e (TAG , "callback not found for IP_CHANGED message" );
22252237 }
22262238 break ;
22272239 }
22282240 case CALLBACK_RELEASED : {
2229- NetworkRequest req = (NetworkRequest )message . obj ;
2241+ NetworkRequest req = (NetworkRequest )getObject ( message , NetworkRequest . class ) ;
22302242 NetworkCallback callbacks = null ;
22312243 synchronized (mCallbackMap ) {
22322244 callbacks = mCallbackMap .remove (req );
@@ -2254,23 +2266,14 @@ public void handleMessage(Message message) {
22542266 }
22552267 }
22562268
2257- private NetworkRequest getNetworkRequest (Message msg ) {
2258- return ( NetworkRequest )( msg . obj );
2269+ private Object getObject (Message msg , Class c ) {
2270+ return msg . getData (). getParcelable ( c . getSimpleName () );
22592271 }
22602272 private NetworkCallback getCallbacks (NetworkRequest req ) {
22612273 synchronized (mCallbackMap ) {
22622274 return mCallbackMap .get (req );
22632275 }
22642276 }
2265- private Network getNetwork (Message msg ) {
2266- return new Network (msg .arg2 );
2267- }
2268- private NetworkCallback removeCallbacks (Message msg ) {
2269- NetworkRequest req = (NetworkRequest )msg .obj ;
2270- synchronized (mCallbackMap ) {
2271- return mCallbackMap .remove (req );
2272- }
2273- }
22742277 }
22752278
22762279 private void incCallbackHandlerRefCount () {
0 commit comments