Home | History | Annotate | Download | only in dataconnection
      1 /*
      2  * Copyright (C) 2013 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.internal.telephony.dataconnection;
     18 
     19 import android.content.BroadcastReceiver;
     20 import android.content.Context;
     21 import android.content.Intent;
     22 import android.content.IntentFilter;
     23 import android.os.Build;
     24 import android.os.Handler;
     25 import android.telephony.Rlog;
     26 
     27 import com.android.internal.telephony.PhoneBase;
     28 
     29 /**
     30  * To bring down all DC's send the following intent:
     31  *
     32  * adb shell am broadcast -a com.android.internal.telephony.dataconnection.action_deactivate_all
     33  */
     34 public class DcTesterDeactivateAll {
     35     private static final String LOG_TAG = "DcTesterDeacativeAll";
     36     private static final boolean DBG = true;
     37 
     38     private PhoneBase mPhone;
     39     private DcController mDcc;
     40 
     41     public static String sActionDcTesterDeactivateAll =
     42             "com.android.internal.telephony.dataconnection.action_deactivate_all";
     43 
     44 
     45     // The static intent receiver one for all instances and we assume this
     46     // is running on the same thread as Dcc.
     47     protected BroadcastReceiver sIntentReceiver = new BroadcastReceiver() {
     48             @Override
     49         public void onReceive(Context context, Intent intent) {
     50             String action = intent.getAction();
     51             if (DBG) log("sIntentReceiver.onReceive: action=" + action);
     52             if (action.equals(sActionDcTesterDeactivateAll)
     53                     || action.equals(mPhone.getActionDetached())) {
     54                 log("Send DEACTIVATE to all Dcc's");
     55                 if (mDcc != null) {
     56                     for (DataConnection dc : mDcc.mDcListAll) {
     57                         dc.tearDownNow();
     58                     }
     59                 } else {
     60                     if (DBG) log("onReceive: mDcc is null, ignoring");
     61                 }
     62             } else {
     63                 if (DBG) log("onReceive: unknown action=" + action);
     64             }
     65         }
     66     };
     67 
     68     DcTesterDeactivateAll(PhoneBase phone, DcController dcc, Handler handler) {
     69         mPhone = phone;
     70         mDcc = dcc;
     71 
     72         if (Build.IS_DEBUGGABLE) {
     73             IntentFilter filter = new IntentFilter();
     74 
     75             filter.addAction(sActionDcTesterDeactivateAll);
     76             log("register for intent action=" + sActionDcTesterDeactivateAll);
     77 
     78             filter.addAction(mPhone.getActionDetached());
     79             log("register for intent action=" + mPhone.getActionDetached());
     80 
     81             phone.getContext().registerReceiver(sIntentReceiver, filter, null, handler);
     82         }
     83     }
     84 
     85     void dispose() {
     86         mPhone.getContext().unregisterReceiver(sIntentReceiver);
     87     }
     88 
     89     private static void log(String s) {
     90         Rlog.d(LOG_TAG, s);
     91     }
     92 }
     93