(Ljava/lang/String;)V
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities;
+
+ .line 1043
+ const/16 v1, 0x12
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1044
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result v2
+
+ .line 1043
+ xor-int/2addr v2, v5
+
+ invoke-virtual {v0, v1, v2}, Landroid/net/NetworkCapabilities;->setCapability(IZ)Landroid/net/NetworkCapabilities;
+
+ .line 1046
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1049
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v5
+
+ if-eqz v1, :cond_1c0
+
+ .line 1050
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1052
+ :cond_1c0
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v4
+
+ if-eqz v1, :cond_1ca
+
+ .line 1053
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1056
+ :cond_1ca
+ return-object v0
+
+ nop
+
+ :sswitch_data_1cc
+ .sparse-switch
+ 0x2a -> :sswitch_b7
+ 0xd18 -> :sswitch_ac
+ 0x17ff4 -> :sswitch_a2
+ 0x185fd -> :sswitch_98
+ 0x197cf -> :sswitch_8e
+ 0x1a6d3 -> :sswitch_84
+ 0x300cf6 -> :sswitch_7a
+ 0x360bde -> :sswitch_70
+ 0x5c13d641 -> :sswitch_66
+ 0x6118c591 -> :sswitch_5a
+ .end sparse-switch
+
+ :pswitch_data_1f6
+ .packed-switch 0x0
+ :pswitch_ee
+ :pswitch_ea
+ :pswitch_e6
+ :pswitch_d2
+ :pswitch_ce
+ :pswitch_c8
+ .end packed-switch
+
+ :pswitch_data_20e
+ .packed-switch 0x1
+ :pswitch_185
+ :pswitch_180
+ :pswitch_17b
+ :pswitch_17a
+ :pswitch_164
+ :pswitch_161
+ :pswitch_15e
+ :pswitch_15b
+ :pswitch_155
+ .end packed-switch
+.end method
diff --git a/autotests/html/test.smali.html b/autotests/html/test.smali.html
new file mode 100644
--- /dev/null
+++ b/autotests/html/test.smali.html
@@ -0,0 +1,1545 @@
+
+
+
+test.smali
+
+
+#
+# Copyright (C) 2006 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+.class public Lcom/android/internal/telephony/dataconnection/DataConnection;
+.super Lcom/android/internal/util/StateMachine;
+.source "DataConnection.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectingState;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+ }
+.end annotation
+
+
+# static fields
+.field static final BASE:I = 0x40000
+
+.field private static final CMD_TO_STRING_COUNT:B = 0x18
+
+.field private static final DBG:Z = true
+
+.field static final EVENT_BW_REFRESH_RESPONSE:S = 0x4000e
+
+.field static final EVENT_CONNECT:I = 0x40000
+
+.field static final EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED:I = 0x4000b
+
+.field static final EVENT_DATA_CONNECTION_VOICE_CALL_STARTED:I = 0x4000f
+
+.field static final EVENT_DEACTIVATE_DONE:I = 0x40003
+
+.field static final EVENT_DISCONNECT:F = 636.6886188221E12
+
+.field static final EVENT_DISCONNECT_ALL:D = 98.58E-23D
+
+.field static final EVENT_KEEPALIVE_STARTED:D = -Infinity
+
+.field static final EVENT_KEEPALIVE_START_REQUEST:F = NaN
+
+.field static final EVENT_KEEPALIVE_STATUS:I = 0x40012
+
+.field static final EVENT_LOST_CONNECTION:J = 0x40009EEF
+
+.field static final EVENT_RIL_CONNECTED:I = 0x40005
+
+.field static final EVENT_SETUP_DATA_CONNECTION_DONE:I = 0x40001
+
+.field static final EVENT_TEAR_DOWN_NOW:C = '\n'
+
+.field private static final NETWORK_TYPE:Ljava/lang/String; = "MOBILE"
+
+.field private static final NULL_IP:Ljava/lang/String; = "0.0.0.0"
+
+.field private static final TCP_BUFFER_SIZES_1XRTT:Ljava/lang/String; = "16384,32768,131072,4096,16384,102400"
+
+.field private static final TCP_BUFFER_SIZES_EDGE:Ljava/lang/String; = "4093,26280,70800,4096,16384,70800"
+
+.field private static final TCP_BUFFER_SIZES_UMTS:Ljava/lang/String; = "58254,349525,1048576,58254,349525,1048576"
+
+.field private static final VDBG:Z = false
+
+.field private static mInstanceNumber:Ljava/util/concurrent/atomic/AtomicInteger;
+
+.field private static sCmdToString:[Ljava/lang/String;
+
+
+# instance fields
+.field private mAc:Lcom/android/internal/util/AsyncChannel;
+
+.field private mActivatingState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcActivatingState;
+
+.field private mActiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcActiveState;
+
+.field public mApnContexts:Ljava/util/HashMap;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/HashMap<",
+ "Lcom/android/internal/telephony/dataconnection/ApnContext;",
+ "Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field private mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+.field public mCid:I
+
+.field private mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+.field private mCreateTime:J
+
+.field private mDataRegState:I
+
+.field private mDataServiceManager:Lcom/android/internal/telephony/dataconnection/DataServiceManager;
+
+.field private mDcController:Lcom/android/internal/telephony/dataconnection/DcController;
+
+.field private mDisconnectingErrorCreatingConnection:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;
+
+.field private mId:I
+
+.field private mInactiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+
+.field private mLastFailCause:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+.field private mLastFailTime:J
+
+.field private mLinkProperties:Landroid/net/LinkProperties;
+
+.field private mNetCapsLocalLog:Landroid/util/LocalLog;
+
+.field private mNetworkAgent:Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;
+
+.field private mNetworkInfo:Landroid/net/NetworkInfo;
+
+.field protected mPcscfAddr:[Ljava/lang/String;
+
+.field private mPhone:Lcom/android/internal/telephony/Phone;
+
+.field mReconnectIntent:Landroid/app/PendingIntent;
+
+.field private mRestrictedNetworkOverride:Z
+
+.field private mRilRat:I
+
+.field private mSubscriptionOverride:I
+
+.field mTag:I
+
+.field private mUserData:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor <clinit>()V
+ .registers 3
+
+ .line 109
+ new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
+
+ const/4 v1, 0x0
+
+ invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
+
+ sput-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mInstanceNumber:Ljava/util/concurrent/atomic/AtomicInteger;
+
+ .line 227
+ const/16 v0, 0x18
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ sput-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ .line 229
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ const-string v2, "EVENT_CONNECT"
+
+ aput-object v2, v0, v1
+
+ .line 255
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ const-string v1, "EVENT_LINK_CAPACITY_CHANGED"
+
+ const/16 v2, 0x17
+
+ aput-object v1, v0, v2
+
+ .line 256
+ return-void
+.end method
+
+.method private constructor <init>(Lcom/android/internal/telephony/Phone;Ljava/lang/String;ILcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;Lcom/android/internal/telephony/dataconnection/DcController;)V
+ .registers 10
+
+ .line 466
+ invoke-virtual {p7}, Lcom/android/internal/telephony/dataconnection/DcController;->getHandler()Landroid/os/Handler;
+
+ move-result-object v0
+
+ invoke-direct {p0, p2, v0}, Lcom/android/internal/util/StateMachine;-><init>(Ljava/lang/String;Landroid/os/Handler;)V
+
+ .line 113
+ const/4 p2, 0x0
+
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDct:Lcom/android/internal/telephony/dataconnection/DcTracker;
+
+ .line 180
+ new-instance v0, Landroid/net/LinkProperties;
+
+ invoke-direct {v0}, Landroid/net/LinkProperties;-><init>()V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ .line 187
+ const v0, 0x7fffffff
+
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ .line 188
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDataRegState:I
+
+ .line 191
+ new-instance v0, Landroid/util/LocalLog;
+
+ const/16 v1, 0x32
+
+ invoke-direct {v0, v1}, Landroid/util/LocalLog;-><init>(I)V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetCapsLocalLog:Landroid/util/LocalLog;
+
+ .line 195
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 196
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mReconnectIntent:Landroid/app/PendingIntent;
+
+ .line 909
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 1440
+ new-instance v1, Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ invoke-direct {v1, p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;-><init>(Lcom/android/internal/telephony/dataconnection/DataConnection;Lcom/android/internal/telephony/dataconnection/DataConnection$1;)V
+
+ iput-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDefaultState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ .line 467
+ const/16 p2, 0x12c
+
+ invoke-virtual {p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setLogRecSize(I)V
+
+ .line 468
+ const/4 p2, 0x1
+
+ invoke-virtual {p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setLogOnlyTransitions(Z)V
+
+ .line 469
+ const-string v1, "DataConnection created"
+
+ invoke-virtual {p0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 471
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 476
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mId:I
+
+ .line 477
+ const/4 p1, -0x1
+
+ iput p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCid:I
+
+ .line 478
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object p1
+
+ .line 479
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I
+
+ move-result p3
+
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ .line 480
+ iget-object p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p3}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object p3
+
+ invoke-virtual {p3}, Landroid/telephony/ServiceState;->getDataRegState()I
+
+ move-result p3
+
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDataRegState:I
+
+ .line 481
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getDataNetworkType()I
+
+ move-result p3
+
+ .line 482
+ new-instance p4, Landroid/net/NetworkInfo;
+
+ const-string p5, "MOBILE"
+
+ .line 483
+ invoke-static {p3}, Landroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String;
+
+ move-result-object p6
+
+ invoke-direct {p4, v0, p3, p5, p6}, Landroid/net/NetworkInfo;-><init>(IILjava/lang/String;Ljava/lang/String;)V
+
+ iput-object p4, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ .line 484
+ iget-object p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result p1
+
+ invoke-virtual {p3, p1}, Landroid/net/NetworkInfo;->setRoaming(Z)V
+
+ .line 485
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ invoke-virtual {p1, p2}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V
+
+ .line 487
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDefaultState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->addState(Lcom/android/internal/util/State;)V
+
+ .line 493
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mInactiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setInitialState(Lcom/android/internal/util/State;)V
+
+ .line 495
+ new-instance p1, Ljava/util/HashMap;
+
+ invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
+
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 496
+ return-void
+.end method
+
+.method static synthetic access$000(Landroid/os/Message;)Ljava/lang/String;
+ .registers 1
+
+ .line 97
+ invoke-static {p0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->msgToString(Landroid/os/Message;)Ljava/lang/String;
+
+ move-result-object p0
+
+ return-object p0
+.end method
+
+.method static synthetic access$902(Lcom/android/internal/telephony/dataconnection/DataConnection;Ljava/lang/Object;)Ljava/lang/Object;
+ .registers 2
+
+ .line 97
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mUserData:Ljava/lang/Object;
+
+ return-object p1
+.end method
+
+.method private checkSetMtu(Lcom/android/internal/telephony/dataconnection/ApnSetting;Landroid/net/LinkProperties;)V
+ .registers 4
+
+ .local v0, getMtu:Landroid/net/LinkProperties;
+
+ .line 438
+ if-nez p2, :cond_3
+
+ return-void
+
+ .line 440
+ :cond_3
+ if-eqz p1, :cond_74
+
+ if-nez p2, :cond_8
+
+ goto :goto_74
+
+ .line 442
+ :cond_8
+ invoke-virtual {p2}, Landroid/net/LinkProperties;->getMtu()I
+
+ move-result v0
+
+ if-eqz v0, :cond_27
+
+ .restart local v0 # getMtu:Landroid/net/LinkProperties;
+
+ .line 443
+ new-instance p1, Ljava/lang/StringBuilder;
+
+ invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
+
+ .end local v0 # getMtu:Landroid/net/LinkProperties;
+
+ const-string v0, "MTU set by call response to: "
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Landroid/net/LinkProperties;->getMtu()I
+
+ invoke-static {v3, v4}, Ljava/lang/String;->format([Ljava/lang/String;[[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {p0, v3}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(I[[D[Ljava/lang/String;)V
+
+ invoke-static {v1}, Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult;
+
+ .line 444
+ return-void
+
+ .line 447
+ :cond_27
+ if-eqz p1, :cond_49
+
+ iget v0, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ if-eqz v0, :cond_49
+
+ .line 448
+ iget v0, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ invoke-virtual {p2, v0}, Landroid/net/LinkProperties;->setMtu(I)V
+
+ .line 449
+ new-instance p2, Ljava/lang/StringBuilder;
+
+ invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v0, "MTU set by APN to: "
+
+ invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 450
+ return-void
+
+ .line 453
+ :cond_49
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
+
+ move-result-object p1
+
+ const v0, 0x10e0066
+
+ invoke-virtual {p1, v0}, Landroid/content/res/Resources;->getInteger(I)I
+
+ move-result p1
+
+ .line 455
+ if-eqz p1, :cond_73
+
+ .line 456
+ invoke-virtual {p2, p1}, Landroid/net/LinkProperties;->setMtu(I)V
+
+ .line 457
+ new-instance p2, Ljava/lang/StringBuilder;
+
+ invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v0, "MTU set by config resource to: "
+
+ invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 459
+ :cond_73
+ return-void
+
+ .line 440
+ :cond_74
+ :goto_74
+ return-void
+.end method
+
+.method private clearSettings()V
+ .registers 3
+
+ .line 723
+ const-string v0, "clearSettings"
+
+ invoke-virtual {p0, v0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 725
+ const-wide/16 v0, -0x1
+
+ iput-wide v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCreateTime:J
+
+ .line 726
+ iput-wide v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLastFailTime:J
+
+ .line 727
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DcFailCause;->NONE:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLastFailCause:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+ .line 728
+ const/4 v0, -0x1
+
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCid:I
+
+ .line 730
+ const/4 v0, 0x5
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPcscfAddr:[Ljava/lang/String;
+
+ .line 732
+ new-instance v0, Landroid/net/LinkProperties;
+
+ invoke-direct {v0}, Landroid/net/LinkProperties;-><init>()V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ .line 733
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v0}, Ljava/util/HashMap;->clear()V
+
+ .line 734
+ const/4 v0, 0x0
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ .line 736
+ return-void
+.end method
+
+.method static cmdToString(I)Ljava/lang/String;
+ .registers 4
+
+ .param p0, cmd
+
+ .prologue
+
+ .line 260
+ const/high16 v0, 0x40000
+
+ sub-int/2addr p0, v0
+
+ .line 261
+ if-ltz p0, :cond_f
+
+ sget-object v1, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ array-length v1, v1
+
+ if-ge p0, v1, :cond_f
+
+ .line 262
+ sget-object v1, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ aget-object v1, v1, p0
+
+ goto :goto_15
+
+ .line 264
+ :cond_f
+ add-int v1, p0, v0
+
+ invoke-static {v1}, Lcom/android/internal/telephony/dataconnection/DcAsyncChannel;->cmdToString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 266
+ :goto_15
+ if-nez v1, :cond_2d
+
+ .line 267
+ new-instance v1, Ljava/lang/StringBuilder;
+
+ invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v2, "0x"
+
+ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ add-int/2addr p0, v0
+
+ invoke-static {p0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
+
+ move-result-object p0
+
+ invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ move-result-object v1
+
+ .line 269
+ :cond_2d
+ return-object v1
+.end method
+
+.method private dumpToLog()V
+ .registers 4
+
+ .line 2489
+ new-instance v0, Lcom/android/internal/telephony/dataconnection/DataConnection$1;
+
+ new-instance v1, Ljava/io/StringWriter;
+
+ const/4 v2, 0x0
+
+ invoke-direct {v1, v2}, Ljava/io/StringWriter;-><init>(I)V
+
+ invoke-direct {v0, p0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection$1;-><init>(Lcom/android/internal/telephony/dataconnection/DataConnection;Ljava/io/Writer;)V
+
+ const/4 v1, 0x0
+
+ invoke-virtual {p0, v1, v0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+
+ .line 2499
+ return-void
+.end method
+
+.method private getSuggestedRetryDelay(Landroid/telephony/data/DataCallResponse;)J
+ .registers 4
+
+ .line 2331
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result v0
+
+ if-gez v0, :cond_e
+
+ .line 2332
+ const-string p1, "No suggested retry delay."
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 2333
+ const-wide/16 v0, -0x2
+
+ return-wide v0
+
+ .line 2336
+ :cond_e
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result v0
+
+ const v1, 0x7fffffff
+
+ if-ne v0, v1, :cond_1f
+
+ .line 2337
+ const-string p1, "Modem suggested not retrying."
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 2338
+ const-wide/16 v0, -0x1
+
+ return-wide v0
+
+ .line 2343
+ :cond_1f
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result p1
+
+ int-to-long v0, p1
+
+ return-wide v0
+.end method
+
+.method private initConnection(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;)Z
+ .registers 6
+
+ .line 1168
+ iget-object v0, p1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mApnContext:Lcom/android/internal/telephony/dataconnection/ApnContext;
+
+ .line 1169
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ if-nez v1, :cond_c
+
+ .line 1174
+ :cond_c
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ if-eqz v1, :cond_5f
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ invoke-virtual {v0}, Lcom/android/internal/telephony/dataconnection/ApnContext;->getApnType()Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v1, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->canHandleType(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-nez v1, :cond_1d
+
+ goto :goto_5f
+
+ .line 1181
+ :cond_1d
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ const/4 v2, 0x1
+
+ add-int/2addr v1, v2
+
+ iput v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ .line 1182
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ .line 1183
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ iget v3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ iput v3, v1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mTag:I
+
+ .line 1187
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+
+ .line 1190
+ new-instance p1, Ljava/lang/StringBuilder;
+
+ invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v0, "initConnection: RefCount="
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 1191
+ invoke-virtual {v0}, Ljava/util/HashMap;->size()I
+
+ move-result v0
+
+ const-string v0, " mConnectionParams="
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ .line 1190
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 1195
+ return v2
+
+ .line 1176
+ :cond_5f
+ :goto_5f
+ new-instance v0, Ljava/lang/StringBuilder;
+
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v1, "initConnection: incompatible apnSetting in ConnectionParams cp="
+
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
+
+ const-string p1, " dc="
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 1179
+ const/4 p1, 0x0
+
+ return p1
+.end method
+
+.method private isDnsOk([Ljava/lang/String;)Z
+ .registers 6
+
+ .line 780
+ const-string v0, "0.0.0.0"
+
+ const/4 v1, 0x0
+
+ aget-object v2, p1, v1
+
+ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v0
+
+ const/4 v2, 0x1
+
+ if-eqz v0, :cond_65
+
+ const-string v0, "0.0.0.0"
+
+ aget-object p1, p1, v2
+
+ invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result p1
+
+ if-eqz p1, :cond_65
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 781
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->isDnsCheckDisabled()Z
+
+ move-result p1
+
+ if-nez p1, :cond_65
+
+ .line 787
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->types:[Ljava/lang/String;
+
+ aget-object p1, p1, v1
+
+ const-string v0, "mms"
+
+ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result p1
+
+ if-eqz p1, :cond_36
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mmsProxy:Ljava/lang/String;
+
+ .line 788
+ invoke-static {p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->isIpAddress(Ljava/lang/String;)Z
+
+ move-result p1
+
+ if-nez p1, :cond_65
+
+ .line 789
+ :cond_36
+ const-string p1, "isDnsOk: return false apn.types[0]=%s APN_TYPE_MMS=%s isIpAddress(%s)=%s"
+
+ const/4 v0, 0x4
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ iget-object v3, v3, Lcom/android/internal/telephony/dataconnection/ApnSetting;->types:[Ljava/lang/String;
+
+ aget-object v3, v3, v1
+
+ aput-object v3, v0, v1
+
+ const-string v3, "mms"
+
+ aput-object v3, v0, v2
+
+ const/4 v2, 0x2
+
+ .line 792
+ invoke-static {v3}, Lcom/android/internal/telephony/dataconnection/DataConnection;->isIpAddress(Ljava/lang/String;)Z
+
+ move-result v3
+
+ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
+
+ move-result-object v3
+
+ aput-object v3, v0, v2
+
+ .line 789
+ invoke-static {p1, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 793
+ return v1
+
+ .line 796
+ :cond_65
+ return v2
+.end method
+
+.method private setNetworkRestriction()V
+ .registers 5
+
+ .line 914
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 916
+ nop
+
+ .line 917
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v0}, Ljava/util/HashMap;->keySet()Ljava/util/Set;
+
+ move-result-object v0
+
+ invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
+
+ move-result-object v0
+
+ const/4 v1, 0x1
+
+ move v2, v1
+
+ :goto_10
+ invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
+
+ move-result v3
+
+ if-eqz v3, :cond_22
+
+ invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+
+ move-result-object v3
+
+ check-cast v3, Lcom/android/internal/telephony/dataconnection/ApnContext;
+
+ .line 918
+ invoke-virtual {v3, v1}, Lcom/android/internal/telephony/dataconnection/ApnContext;->hasNoRestrictedRequests(Z)Z
+
+ move-result v3
+
+ and-int/2addr v2, v3
+
+ .line 919
+ goto :goto_10
+
+ .line 920
+ :cond_22
+ if-eqz v2, :cond_25
+
+ .line 921
+ return-void
+
+ .line 926
+ :cond_25
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v0, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->isMetered(Lcom/android/internal/telephony/Phone;)Z
+
+ move-result v0
+
+ if-nez v0, :cond_30
+
+ .line 927
+ return-void
+
+ .line 931
+ :cond_30
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDct:LDataconnection/DcTracker;
+
+ invoke-virtual {v0}, Lcom/android/internal/telephony/dataconnection/DcTracker;->isDataEnabled()Z
+
+ move-result v0
+
+ xor-int/2addr v0, v1
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 932
+ return-void
+.end method
+
+.method static slog(LData/String;)V
+ .registers 2
+
+ .line 2396
+ const-string v0, "DC"
+
+ invoke-static {v0, p0}, Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 2397
+ return-void
+.end method
+
+.method private updateTcpBufferSizes(I)V
+ .registers 10
+
+ .line 812
+ nop
+
+ .line 813
+ const/16 v0, 0x13
+
+ if-ne p1, v0, :cond_7
+
+ .line 816
+ const/16 p1, 0xe
+
+ .line 818
+ :cond_7
+ invoke-static {p1}, Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ sget-object v2, Ljava/util/Locale;->ROOT:Ljava/util/Locale;
+
+ invoke-virtual {v1, v2}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 821
+ const/4 v2, 0x7
+
+ if-eq p1, v2, :cond_1c
+
+ const/16 v2, 0x8
+
+ if-eq p1, v2, :cond_1c
+
+ const/16 v2, 0xc
+
+ if-ne p1, v2, :cond_1e
+
+ .line 824
+ :cond_1c
+ const-string v1, "evdo"
+
+ .line 828
+ :cond_1e
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
+
+ move-result-object v2
+
+ const v3, 0x1070039
+
+ invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
+
+ move-result-object v2
+
+ .line 830
+ const/4 v3, 0x0
+
+ move v4, v3
+
+ :goto_31
+ array-length v5, v2
+
+ if-ge v4, v5, :cond_4f
+
+ .line 831
+ aget-object v5, v2, v4
+
+ const-string v6, ":"
+
+ invoke-virtual {v5, v6}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
+
+ move-result-object v5
+
+ .line 832
+ aget-object v6, v5, v3
+
+ invoke-virtual {v1, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v6
+
+ if-eqz v6, :cond_4c
+
+ array-length v6, v5
+
+ const/4 v7, 0x2
+
+ if-ne v6, v7, :cond_4c
+
+ .line 833
+ const/4 v1, 0x1
+
+ aget-object v1, v5, v1
+
+ .line 834
+ goto :goto_50
+
+ .line 830
+ :cond_4c
+ add-int/lit8 v4, v4, 0x1
+
+ goto :goto_31
+
+ .line 838
+ :cond_4f
+ const/4 v1, 0x0
+
+ :goto_50
+ if-nez v1, :cond_79
+
+ .line 842
+ if-eq p1, v0, :cond_76
+
+ packed-switch p1, :pswitch_data_80
+
+ packed-switch p1, :pswitch_data_8a
+
+ goto :goto_79
+
+ .line 875
+ :pswitch_5b
+ const-string v1, "122334,734003,2202010,32040,192239,576717"
+
+ .line 845
+ goto :goto_79
+
+ .line 872
+ :cond_76
+ :pswitch_76
+ const-string v1, "524288,1048576,2097152,262144,524288,1048576"
+
+ .line 873
+ nop
+
+ .line 882
+ :cond_79
+ :goto_79
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ invoke-virtual {p1, v1}, Landroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V
+
+ .line 883
+ return-void
+
+ nop
+
+ :pswitch_data_80
+ .packed-switch 0x1
+ :pswitch_73
+ :pswitch_70
+ :pswitch_6d
+ .end packed-switch
+
+ :pswitch_data_8a
+ .packed-switch 0x6
+ :pswitch_6a
+ :pswitch_67
+ :pswitch_67
+ :pswitch_64
+ :pswitch_61
+ :pswitch_61
+ :pswitch_67
+ :pswitch_5e
+ :pswitch_76
+ :pswitch_5b
+ .end packed-switch
+.end method
+
+
+# virtual methods
+.method dispose()V
+ .registers 2
+
+ .line 292
+ const-string v0, "dispose: call quiteNow()"
+
+ invoke-virtual {p0, v0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 293
+ invoke-virtual {p0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->quitNow()V
+
+ .line 294
+ return-void
+.end method
+
+.method public dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+ .registers 7
+
+ .line 2510
+ new-instance v0, Lcom/android/internal/util/IndentingPrintWriter;
+
+ const-string v1, " "
+
+ invoke-direct {v0, p2, v1}, Lcom/android/internal/util/IndentingPrintWriter;-><init>(Ljava/io/Writer;Ljava/lang/String;)V
+
+ .line 2543
+ invoke-virtual {v0}, Lcom/android/internal/util/IndentingPrintWriter;->flush()V
+
+ .line 2544
+ return-void
+.end method
+
+.method public getDataConnectionId()I
+ .registers 2
+
+ .line 710
+ iget v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mId:I
+
+ return v0
+.end method
+
+.method getNetworkCapabilities()Landroid/net/NetworkCapabilities;
+ .registers 16
+
+ .line 935
+ new-instance v0, Landroid/net/NetworkCapabilities;
+
+ invoke-direct {v0}, Landroid/net/NetworkCapabilities;-><init>()V
+
+ .line 936
+ const/4 v1, 0x0
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addTransportType(I)Landroid/net/NetworkCapabilities;
+
+ .line 938
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ const/16 v3, 0xb
+
+ const/4 v4, 0x2
+
+ const/4 v5, 0x1
+
+ :sswitch_b7
+ const-string v10, "*"
+
+ invoke-virtual {v8, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v8
+
+ if-eqz v8, :cond_c1
+
+ move v8, v1
+
+ goto :goto_c2
+
+ :cond_c1
+ :goto_c1
+ move v8, v9
+
+ :goto_c2
+ const/16 v9, 0xc
+
+ packed-switch v8, :pswitch_data_1f6
+
+ goto :goto_107
+
+ .line 964
+ goto :goto_107
+
+ .line 959
+ :pswitch_ea
+ invoke-virtual {v0, v9}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 960
+ goto :goto_107
+
+ .line 948
+ :pswitch_ee
+ invoke-virtual {v0, v9}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 956
+ nop
+
+ .line 939
+ :goto_107
+ add-int/lit8 v7, v7, 0x1
+
+ goto/16 :goto_17
+
+ .line 1001
+ :cond_10b
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ if-eqz v1, :cond_119
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ iget-boolean v1, v1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mUnmeteredUseOnly:Z
+
+ if-eqz v1, :cond_119
+
+ iget-boolean v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ if-eqz v1, :cond_123
+
+ :cond_119
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1003
+ invoke-virtual {v1, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->isMetered(Lcom/android/internal/telephony/Phone;)Z
+
+ move-result v1
+
+ if-nez v1, :cond_127
+
+ .line 1004
+ :cond_123
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ goto :goto_12a
+
+ .line 1006
+ :cond_127
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1009
+ :goto_12a
+ invoke-virtual {v0}, Landroid/net/NetworkCapabilities;->maybeMarkCapabilitiesRestricted()V
+
+ .line 1011
+ :cond_12d
+ iget-boolean v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ if-eqz v1, :cond_139
+
+ .line 1012
+ const/16 v1, 0xd
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1014
+ invoke-virtual {v0, v4}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1017
+ :cond_139
+ nop
+
+ .line 1018
+ nop
+
+ .line 1019
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ const/16 v2, 0x13
+
+ const/16 v6, 0x733
+
+ const/16 v7, 0x99
+
+ const v8, 0x19000
+
+ const v9, 0xc800
+
+ const/16 v10, 0x3800
+
+ const/16 v11, 0xe
+
+ if-eq v1, v2, :cond_18a
+
+ packed-switch v1, :pswitch_data_20e
+
+ .line 1038
+ :goto_152
+ move v6, v11
+
+ move v8, v6
+
+ goto :goto_18b
+
+ .line 1035
+ :pswitch_155
+ const/16 v6, 0x2c00
+
+ const v8, 0xa800
+
+ goto :goto_18b
+
+ .line 1032
+ :pswitch_15b
+ nop
+
+ .line 1038
+ :goto_15c
+ move v6, v9
+
+ goto :goto_18b
+
+ .line 1033
+ :cond_18a
+ goto :goto_15c
+
+ .line 1038
+ :goto_18b
+ invoke-virtual {v0, v6}, Landroid/net/NetworkCapabilities;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+
+ .line 1039
+ invoke-virtual {v0, v8}, Landroid/net/NetworkCapabilities;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+
+ .line 1041
+ new-instance v1, Landroid/net/StringNetworkSpecifier;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getSubId()I
+
+ move-result v2
+
+ invoke-static {v2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-direct {v1, v2}, Landroid/net/StringNetworkSpecifier;-><init>(Ljava/lang/String;)V
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities;
+
+ .line 1043
+ const/16 v1, 0x12
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1044
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result v2
+
+ .line 1043
+ xor-int/2addr v2, v5
+
+ invoke-virtual {v0, v1, v2}, Landroid/net/NetworkCapabilities;->setCapability(IZ)Landroid/net/NetworkCapabilities;
+
+ .line 1046
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1049
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v5
+
+ if-eqz v1, :cond_1c0
+
+ .line 1050
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1052
+ :cond_1c0
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v4
+
+ if-eqz v1, :cond_1ca
+
+ .line 1053
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1056
+ :cond_1ca
+ return-object v0
+
+ nop
+
+ :sswitch_data_1cc
+ .sparse-switch
+ 0x2a -> :sswitch_b7
+ 0xd18 -> :sswitch_ac
+ 0x17ff4 -> :sswitch_a2
+ 0x185fd -> :sswitch_98
+ 0x197cf -> :sswitch_8e
+ 0x1a6d3 -> :sswitch_84
+ 0x300cf6 -> :sswitch_7a
+ 0x360bde -> :sswitch_70
+ 0x5c13d641 -> :sswitch_66
+ 0x6118c591 -> :sswitch_5a
+ .end sparse-switch
+
+ :pswitch_data_1f6
+ .packed-switch 0x0
+ :pswitch_ee
+ :pswitch_ea
+ :pswitch_e6
+ :pswitch_d2
+ :pswitch_ce
+ :pswitch_c8
+ .end packed-switch
+
+ :pswitch_data_20e
+ .packed-switch 0x1
+ :pswitch_185
+ :pswitch_180
+ :pswitch_17b
+ :pswitch_17a
+ :pswitch_164
+ :pswitch_161
+ :pswitch_15e
+ :pswitch_15b
+ :pswitch_155
+ .end packed-switch
+.end method
+
diff --git a/autotests/input/test.smali b/autotests/input/test.smali
new file mode 100644
--- /dev/null
+++ b/autotests/input/test.smali
@@ -0,0 +1,1538 @@
+#
+# Copyright (C) 2006 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+.class public Lcom/android/internal/telephony/dataconnection/DataConnection;
+.super Lcom/android/internal/util/StateMachine;
+.source "DataConnection.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectingState;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+ }
+.end annotation
+
+
+# static fields
+.field static final BASE:I = 0x40000
+
+.field private static final CMD_TO_STRING_COUNT:B = 0x18
+
+.field private static final DBG:Z = true
+
+.field static final EVENT_BW_REFRESH_RESPONSE:S = 0x4000e
+
+.field static final EVENT_CONNECT:I = 0x40000
+
+.field static final EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED:I = 0x4000b
+
+.field static final EVENT_DATA_CONNECTION_VOICE_CALL_STARTED:I = 0x4000f
+
+.field static final EVENT_DEACTIVATE_DONE:I = 0x40003
+
+.field static final EVENT_DISCONNECT:F = 636.6886188221E12
+
+.field static final EVENT_DISCONNECT_ALL:D = 98.58E-23D
+
+.field static final EVENT_KEEPALIVE_STARTED:D = -Infinity
+
+.field static final EVENT_KEEPALIVE_START_REQUEST:F = NaN
+
+.field static final EVENT_KEEPALIVE_STATUS:I = 0x40012
+
+.field static final EVENT_LOST_CONNECTION:J = 0x40009EEF
+
+.field static final EVENT_RIL_CONNECTED:I = 0x40005
+
+.field static final EVENT_SETUP_DATA_CONNECTION_DONE:I = 0x40001
+
+.field static final EVENT_TEAR_DOWN_NOW:C = '\n'
+
+.field private static final NETWORK_TYPE:Ljava/lang/String; = "MOBILE"
+
+.field private static final NULL_IP:Ljava/lang/String; = "0.0.0.0"
+
+.field private static final TCP_BUFFER_SIZES_1XRTT:Ljava/lang/String; = "16384,32768,131072,4096,16384,102400"
+
+.field private static final TCP_BUFFER_SIZES_EDGE:Ljava/lang/String; = "4093,26280,70800,4096,16384,70800"
+
+.field private static final TCP_BUFFER_SIZES_UMTS:Ljava/lang/String; = "58254,349525,1048576,58254,349525,1048576"
+
+.field private static final VDBG:Z = false
+
+.field private static mInstanceNumber:Ljava/util/concurrent/atomic/AtomicInteger;
+
+.field private static sCmdToString:[Ljava/lang/String;
+
+
+# instance fields
+.field private mAc:Lcom/android/internal/util/AsyncChannel;
+
+.field private mActivatingState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcActivatingState;
+
+.field private mActiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcActiveState;
+
+.field public mApnContexts:Ljava/util/HashMap;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/HashMap<",
+ "Lcom/android/internal/telephony/dataconnection/ApnContext;",
+ "Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field private mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+.field public mCid:I
+
+.field private mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+.field private mCreateTime:J
+
+.field private mDataRegState:I
+
+.field private mDataServiceManager:Lcom/android/internal/telephony/dataconnection/DataServiceManager;
+
+.field private mDcController:Lcom/android/internal/telephony/dataconnection/DcController;
+
+.field private mDisconnectingErrorCreatingConnection:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;
+
+.field private mId:I
+
+.field private mInactiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+
+.field private mLastFailCause:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+.field private mLastFailTime:J
+
+.field private mLinkProperties:Landroid/net/LinkProperties;
+
+.field private mNetCapsLocalLog:Landroid/util/LocalLog;
+
+.field private mNetworkAgent:Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;
+
+.field private mNetworkInfo:Landroid/net/NetworkInfo;
+
+.field protected mPcscfAddr:[Ljava/lang/String;
+
+.field private mPhone:Lcom/android/internal/telephony/Phone;
+
+.field mReconnectIntent:Landroid/app/PendingIntent;
+
+.field private mRestrictedNetworkOverride:Z
+
+.field private mRilRat:I
+
+.field private mSubscriptionOverride:I
+
+.field mTag:I
+
+.field private mUserData:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor ()V
+ .registers 3
+
+ .line 109
+ new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
+
+ const/4 v1, 0x0
+
+ invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;->(I)V
+
+ sput-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mInstanceNumber:Ljava/util/concurrent/atomic/AtomicInteger;
+
+ .line 227
+ const/16 v0, 0x18
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ sput-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ .line 229
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ const-string v2, "EVENT_CONNECT"
+
+ aput-object v2, v0, v1
+
+ .line 255
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ const-string v1, "EVENT_LINK_CAPACITY_CHANGED"
+
+ const/16 v2, 0x17
+
+ aput-object v1, v0, v2
+
+ .line 256
+ return-void
+.end method
+
+.method private constructor (Lcom/android/internal/telephony/Phone;Ljava/lang/String;ILcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;Lcom/android/internal/telephony/dataconnection/DcController;)V
+ .registers 10
+
+ .line 466
+ invoke-virtual {p7}, Lcom/android/internal/telephony/dataconnection/DcController;->getHandler()Landroid/os/Handler;
+
+ move-result-object v0
+
+ invoke-direct {p0, p2, v0}, Lcom/android/internal/util/StateMachine;->(Ljava/lang/String;Landroid/os/Handler;)V
+
+ .line 113
+ const/4 p2, 0x0
+
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDct:Lcom/android/internal/telephony/dataconnection/DcTracker;
+
+ .line 180
+ new-instance v0, Landroid/net/LinkProperties;
+
+ invoke-direct {v0}, Landroid/net/LinkProperties;->()V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ .line 187
+ const v0, 0x7fffffff
+
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ .line 188
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDataRegState:I
+
+ .line 191
+ new-instance v0, Landroid/util/LocalLog;
+
+ const/16 v1, 0x32
+
+ invoke-direct {v0, v1}, Landroid/util/LocalLog;->(I)V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetCapsLocalLog:Landroid/util/LocalLog;
+
+ .line 195
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 196
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mReconnectIntent:Landroid/app/PendingIntent;
+
+ .line 909
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 1440
+ new-instance v1, Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ invoke-direct {v1, p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;->(Lcom/android/internal/telephony/dataconnection/DataConnection;Lcom/android/internal/telephony/dataconnection/DataConnection$1;)V
+
+ iput-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDefaultState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ .line 467
+ const/16 p2, 0x12c
+
+ invoke-virtual {p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setLogRecSize(I)V
+
+ .line 468
+ const/4 p2, 0x1
+
+ invoke-virtual {p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setLogOnlyTransitions(Z)V
+
+ .line 469
+ const-string v1, "DataConnection created"
+
+ invoke-virtual {p0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 471
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 476
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mId:I
+
+ .line 477
+ const/4 p1, -0x1
+
+ iput p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCid:I
+
+ .line 478
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object p1
+
+ .line 479
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I
+
+ move-result p3
+
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ .line 480
+ iget-object p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p3}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object p3
+
+ invoke-virtual {p3}, Landroid/telephony/ServiceState;->getDataRegState()I
+
+ move-result p3
+
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDataRegState:I
+
+ .line 481
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getDataNetworkType()I
+
+ move-result p3
+
+ .line 482
+ new-instance p4, Landroid/net/NetworkInfo;
+
+ const-string p5, "MOBILE"
+
+ .line 483
+ invoke-static {p3}, Landroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String;
+
+ move-result-object p6
+
+ invoke-direct {p4, v0, p3, p5, p6}, Landroid/net/NetworkInfo;->(IILjava/lang/String;Ljava/lang/String;)V
+
+ iput-object p4, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ .line 484
+ iget-object p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result p1
+
+ invoke-virtual {p3, p1}, Landroid/net/NetworkInfo;->setRoaming(Z)V
+
+ .line 485
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ invoke-virtual {p1, p2}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V
+
+ .line 487
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDefaultState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->addState(Lcom/android/internal/util/State;)V
+
+ .line 493
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mInactiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setInitialState(Lcom/android/internal/util/State;)V
+
+ .line 495
+ new-instance p1, Ljava/util/HashMap;
+
+ invoke-direct {p1}, Ljava/util/HashMap;->()V
+
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 496
+ return-void
+.end method
+
+.method static synthetic access$000(Landroid/os/Message;)Ljava/lang/String;
+ .registers 1
+
+ .line 97
+ invoke-static {p0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->msgToString(Landroid/os/Message;)Ljava/lang/String;
+
+ move-result-object p0
+
+ return-object p0
+.end method
+
+.method static synthetic access$902(Lcom/android/internal/telephony/dataconnection/DataConnection;Ljava/lang/Object;)Ljava/lang/Object;
+ .registers 2
+
+ .line 97
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mUserData:Ljava/lang/Object;
+
+ return-object p1
+.end method
+
+.method private checkSetMtu(Lcom/android/internal/telephony/dataconnection/ApnSetting;Landroid/net/LinkProperties;)V
+ .registers 4
+
+ .local v0, getMtu:Landroid/net/LinkProperties;
+
+ .line 438
+ if-nez p2, :cond_3
+
+ return-void
+
+ .line 440
+ :cond_3
+ if-eqz p1, :cond_74
+
+ if-nez p2, :cond_8
+
+ goto :goto_74
+
+ .line 442
+ :cond_8
+ invoke-virtual {p2}, Landroid/net/LinkProperties;->getMtu()I
+
+ move-result v0
+
+ if-eqz v0, :cond_27
+
+ .restart local v0 # getMtu:Landroid/net/LinkProperties;
+
+ .line 443
+ new-instance p1, Ljava/lang/StringBuilder;
+
+ invoke-direct {p1}, Ljava/lang/StringBuilder;->()V
+
+ .end local v0 # getMtu:Landroid/net/LinkProperties;
+
+ const-string v0, "MTU set by call response to: "
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Landroid/net/LinkProperties;->getMtu()I
+
+ invoke-static {v3, v4}, Ljava/lang/String;->format([Ljava/lang/String;[[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {p0, v3}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(I[[D[Ljava/lang/String;)V
+
+ invoke-static {v1}, Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult;
+
+ .line 444
+ return-void
+
+ .line 447
+ :cond_27
+ if-eqz p1, :cond_49
+
+ iget v0, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ if-eqz v0, :cond_49
+
+ .line 448
+ iget v0, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ invoke-virtual {p2, v0}, Landroid/net/LinkProperties;->setMtu(I)V
+
+ .line 449
+ new-instance p2, Ljava/lang/StringBuilder;
+
+ invoke-direct {p2}, Ljava/lang/StringBuilder;->()V
+
+ const-string v0, "MTU set by APN to: "
+
+ invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 450
+ return-void
+
+ .line 453
+ :cond_49
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
+
+ move-result-object p1
+
+ const v0, 0x10e0066
+
+ invoke-virtual {p1, v0}, Landroid/content/res/Resources;->getInteger(I)I
+
+ move-result p1
+
+ .line 455
+ if-eqz p1, :cond_73
+
+ .line 456
+ invoke-virtual {p2, p1}, Landroid/net/LinkProperties;->setMtu(I)V
+
+ .line 457
+ new-instance p2, Ljava/lang/StringBuilder;
+
+ invoke-direct {p2}, Ljava/lang/StringBuilder;->()V
+
+ const-string v0, "MTU set by config resource to: "
+
+ invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 459
+ :cond_73
+ return-void
+
+ .line 440
+ :cond_74
+ :goto_74
+ return-void
+.end method
+
+.method private clearSettings()V
+ .registers 3
+
+ .line 723
+ const-string v0, "clearSettings"
+
+ invoke-virtual {p0, v0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 725
+ const-wide/16 v0, -0x1
+
+ iput-wide v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCreateTime:J
+
+ .line 726
+ iput-wide v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLastFailTime:J
+
+ .line 727
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DcFailCause;->NONE:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLastFailCause:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+ .line 728
+ const/4 v0, -0x1
+
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCid:I
+
+ .line 730
+ const/4 v0, 0x5
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPcscfAddr:[Ljava/lang/String;
+
+ .line 732
+ new-instance v0, Landroid/net/LinkProperties;
+
+ invoke-direct {v0}, Landroid/net/LinkProperties;->()V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ .line 733
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v0}, Ljava/util/HashMap;->clear()V
+
+ .line 734
+ const/4 v0, 0x0
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ .line 736
+ return-void
+.end method
+
+.method static cmdToString(I)Ljava/lang/String;
+ .registers 4
+
+ .param p0, cmd
+
+ .prologue
+
+ .line 260
+ const/high16 v0, 0x40000
+
+ sub-int/2addr p0, v0
+
+ .line 261
+ if-ltz p0, :cond_f
+
+ sget-object v1, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ array-length v1, v1
+
+ if-ge p0, v1, :cond_f
+
+ .line 262
+ sget-object v1, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ aget-object v1, v1, p0
+
+ goto :goto_15
+
+ .line 264
+ :cond_f
+ add-int v1, p0, v0
+
+ invoke-static {v1}, Lcom/android/internal/telephony/dataconnection/DcAsyncChannel;->cmdToString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 266
+ :goto_15
+ if-nez v1, :cond_2d
+
+ .line 267
+ new-instance v1, Ljava/lang/StringBuilder;
+
+ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V
+
+ const-string v2, "0x"
+
+ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ add-int/2addr p0, v0
+
+ invoke-static {p0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
+
+ move-result-object p0
+
+ invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ move-result-object v1
+
+ .line 269
+ :cond_2d
+ return-object v1
+.end method
+
+.method private dumpToLog()V
+ .registers 4
+
+ .line 2489
+ new-instance v0, Lcom/android/internal/telephony/dataconnection/DataConnection$1;
+
+ new-instance v1, Ljava/io/StringWriter;
+
+ const/4 v2, 0x0
+
+ invoke-direct {v1, v2}, Ljava/io/StringWriter;->(I)V
+
+ invoke-direct {v0, p0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection$1;->(Lcom/android/internal/telephony/dataconnection/DataConnection;Ljava/io/Writer;)V
+
+ const/4 v1, 0x0
+
+ invoke-virtual {p0, v1, v0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+
+ .line 2499
+ return-void
+.end method
+
+.method private getSuggestedRetryDelay(Landroid/telephony/data/DataCallResponse;)J
+ .registers 4
+
+ .line 2331
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result v0
+
+ if-gez v0, :cond_e
+
+ .line 2332
+ const-string p1, "No suggested retry delay."
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 2333
+ const-wide/16 v0, -0x2
+
+ return-wide v0
+
+ .line 2336
+ :cond_e
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result v0
+
+ const v1, 0x7fffffff
+
+ if-ne v0, v1, :cond_1f
+
+ .line 2337
+ const-string p1, "Modem suggested not retrying."
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 2338
+ const-wide/16 v0, -0x1
+
+ return-wide v0
+
+ .line 2343
+ :cond_1f
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result p1
+
+ int-to-long v0, p1
+
+ return-wide v0
+.end method
+
+.method private initConnection(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;)Z
+ .registers 6
+
+ .line 1168
+ iget-object v0, p1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mApnContext:Lcom/android/internal/telephony/dataconnection/ApnContext;
+
+ .line 1169
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ if-nez v1, :cond_c
+
+ .line 1174
+ :cond_c
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ if-eqz v1, :cond_5f
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ invoke-virtual {v0}, Lcom/android/internal/telephony/dataconnection/ApnContext;->getApnType()Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v1, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->canHandleType(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-nez v1, :cond_1d
+
+ goto :goto_5f
+
+ .line 1181
+ :cond_1d
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ const/4 v2, 0x1
+
+ add-int/2addr v1, v2
+
+ iput v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ .line 1182
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ .line 1183
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ iget v3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ iput v3, v1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mTag:I
+
+ .line 1187
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+
+ .line 1190
+ new-instance p1, Ljava/lang/StringBuilder;
+
+ invoke-direct {p1}, Ljava/lang/StringBuilder;->()V
+
+ const-string v0, "initConnection: RefCount="
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 1191
+ invoke-virtual {v0}, Ljava/util/HashMap;->size()I
+
+ move-result v0
+
+ const-string v0, " mConnectionParams="
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ .line 1190
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 1195
+ return v2
+
+ .line 1176
+ :cond_5f
+ :goto_5f
+ new-instance v0, Ljava/lang/StringBuilder;
+
+ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V
+
+ const-string v1, "initConnection: incompatible apnSetting in ConnectionParams cp="
+
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
+
+ const-string p1, " dc="
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 1179
+ const/4 p1, 0x0
+
+ return p1
+.end method
+
+.method private isDnsOk([Ljava/lang/String;)Z
+ .registers 6
+
+ .line 780
+ const-string v0, "0.0.0.0"
+
+ const/4 v1, 0x0
+
+ aget-object v2, p1, v1
+
+ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v0
+
+ const/4 v2, 0x1
+
+ if-eqz v0, :cond_65
+
+ const-string v0, "0.0.0.0"
+
+ aget-object p1, p1, v2
+
+ invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result p1
+
+ if-eqz p1, :cond_65
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 781
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->isDnsCheckDisabled()Z
+
+ move-result p1
+
+ if-nez p1, :cond_65
+
+ .line 787
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->types:[Ljava/lang/String;
+
+ aget-object p1, p1, v1
+
+ const-string v0, "mms"
+
+ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result p1
+
+ if-eqz p1, :cond_36
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mmsProxy:Ljava/lang/String;
+
+ .line 788
+ invoke-static {p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->isIpAddress(Ljava/lang/String;)Z
+
+ move-result p1
+
+ if-nez p1, :cond_65
+
+ .line 789
+ :cond_36
+ const-string p1, "isDnsOk: return false apn.types[0]=%s APN_TYPE_MMS=%s isIpAddress(%s)=%s"
+
+ const/4 v0, 0x4
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ iget-object v3, v3, Lcom/android/internal/telephony/dataconnection/ApnSetting;->types:[Ljava/lang/String;
+
+ aget-object v3, v3, v1
+
+ aput-object v3, v0, v1
+
+ const-string v3, "mms"
+
+ aput-object v3, v0, v2
+
+ const/4 v2, 0x2
+
+ .line 792
+ invoke-static {v3}, Lcom/android/internal/telephony/dataconnection/DataConnection;->isIpAddress(Ljava/lang/String;)Z
+
+ move-result v3
+
+ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
+
+ move-result-object v3
+
+ aput-object v3, v0, v2
+
+ .line 789
+ invoke-static {p1, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 793
+ return v1
+
+ .line 796
+ :cond_65
+ return v2
+.end method
+
+.method private setNetworkRestriction()V
+ .registers 5
+
+ .line 914
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 916
+ nop
+
+ .line 917
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v0}, Ljava/util/HashMap;->keySet()Ljava/util/Set;
+
+ move-result-object v0
+
+ invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
+
+ move-result-object v0
+
+ const/4 v1, 0x1
+
+ move v2, v1
+
+ :goto_10
+ invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
+
+ move-result v3
+
+ if-eqz v3, :cond_22
+
+ invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+
+ move-result-object v3
+
+ check-cast v3, Lcom/android/internal/telephony/dataconnection/ApnContext;
+
+ .line 918
+ invoke-virtual {v3, v1}, Lcom/android/internal/telephony/dataconnection/ApnContext;->hasNoRestrictedRequests(Z)Z
+
+ move-result v3
+
+ and-int/2addr v2, v3
+
+ .line 919
+ goto :goto_10
+
+ .line 920
+ :cond_22
+ if-eqz v2, :cond_25
+
+ .line 921
+ return-void
+
+ .line 926
+ :cond_25
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v0, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->isMetered(Lcom/android/internal/telephony/Phone;)Z
+
+ move-result v0
+
+ if-nez v0, :cond_30
+
+ .line 927
+ return-void
+
+ .line 931
+ :cond_30
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDct:LDataconnection/DcTracker;
+
+ invoke-virtual {v0}, Lcom/android/internal/telephony/dataconnection/DcTracker;->isDataEnabled()Z
+
+ move-result v0
+
+ xor-int/2addr v0, v1
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 932
+ return-void
+.end method
+
+.method static slog(LData/String;)V
+ .registers 2
+
+ .line 2396
+ const-string v0, "DC"
+
+ invoke-static {v0, p0}, Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 2397
+ return-void
+.end method
+
+.method private updateTcpBufferSizes(I)V
+ .registers 10
+
+ .line 812
+ nop
+
+ .line 813
+ const/16 v0, 0x13
+
+ if-ne p1, v0, :cond_7
+
+ .line 816
+ const/16 p1, 0xe
+
+ .line 818
+ :cond_7
+ invoke-static {p1}, Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ sget-object v2, Ljava/util/Locale;->ROOT:Ljava/util/Locale;
+
+ invoke-virtual {v1, v2}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 821
+ const/4 v2, 0x7
+
+ if-eq p1, v2, :cond_1c
+
+ const/16 v2, 0x8
+
+ if-eq p1, v2, :cond_1c
+
+ const/16 v2, 0xc
+
+ if-ne p1, v2, :cond_1e
+
+ .line 824
+ :cond_1c
+ const-string v1, "evdo"
+
+ .line 828
+ :cond_1e
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
+
+ move-result-object v2
+
+ const v3, 0x1070039
+
+ invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
+
+ move-result-object v2
+
+ .line 830
+ const/4 v3, 0x0
+
+ move v4, v3
+
+ :goto_31
+ array-length v5, v2
+
+ if-ge v4, v5, :cond_4f
+
+ .line 831
+ aget-object v5, v2, v4
+
+ const-string v6, ":"
+
+ invoke-virtual {v5, v6}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
+
+ move-result-object v5
+
+ .line 832
+ aget-object v6, v5, v3
+
+ invoke-virtual {v1, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v6
+
+ if-eqz v6, :cond_4c
+
+ array-length v6, v5
+
+ const/4 v7, 0x2
+
+ if-ne v6, v7, :cond_4c
+
+ .line 833
+ const/4 v1, 0x1
+
+ aget-object v1, v5, v1
+
+ .line 834
+ goto :goto_50
+
+ .line 830
+ :cond_4c
+ add-int/lit8 v4, v4, 0x1
+
+ goto :goto_31
+
+ .line 838
+ :cond_4f
+ const/4 v1, 0x0
+
+ :goto_50
+ if-nez v1, :cond_79
+
+ .line 842
+ if-eq p1, v0, :cond_76
+
+ packed-switch p1, :pswitch_data_80
+
+ packed-switch p1, :pswitch_data_8a
+
+ goto :goto_79
+
+ .line 875
+ :pswitch_5b
+ const-string v1, "122334,734003,2202010,32040,192239,576717"
+
+ .line 845
+ goto :goto_79
+
+ .line 872
+ :cond_76
+ :pswitch_76
+ const-string v1, "524288,1048576,2097152,262144,524288,1048576"
+
+ .line 873
+ nop
+
+ .line 882
+ :cond_79
+ :goto_79
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ invoke-virtual {p1, v1}, Landroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V
+
+ .line 883
+ return-void
+
+ nop
+
+ :pswitch_data_80
+ .packed-switch 0x1
+ :pswitch_73
+ :pswitch_70
+ :pswitch_6d
+ .end packed-switch
+
+ :pswitch_data_8a
+ .packed-switch 0x6
+ :pswitch_6a
+ :pswitch_67
+ :pswitch_67
+ :pswitch_64
+ :pswitch_61
+ :pswitch_61
+ :pswitch_67
+ :pswitch_5e
+ :pswitch_76
+ :pswitch_5b
+ .end packed-switch
+.end method
+
+
+# virtual methods
+.method dispose()V
+ .registers 2
+
+ .line 292
+ const-string v0, "dispose: call quiteNow()"
+
+ invoke-virtual {p0, v0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 293
+ invoke-virtual {p0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->quitNow()V
+
+ .line 294
+ return-void
+.end method
+
+.method public dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+ .registers 7
+
+ .line 2510
+ new-instance v0, Lcom/android/internal/util/IndentingPrintWriter;
+
+ const-string v1, " "
+
+ invoke-direct {v0, p2, v1}, Lcom/android/internal/util/IndentingPrintWriter;->(Ljava/io/Writer;Ljava/lang/String;)V
+
+ .line 2543
+ invoke-virtual {v0}, Lcom/android/internal/util/IndentingPrintWriter;->flush()V
+
+ .line 2544
+ return-void
+.end method
+
+.method public getDataConnectionId()I
+ .registers 2
+
+ .line 710
+ iget v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mId:I
+
+ return v0
+.end method
+
+.method getNetworkCapabilities()Landroid/net/NetworkCapabilities;
+ .registers 16
+
+ .line 935
+ new-instance v0, Landroid/net/NetworkCapabilities;
+
+ invoke-direct {v0}, Landroid/net/NetworkCapabilities;->()V
+
+ .line 936
+ const/4 v1, 0x0
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addTransportType(I)Landroid/net/NetworkCapabilities;
+
+ .line 938
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ const/16 v3, 0xb
+
+ const/4 v4, 0x2
+
+ const/4 v5, 0x1
+
+ :sswitch_b7
+ const-string v10, "*"
+
+ invoke-virtual {v8, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v8
+
+ if-eqz v8, :cond_c1
+
+ move v8, v1
+
+ goto :goto_c2
+
+ :cond_c1
+ :goto_c1
+ move v8, v9
+
+ :goto_c2
+ const/16 v9, 0xc
+
+ packed-switch v8, :pswitch_data_1f6
+
+ goto :goto_107
+
+ .line 964
+ goto :goto_107
+
+ .line 959
+ :pswitch_ea
+ invoke-virtual {v0, v9}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 960
+ goto :goto_107
+
+ .line 948
+ :pswitch_ee
+ invoke-virtual {v0, v9}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 956
+ nop
+
+ .line 939
+ :goto_107
+ add-int/lit8 v7, v7, 0x1
+
+ goto/16 :goto_17
+
+ .line 1001
+ :cond_10b
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ if-eqz v1, :cond_119
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ iget-boolean v1, v1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mUnmeteredUseOnly:Z
+
+ if-eqz v1, :cond_119
+
+ iget-boolean v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ if-eqz v1, :cond_123
+
+ :cond_119
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1003
+ invoke-virtual {v1, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->isMetered(Lcom/android/internal/telephony/Phone;)Z
+
+ move-result v1
+
+ if-nez v1, :cond_127
+
+ .line 1004
+ :cond_123
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ goto :goto_12a
+
+ .line 1006
+ :cond_127
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1009
+ :goto_12a
+ invoke-virtual {v0}, Landroid/net/NetworkCapabilities;->maybeMarkCapabilitiesRestricted()V
+
+ .line 1011
+ :cond_12d
+ iget-boolean v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ if-eqz v1, :cond_139
+
+ .line 1012
+ const/16 v1, 0xd
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1014
+ invoke-virtual {v0, v4}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1017
+ :cond_139
+ nop
+
+ .line 1018
+ nop
+
+ .line 1019
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ const/16 v2, 0x13
+
+ const/16 v6, 0x733
+
+ const/16 v7, 0x99
+
+ const v8, 0x19000
+
+ const v9, 0xc800
+
+ const/16 v10, 0x3800
+
+ const/16 v11, 0xe
+
+ if-eq v1, v2, :cond_18a
+
+ packed-switch v1, :pswitch_data_20e
+
+ .line 1038
+ :goto_152
+ move v6, v11
+
+ move v8, v6
+
+ goto :goto_18b
+
+ .line 1035
+ :pswitch_155
+ const/16 v6, 0x2c00
+
+ const v8, 0xa800
+
+ goto :goto_18b
+
+ .line 1032
+ :pswitch_15b
+ nop
+
+ .line 1038
+ :goto_15c
+ move v6, v9
+
+ goto :goto_18b
+
+ .line 1033
+ :cond_18a
+ goto :goto_15c
+
+ .line 1038
+ :goto_18b
+ invoke-virtual {v0, v6}, Landroid/net/NetworkCapabilities;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+
+ .line 1039
+ invoke-virtual {v0, v8}, Landroid/net/NetworkCapabilities;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+
+ .line 1041
+ new-instance v1, Landroid/net/StringNetworkSpecifier;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getSubId()I
+
+ move-result v2
+
+ invoke-static {v2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-direct {v1, v2}, Landroid/net/StringNetworkSpecifier;->(Ljava/lang/String;)V
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities;
+
+ .line 1043
+ const/16 v1, 0x12
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1044
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result v2
+
+ .line 1043
+ xor-int/2addr v2, v5
+
+ invoke-virtual {v0, v1, v2}, Landroid/net/NetworkCapabilities;->setCapability(IZ)Landroid/net/NetworkCapabilities;
+
+ .line 1046
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1049
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v5
+
+ if-eqz v1, :cond_1c0
+
+ .line 1050
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1052
+ :cond_1c0
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v4
+
+ if-eqz v1, :cond_1ca
+
+ .line 1053
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1056
+ :cond_1ca
+ return-object v0
+
+ nop
+
+ :sswitch_data_1cc
+ .sparse-switch
+ 0x2a -> :sswitch_b7
+ 0xd18 -> :sswitch_ac
+ 0x17ff4 -> :sswitch_a2
+ 0x185fd -> :sswitch_98
+ 0x197cf -> :sswitch_8e
+ 0x1a6d3 -> :sswitch_84
+ 0x300cf6 -> :sswitch_7a
+ 0x360bde -> :sswitch_70
+ 0x5c13d641 -> :sswitch_66
+ 0x6118c591 -> :sswitch_5a
+ .end sparse-switch
+
+ :pswitch_data_1f6
+ .packed-switch 0x0
+ :pswitch_ee
+ :pswitch_ea
+ :pswitch_e6
+ :pswitch_d2
+ :pswitch_ce
+ :pswitch_c8
+ .end packed-switch
+
+ :pswitch_data_20e
+ .packed-switch 0x1
+ :pswitch_185
+ :pswitch_180
+ :pswitch_17b
+ :pswitch_17a
+ :pswitch_164
+ :pswitch_161
+ :pswitch_15e
+ :pswitch_15b
+ :pswitch_155
+ .end packed-switch
+.end method
diff --git a/autotests/reference/test.smali.ref b/autotests/reference/test.smali.ref
new file mode 100644
--- /dev/null
+++ b/autotests/reference/test.smali.ref
@@ -0,0 +1,1538 @@
+#
+# Copyright (C) 2006 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+.class public Lcom/android/internal/telephony/dataconnection/DataConnection;
+.super Lcom/android/internal/util/StateMachine;
+.source "DataConnection.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectingState;,
+ Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+ }
+.end annotation
+
+
+# static fields
+.field static final BASE:I = 0x40000
+
+.field private static final CMD_TO_STRING_COUNT:B = 0x18
+
+.field private static final DBG:Z = true
+
+.field static final EVENT_BW_REFRESH_RESPONSE:S = 0x4000e
+
+.field static final EVENT_CONNECT:I = 0x40000
+
+.field static final EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED:I = 0x4000b
+
+.field static final EVENT_DATA_CONNECTION_VOICE_CALL_STARTED:I = 0x4000f
+
+.field static final EVENT_DEACTIVATE_DONE:I = 0x40003
+
+.field static final EVENT_DISCONNECT:F = 636.6886188221E12
+
+.field static final EVENT_DISCONNECT_ALL:D = 98.58E-23D
+
+.field static final EVENT_KEEPALIVE_STARTED:D = -Infinity
+
+.field static final EVENT_KEEPALIVE_START_REQUEST:F = NaN
+
+.field static final EVENT_KEEPALIVE_STATUS:I = 0x40012
+
+.field static final EVENT_LOST_CONNECTION:J = 0x40009EEF
+
+.field static final EVENT_RIL_CONNECTED:I = 0x40005
+
+.field static final EVENT_SETUP_DATA_CONNECTION_DONE:I = 0x40001
+
+.field static final EVENT_TEAR_DOWN_NOW:C = '\n'
+
+.field private static final NETWORK_TYPE:Ljava/lang/String; = "MOBILE"
+
+.field private static final NULL_IP:Ljava/lang/String; = "0.0.0.0"
+
+.field private static final TCP_BUFFER_SIZES_1XRTT:Ljava/lang/String; = "16384,32768,131072,4096,16384,102400"
+
+.field private static final TCP_BUFFER_SIZES_EDGE:Ljava/lang/String; = "4093,26280,70800,4096,16384,70800"
+
+.field private static final TCP_BUFFER_SIZES_UMTS:Ljava/lang/String; = "58254,349525,1048576,58254,349525,1048576"
+
+.field private static final VDBG:Z = false
+
+.field private static mInstanceNumber:Ljava/util/concurrent/atomic/AtomicInteger;
+
+.field private static sCmdToString:[Ljava/lang/String;
+
+
+# instance fields
+.field private mAc:Lcom/android/internal/util/AsyncChannel;
+
+.field private mActivatingState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcActivatingState;
+
+.field private mActiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcActiveState;
+
+.field public mApnContexts:Ljava/util/HashMap;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/HashMap<",
+ "Lcom/android/internal/telephony/dataconnection/ApnContext;",
+ "Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field private mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+.field public mCid:I
+
+.field private mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+.field private mCreateTime:J
+
+.field private mDataRegState:I
+
+.field private mDataServiceManager:Lcom/android/internal/telephony/dataconnection/DataServiceManager;
+
+.field private mDcController:Lcom/android/internal/telephony/dataconnection/DcController;
+
+.field private mDisconnectingErrorCreatingConnection:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;
+
+.field private mId:I
+
+.field private mInactiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+
+.field private mLastFailCause:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+.field private mLastFailTime:J
+
+.field private mLinkProperties:Landroid/net/LinkProperties;
+
+.field private mNetCapsLocalLog:Landroid/util/LocalLog;
+
+.field private mNetworkAgent:Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;
+
+.field private mNetworkInfo:Landroid/net/NetworkInfo;
+
+.field protected mPcscfAddr:[Ljava/lang/String;
+
+.field private mPhone:Lcom/android/internal/telephony/Phone;
+
+.field mReconnectIntent:Landroid/app/PendingIntent;
+
+.field private mRestrictedNetworkOverride:Z
+
+.field private mRilRat:I
+
+.field private mSubscriptionOverride:I
+
+.field mTag:I
+
+.field private mUserData:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor <clinit>()V
+ .registers 3
+
+ .line 109
+ new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
+
+ const/4 v1, 0x0
+
+ invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
+
+ sput-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mInstanceNumber:Ljava/util/concurrent/atomic/AtomicInteger;
+
+ .line 227
+ const/16 v0, 0x18
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ sput-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ .line 229
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ const-string v2, "EVENT_CONNECT"
+
+ aput-object v2, v0, v1
+
+ .line 255
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ const-string v1, "EVENT_LINK_CAPACITY_CHANGED"
+
+ const/16 v2, 0x17
+
+ aput-object v1, v0, v2
+
+ .line 256
+ return-void
+.end method
+
+.method private constructor <init>(Lcom/android/internal/telephony/Phone;Ljava/lang/String;ILcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;Lcom/android/internal/telephony/dataconnection/DcController;)V
+ .registers 10
+
+ .line 466
+ invoke-virtual {p7}, Lcom/android/internal/telephony/dataconnection/DcController;->getHandler()Landroid/os/Handler;
+
+ move-result-object v0
+
+ invoke-direct {p0, p2, v0}, Lcom/android/internal/util/StateMachine;-><init>(Ljava/lang/String;Landroid/os/Handler;)V
+
+ .line 113
+ const/4 p2, 0x0
+
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDct:Lcom/android/internal/telephony/dataconnection/DcTracker;
+
+ .line 180
+ new-instance v0, Landroid/net/LinkProperties;
+
+ invoke-direct {v0}, Landroid/net/LinkProperties;-><init>()V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ .line 187
+ const v0, 0x7fffffff
+
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ .line 188
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDataRegState:I
+
+ .line 191
+ new-instance v0, Landroid/util/LocalLog;
+
+ const/16 v1, 0x32
+
+ invoke-direct {v0, v1}, Landroid/util/LocalLog;-><init>(I)V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetCapsLocalLog:Landroid/util/LocalLog;
+
+ .line 195
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 196
+ iput-object p2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mReconnectIntent:Landroid/app/PendingIntent;
+
+ .line 909
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 1440
+ new-instance v1, Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ invoke-direct {v1, p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;-><init>(Lcom/android/internal/telephony/dataconnection/DataConnection;Lcom/android/internal/telephony/dataconnection/DataConnection$1;)V
+
+ iput-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDefaultState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ .line 467
+ const/16 p2, 0x12c
+
+ invoke-virtual {p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setLogRecSize(I)V
+
+ .line 468
+ const/4 p2, 0x1
+
+ invoke-virtual {p0, p2}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setLogOnlyTransitions(Z)V
+
+ .line 469
+ const-string v1, "DataConnection created"
+
+ invoke-virtual {p0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 471
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 476
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mId:I
+
+ .line 477
+ const/4 p1, -0x1
+
+ iput p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCid:I
+
+ .line 478
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object p1
+
+ .line 479
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I
+
+ move-result p3
+
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ .line 480
+ iget-object p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p3}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object p3
+
+ invoke-virtual {p3}, Landroid/telephony/ServiceState;->getDataRegState()I
+
+ move-result p3
+
+ iput p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDataRegState:I
+
+ .line 481
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getDataNetworkType()I
+
+ move-result p3
+
+ .line 482
+ new-instance p4, Landroid/net/NetworkInfo;
+
+ const-string p5, "MOBILE"
+
+ .line 483
+ invoke-static {p3}, Landroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String;
+
+ move-result-object p6
+
+ invoke-direct {p4, v0, p3, p5, p6}, Landroid/net/NetworkInfo;-><init>(IILjava/lang/String;Ljava/lang/String;)V
+
+ iput-object p4, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ .line 484
+ iget-object p3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result p1
+
+ invoke-virtual {p3, p1}, Landroid/net/NetworkInfo;->setRoaming(Z)V
+
+ .line 485
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mNetworkInfo:Landroid/net/NetworkInfo;
+
+ invoke-virtual {p1, p2}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V
+
+ .line 487
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDefaultState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->addState(Lcom/android/internal/util/State;)V
+
+ .line 493
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mInactiveState:Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->setInitialState(Lcom/android/internal/util/State;)V
+
+ .line 495
+ new-instance p1, Ljava/util/HashMap;
+
+ invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
+
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 496
+ return-void
+.end method
+
+.method static synthetic access$000(Landroid/os/Message;)Ljava/lang/String;
+ .registers 1
+
+ .line 97
+ invoke-static {p0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->msgToString(Landroid/os/Message;)Ljava/lang/String;
+
+ move-result-object p0
+
+ return-object p0
+.end method
+
+.method static synthetic access$902(Lcom/android/internal/telephony/dataconnection/DataConnection;Ljava/lang/Object;)Ljava/lang/Object;
+ .registers 2
+
+ .line 97
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mUserData:Ljava/lang/Object;
+
+ return-object p1
+.end method
+
+.method private checkSetMtu(Lcom/android/internal/telephony/dataconnection/ApnSetting;Landroid/net/LinkProperties;)V
+ .registers 4
+
+ .local v0, getMtu:Landroid/net/LinkProperties;
+
+ .line 438
+ if-nez p2,
+
+ return-void
+
+ .line 440
+
+ if-eqz p1,
+
+ if-nez p2,
+
+ goto
+
+ .line 442
+
+ invoke-virtual {p2}, Landroid/net/LinkProperties;->getMtu()I
+
+ move-result v0
+
+ if-eqz v0,
+
+ .restart local v0 # getMtu:Landroid/net/LinkProperties;
+
+ .line 443
+ new-instance p1, Ljava/lang/StringBuilder;
+
+ invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
+
+ .end local v0 # getMtu:Landroid/net/LinkProperties;
+
+ const-string v0, "MTU set by call response to: "
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Landroid/net/LinkProperties;->getMtu()I
+
+ invoke-static {v3, v4}, Ljava/lang/String;->format([Ljava/lang/String;[[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {p0, v3}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(I[[D[Ljava/lang/String;)V
+
+ invoke-static {v1}, Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult;
+
+ .line 444
+ return-void
+
+ .line 447
+
+ if-eqz p1,
+
+ iget v0, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ if-eqz v0,
+
+ .line 448
+ iget v0, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ invoke-virtual {p2, v0}, Landroid/net/LinkProperties;->setMtu(I)V
+
+ .line 449
+ new-instance p2, Ljava/lang/StringBuilder;
+
+ invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v0, "MTU set by APN to: "
+
+ invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mtu:I
+
+ invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 450
+ return-void
+
+ .line 453
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
+
+ move-result-object p1
+
+ invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
+
+ move-result-object p1
+
+ const v0, 0x10e0066
+
+ invoke-virtual {p1, v0}, Landroid/content/res/Resources;->getInteger(I)I
+
+ move-result p1
+
+ .line 455
+ if-eqz p1,
+
+ .line 456
+ invoke-virtual {p2, p1}, Landroid/net/LinkProperties;->setMtu(I)V
+
+ .line 457
+ new-instance p2, Ljava/lang/StringBuilder;
+
+ invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v0, "MTU set by config resource to: "
+
+ invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 459
+
+ return-void
+
+ .line 440
+
+
+ return-void
+.end method
+
+.method private clearSettings()V
+ .registers 3
+
+ .line 723
+ const-string v0, "clearSettings"
+
+ invoke-virtual {p0, v0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 725
+ const-wide/16 v0, -0x1
+
+ iput-wide v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCreateTime:J
+
+ .line 726
+ iput-wide v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLastFailTime:J
+
+ .line 727
+ sget-object v0, Lcom/android/internal/telephony/dataconnection/DcFailCause;->NONE:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLastFailCause:Lcom/android/internal/telephony/dataconnection/DcFailCause;
+
+ .line 728
+ const/4 v0, -0x1
+
+ iput v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mCid:I
+
+ .line 730
+ const/4 v0, 0x5
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPcscfAddr:[Ljava/lang/String;
+
+ .line 732
+ new-instance v0, Landroid/net/LinkProperties;
+
+ invoke-direct {v0}, Landroid/net/LinkProperties;-><init>()V
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ .line 733
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v0}, Ljava/util/HashMap;->clear()V
+
+ .line 734
+ const/4 v0, 0x0
+
+ iput-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ .line 736
+ return-void
+.end method
+
+.method static cmdToString(I)Ljava/lang/String;
+ .registers 4
+
+ .param p0, cmd
+
+ .prologue
+
+ .line 260
+ const/high16 v0, 0x40000
+
+ sub-int/2addr p0, v0
+
+ .line 261
+ if-ltz p0,
+
+ sget-object v1, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ array-length v1, v1
+
+ if-ge p0, v1,
+
+ .line 262
+ sget-object v1, Lcom/android/internal/telephony/dataconnection/DataConnection;->sCmdToString:[Ljava/lang/String;
+
+ aget-object v1, v1, p0
+
+ goto
+
+ .line 264
+
+ add-int v1, p0, v0
+
+ invoke-static {v1}, Lcom/android/internal/telephony/dataconnection/DcAsyncChannel;->cmdToString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 266
+
+ if-nez v1,
+
+ .line 267
+ new-instance v1, Ljava/lang/StringBuilder;
+
+ invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v2, "0x"
+
+ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ add-int/2addr p0, v0
+
+ invoke-static {p0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
+
+ move-result-object p0
+
+ invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ move-result-object v1
+
+ .line 269
+
+ return-object v1
+.end method
+
+.method private dumpToLog()V
+ .registers 4
+
+ .line 2489
+ new-instance v0, Lcom/android/internal/telephony/dataconnection/DataConnection$1;
+
+ new-instance v1, Ljava/io/StringWriter;
+
+ const/4 v2, 0x0
+
+ invoke-direct {v1, v2}, Ljava/io/StringWriter;-><init>(I)V
+
+ invoke-direct {v0, p0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection$1;-><init>(Lcom/android/internal/telephony/dataconnection/DataConnection;Ljava/io/Writer;)V
+
+ const/4 v1, 0x0
+
+ invoke-virtual {p0, v1, v0, v1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+
+ .line 2499
+ return-void
+.end method
+
+.method private getSuggestedRetryDelay(Landroid/telephony/data/DataCallResponse;)J
+ .registers 4
+
+ .line 2331
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result v0
+
+ if-gez v0,
+
+ .line 2332
+ const-string p1, "No suggested retry delay."
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 2333
+ const-wide/16 v0, -0x2
+
+ return-wide v0
+
+ .line 2336
+
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result v0
+
+ const v1, 0x7fffffff
+
+ if-ne v0, v1,
+
+ .line 2337
+ const-string p1, "Modem suggested not retrying."
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 2338
+ const-wide/16 v0, -0x1
+
+ return-wide v0
+
+ .line 2343
+
+ invoke-virtual {p1}, Landroid/telephony/data/DataCallResponse;->getSuggestedRetryTime()I
+
+ move-result p1
+
+ int-to-long v0, p1
+
+ return-wide v0
+.end method
+
+.method private initConnection(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;)Z
+ .registers 6
+
+ .line 1168
+ iget-object v0, p1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mApnContext:Lcom/android/internal/telephony/dataconnection/ApnContext;
+
+ .line 1169
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ if-nez v1,
+
+ .line 1174
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ if-eqz v1,
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ invoke-virtual {v0}, Lcom/android/internal/telephony/dataconnection/ApnContext;->getApnType()Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v1, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->canHandleType(Ljava/lang/String;)Z
+
+ move-result v1
+
+ if-nez v1,
+
+ goto
+
+ .line 1181
+
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ const/4 v2, 0x1
+
+ add-int/2addr v1, v2
+
+ iput v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ .line 1182
+ iput-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ .line 1183
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ iget v3, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mTag:I
+
+ iput v3, v1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mTag:I
+
+ .line 1187
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+
+ .line 1190
+ new-instance p1, Ljava/lang/StringBuilder;
+
+ invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v0, "initConnection: RefCount="
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ .line 1191
+ invoke-virtual {v0}, Ljava/util/HashMap;->size()I
+
+ move-result v0
+
+ const-string v0, " mConnectionParams="
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object p1
+
+ .line 1190
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 1195
+ return v2
+
+ .line 1176
+
+
+ new-instance v0, Ljava/lang/StringBuilder;
+
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
+
+ const-string v1, "initConnection: incompatible apnSetting in ConnectionParams cp="
+
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
+
+ const-string p1, " dc="
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 1179
+ const/4 p1, 0x0
+
+ return p1
+.end method
+
+.method private isDnsOk([Ljava/lang/String;)Z
+ .registers 6
+
+ .line 780
+ const-string v0, "0.0.0.0"
+
+ const/4 v1, 0x0
+
+ aget-object v2, p1, v1
+
+ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v0
+
+ const/4 v2, 0x1
+
+ if-eqz v0,
+
+ const-string v0, "0.0.0.0"
+
+ aget-object p1, p1, v2
+
+ invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result p1
+
+ if-eqz p1,
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 781
+ invoke-virtual {p1}, Lcom/android/internal/telephony/Phone;->isDnsCheckDisabled()Z
+
+ move-result p1
+
+ if-nez p1,
+
+ .line 787
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->types:[Ljava/lang/String;
+
+ aget-object p1, p1, v1
+
+ const-string v0, "mms"
+
+ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result p1
+
+ if-eqz p1,
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object p1, p1, Lcom/android/internal/telephony/dataconnection/ApnSetting;->mmsProxy:Ljava/lang/String;
+
+ .line 788
+ invoke-static {p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->isIpAddress(Ljava/lang/String;)Z
+
+ move-result p1
+
+ if-nez p1,
+
+ .line 789
+
+ const-string p1, "isDnsOk: return false apn.types[0]=%s APN_TYPE_MMS=%s isIpAddress(%s)=%s"
+
+ const/4 v0, 0x4
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ iget-object v3, v3, Lcom/android/internal/telephony/dataconnection/ApnSetting;->types:[Ljava/lang/String;
+
+ aget-object v3, v3, v1
+
+ aput-object v3, v0, v1
+
+ const-string v3, "mms"
+
+ aput-object v3, v0, v2
+
+ const/4 v2, 0x2
+
+ .line 792
+ invoke-static {v3}, Lcom/android/internal/telephony/dataconnection/DataConnection;->isIpAddress(Ljava/lang/String;)Z
+
+ move-result v3
+
+ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
+
+ move-result-object v3
+
+ aput-object v3, v0, v2
+
+ .line 789
+ invoke-static {p1, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object p1
+
+ invoke-virtual {p0, p1}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 793
+ return v1
+
+ .line 796
+
+ return v2
+.end method
+
+.method private setNetworkRestriction()V
+ .registers 5
+
+ .line 914
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 916
+ nop
+
+ .line 917
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnContexts:Ljava/util/HashMap;
+
+ invoke-virtual {v0}, Ljava/util/HashMap;->keySet()Ljava/util/Set;
+
+ move-result-object v0
+
+ invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
+
+ move-result-object v0
+
+ const/4 v1, 0x1
+
+ move v2, v1
+
+
+ invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
+
+ move-result v3
+
+ if-eqz v3,
+
+ invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+
+ move-result-object v3
+
+ check-cast v3, Lcom/android/internal/telephony/dataconnection/ApnContext;
+
+ .line 918
+ invoke-virtual {v3, v1}, Lcom/android/internal/telephony/dataconnection/ApnContext;->hasNoRestrictedRequests(Z)Z
+
+ move-result v3
+
+ and-int/2addr v2, v3
+
+ .line 919
+ goto
+
+ .line 920
+
+ if-eqz v2,
+
+ .line 921
+ return-void
+
+ .line 926
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v0, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->isMetered(Lcom/android/internal/telephony/Phone;)Z
+
+ move-result v0
+
+ if-nez v0,
+
+ .line 927
+ return-void
+
+ .line 931
+
+ iget-object v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mDct:LDataconnection/DcTracker;
+
+ invoke-virtual {v0}, Lcom/android/internal/telephony/dataconnection/DcTracker;->isDataEnabled()Z
+
+ move-result v0
+
+ xor-int/2addr v0, v1
+
+ iput-boolean v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ .line 932
+ return-void
+.end method
+
+.method static slog(LData/String;)V
+ .registers 2
+
+ .line 2396
+ const-string v0, "DC"
+
+ invoke-static {v0, p0}, Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 2397
+ return-void
+.end method
+
+.method private updateTcpBufferSizes(I)V
+ .registers 10
+
+ .line 812
+ nop
+
+ .line 813
+ const/16 v0, 0x13
+
+ if-ne p1, v0,
+
+ .line 816
+ const/16 p1, 0xe
+
+ .line 818
+
+ invoke-static {p1}, Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ sget-object v2, Ljava/util/Locale;->ROOT:Ljava/util/Locale;
+
+ invoke-virtual {v1, v2}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 821
+ const/4 v2, 0x7
+
+ if-eq p1, v2,
+
+ const/16 v2, 0x8
+
+ if-eq p1, v2,
+
+ const/16 v2, 0xc
+
+ if-ne p1, v2,
+
+ .line 824
+
+ const-string v1, "evdo"
+
+ .line 828
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
+
+ move-result-object v2
+
+ const v3, 0x1070039
+
+ invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
+
+ move-result-object v2
+
+ .line 830
+ const/4 v3, 0x0
+
+ move v4, v3
+
+
+ array-length v5, v2
+
+ if-ge v4, v5,
+
+ .line 831
+ aget-object v5, v2, v4
+
+ const-string v6, ":"
+
+ invoke-virtual {v5, v6}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
+
+ move-result-object v5
+
+ .line 832
+ aget-object v6, v5, v3
+
+ invoke-virtual {v1, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v6
+
+ if-eqz v6,
+
+ array-length v6, v5
+
+ const/4 v7, 0x2
+
+ if-ne v6, v7,
+
+ .line 833
+ const/4 v1, 0x1
+
+ aget-object v1, v5, v1
+
+ .line 834
+ goto
+
+ .line 830
+
+ add-int/lit8 v4, v4, 0x1
+
+ goto
+
+ .line 838
+
+ const/4 v1, 0x0
+
+
+ if-nez v1,
+
+ .line 842
+ if-eq p1, v0,
+
+ packed-switch p1,
+
+ packed-switch p1,
+
+ goto
+
+ .line 875
+
+ const-string v1, "122334,734003,2202010,32040,192239,576717"
+
+ .line 845
+ goto
+
+ .line 872
+
+
+ const-string v1, "524288,1048576,2097152,262144,524288,1048576"
+
+ .line 873
+ nop
+
+ .line 882
+
+
+ iget-object p1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mLinkProperties:Landroid/net/LinkProperties;
+
+ invoke-virtual {p1, v1}, Landroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V
+
+ .line 883
+ return-void
+
+ nop
+
+
+ .packed-switch 0x1
+
+
+
+ .end packed-switch
+
+
+ .packed-switch 0x6
+
+
+
+
+
+
+
+
+
+
+ .end packed-switch
+.end method
+
+
+# virtual methods
+.method dispose()V
+ .registers 2
+
+ .line 292
+ const-string v0, "dispose: call quiteNow()"
+
+ invoke-virtual {p0, v0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
+
+ .line 293
+ invoke-virtual {p0}, Lcom/android/internal/telephony/dataconnection/DataConnection;->quitNow()V
+
+ .line 294
+ return-void
+.end method
+
+.method public dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+ .registers 7
+
+ .line 2510
+ new-instance v0, Lcom/android/internal/util/IndentingPrintWriter;
+
+ const-string v1, " "
+
+ invoke-direct {v0, p2, v1}, Lcom/android/internal/util/IndentingPrintWriter;-><init>(Ljava/io/Writer;Ljava/lang/String;)V
+
+ .line 2543
+ invoke-virtual {v0}, Lcom/android/internal/util/IndentingPrintWriter;->flush()V
+
+ .line 2544
+ return-void
+.end method
+
+.method public getDataConnectionId()I
+ .registers 2
+
+ .line 710
+ iget v0, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mId:I
+
+ return v0
+.end method
+
+.method getNetworkCapabilities()Landroid/net/NetworkCapabilities;
+ .registers 16
+
+ .line 935
+ new-instance v0, Landroid/net/NetworkCapabilities;
+
+ invoke-direct {v0}, Landroid/net/NetworkCapabilities;-><init>()V
+
+ .line 936
+ const/4 v1, 0x0
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addTransportType(I)Landroid/net/NetworkCapabilities;
+
+ .line 938
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ const/16 v3, 0xb
+
+ const/4 v4, 0x2
+
+ const/4 v5, 0x1
+
+
+ const-string v10, "*"
+
+ invoke-virtual {v8, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v8
+
+ if-eqz v8,
+
+ move v8, v1
+
+ goto
+
+
+
+ move v8, v9
+
+
+ const/16 v9, 0xc
+
+ packed-switch v8,
+
+ goto
+
+ .line 964
+ goto
+
+ .line 959
+
+ invoke-virtual {v0, v9}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 960
+ goto
+
+ .line 948
+
+ invoke-virtual {v0, v9}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 956
+ nop
+
+ .line 939
+
+ add-int/lit8 v7, v7, 0x1
+
+ goto/16
+
+ .line 1001
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ if-eqz v1,
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mConnectionParams:Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;
+
+ iget-boolean v1, v1, Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->mUnmeteredUseOnly:Z
+
+ if-eqz v1,
+
+ iget-boolean v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ if-eqz v1,
+
+
+ iget-object v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mApnSetting:Lcom/android/internal/telephony/dataconnection/ApnSetting;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1003
+ invoke-virtual {v1, v2}, Lcom/android/internal/telephony/dataconnection/ApnSetting;->isMetered(Lcom/android/internal/telephony/Phone;)Z
+
+ move-result v1
+
+ if-nez v1,
+
+ .line 1004
+
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ goto
+
+ .line 1006
+
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1009
+
+ invoke-virtual {v0}, Landroid/net/NetworkCapabilities;->maybeMarkCapabilitiesRestricted()V
+
+ .line 1011
+
+ iget-boolean v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRestrictedNetworkOverride:Z
+
+ if-eqz v1,
+
+ .line 1012
+ const/16 v1, 0xd
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1014
+ invoke-virtual {v0, v4}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1017
+
+ nop
+
+ .line 1018
+ nop
+
+ .line 1019
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mRilRat:I
+
+ const/16 v2, 0x13
+
+ const/16 v6, 0x733
+
+ const/16 v7, 0x99
+
+ const v8, 0x19000
+
+ const v9, 0xc800
+
+ const/16 v10, 0x3800
+
+ const/16 v11, 0xe
+
+ if-eq v1, v2,
+
+ packed-switch v1,
+
+ .line 1038
+
+ move v6, v11
+
+ move v8, v6
+
+ goto
+
+ .line 1035
+
+ const/16 v6, 0x2c00
+
+ const v8, 0xa800
+
+ goto
+
+ .line 1032
+
+ nop
+
+ .line 1038
+
+ move v6, v9
+
+ goto
+
+ .line 1033
+
+ goto
+
+ .line 1038
+
+ invoke-virtual {v0, v6}, Landroid/net/NetworkCapabilities;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+
+ .line 1039
+ invoke-virtual {v0, v8}, Landroid/net/NetworkCapabilities;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+
+ .line 1041
+ new-instance v1, Landroid/net/StringNetworkSpecifier;
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getSubId()I
+
+ move-result v2
+
+ invoke-static {v2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-direct {v1, v2}, Landroid/net/StringNetworkSpecifier;-><init>(Ljava/lang/String;)V
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities;
+
+ .line 1043
+ const/16 v1, 0x12
+
+ iget-object v2, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mPhone:Lcom/android/internal/telephony/Phone;
+
+ .line 1044
+ invoke-virtual {v2}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Landroid/telephony/ServiceState;->getDataRoaming()Z
+
+ move-result v2
+
+ .line 1043
+ xor-int/2addr v2, v5
+
+ invoke-virtual {v0, v1, v2}, Landroid/net/NetworkCapabilities;->setCapability(IZ)Landroid/net/NetworkCapabilities;
+
+ .line 1046
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1049
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v5
+
+ if-eqz v1,
+
+ .line 1050
+ invoke-virtual {v0, v3}, Landroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1052
+
+ iget v1, p0, Lcom/android/internal/telephony/dataconnection/DataConnection;->mSubscriptionOverride:I
+
+ and-int/2addr v1, v4
+
+ if-eqz v1,
+
+ .line 1053
+ const/16 v1, 0x14
+
+ invoke-virtual {v0, v1}, Landroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
+
+ .line 1056
+
+ return-object v0
+
+ nop
+
+
+ .sparse-switch
+ 0x2a ->
+ 0xd18 ->
+ 0x17ff4 ->
+ 0x185fd ->
+ 0x197cf ->
+ 0x1a6d3 ->
+ 0x300cf6 ->
+ 0x360bde ->
+ 0x5c13d641 ->
+ 0x6118c591 ->
+ .end sparse-switch
+
+
+ .packed-switch 0x0
+
+
+
+
+
+
+ .end packed-switch
+
+
+ .packed-switch 0x1
+
+
+
+
+
+
+
+
+
+ .end packed-switch
+.end method
diff --git a/data/syntax/smali.xml b/data/syntax/smali.xml
new file mode 100644
--- /dev/null
+++ b/data/syntax/smali.xml
@@ -0,0 +1,456 @@
+
+
+
+
+
+
+
+]>
+
+
+
+ - nop
+ - move
+ - move/from16
+ - move/16
+ - move-wide
+ - move-wide/from16
+ - move-wide/16
+ - move-object
+ - move-object/from16
+ - move-object/16
+ - move-result
+ - move-result-wide
+ - move-result-object
+ - move-exception
+ - return-void
+ - return
+ - return-wide
+ - return-object
+ - const/4
+ - const/16
+ - const
+ - const/high16
+ - const-wide/16
+ - const-wide/32
+ - const-wide
+ - const-wide/high16
+ - const-string
+ - const-string/jumbo
+ - const-class
+ - monitor-enter
+ - monitor-exit
+ - check-cast
+ - instance-of
+ - array-length
+ - new-instance
+ - new-array
+ - filled-new-array
+ - filled-new-array/range
+ - fill-array-data
+ - throw
+ - goto
+ - goto/16
+ - goto/32
+ - packed-switch
+ - sparse-switch
+ - cmpl-float
+ - cmpg-float
+ - cmpl-double
+ - cmpg-double
+ - cmp-long
+ - if-eq
+ - if-ne
+ - if-lt
+ - if-ge
+ - if-gt
+ - if-le
+ - if-eqz
+ - if-nez
+ - if-ltz
+ - if-gez
+ - if-gtz
+ - if-lez
+ - aget
+ - aget-wide
+ - aget-object
+ - aget-boolean
+ - aget-byte
+ - aget-char
+ - aget-short
+ - aput
+ - aput-wide
+ - aput-object
+ - aput-boolean
+ - aput-byte
+ - aput-char
+ - aput-short
+ - iget
+ - iget-wide
+ - iget-object
+ - iget-boolean
+ - iget-byte
+ - iget-char
+ - iget-short
+ - iput
+ - iput-wide
+ - iput-object
+ - iput-boolean
+ - iput-byte
+ - iput-char
+ - iput-short
+ - sget
+ - sget-wide
+ - sget-object
+ - sget-boolean
+ - sget-byte
+ - sget-char
+ - sget-short
+ - sput
+ - sput-wide
+ - sput-object
+ - sput-boolean
+ - sput-byte
+ - sput-char
+ - sput-short
+ - invoke-virtual
+ - invoke-super
+ - invoke-direct
+ - invoke-static
+ - invoke-interface
+ - invoke-virtual/range
+ - invoke-super/range
+ - invoke-direct/range
+ - invoke-static/range
+ - invoke-interface/range
+ - neg-int
+ - not-int
+ - neg-long
+ - not-long
+ - neg-float
+ - neg-double
+ - int-to-long
+ - int-to-float
+ - int-to-double
+ - long-to-int
+ - long-to-float
+ - long-to-double
+ - float-to-int
+ - float-to-long
+ - float-to-double
+ - double-to-int
+ - double-to-long
+ - double-to-float
+ - int-to-byte
+ - int-to-char
+ - int-to-short
+ - add-int
+ - sub-int
+ - mul-int
+ - div-int
+ - rem-int
+ - and-int
+ - or-int
+ - xor-int
+ - shl-int
+ - shr-int
+ - ushr-int
+ - add-long
+ - sub-long
+ - mul-long
+ - div-long
+ - rem-long
+ - and-long
+ - or-long
+ - xor-long
+ - shl-long
+ - shr-long
+ - ushr-long
+ - add-float
+ - sub-float
+ - mul-float
+ - div-float
+ - rem-float
+ - add-double
+ - sub-double
+ - mul-double
+ - div-double
+ - rem-double
+ - add-int/2addr
+ - sub-int/2addr
+ - mul-int/2addr
+ - div-int/2addr
+ - rem-int/2addr
+ - and-int/2addr
+ - or-int/2addr
+ - xor-int/2addr
+ - shl-int/2addr
+ - shr-int/2addr
+ - ushr-int/2addr
+ - add-long/2addr
+ - sub-long/2addr
+ - mul-long/2addr
+ - div-long/2addr
+ - rem-long/2addr
+ - and-long/2addr
+ - or-long/2addr
+ - xor-long/2addr
+ - shl-long/2addr
+ - shr-long/2addr
+ - ushr-long/2addr
+ - add-float/2addr
+ - sub-float/2addr
+ - mul-float/2addr
+ - div-float/2addr
+ - rem-float/2addr
+ - add-double/2addr
+ - sub-double/2addr
+ - mul-double/2addr
+ - div-double/2addr
+ - rem-double/2addr
+ - add-int/lit16
+ - rsub-int
+ - mul-int/lit16
+ - div-int/lit16
+ - rem-int/lit16
+ - and-int/lit16
+ - or-int/lit16
+ - xor-int/lit16
+ - add-int/lit8
+ - rsub-int/lit8
+ - mul-int/lit8
+ - div-int/lit8
+ - rem-int/lit8
+ - and-int/lit8
+ - or-int/lit8
+ - xor-int/lit8
+ - shl-int/lit8
+ - shr-int/lit8
+ - ushr-int/lit8
+ - iget-volatile
+ - iput-volatile
+ - sget-volatile
+ - sput-volatile
+ - iget-object-volatile
+ - iget-wide-volatile
+ - iput-wide-volatile
+ - sget-wide-volatile
+ - sput-wide-volatile
+ - sget-object-volatile
+ - throw-verification-error
+ - execute-inline
+ - execute-inline/range
+ - invoke-object-init/range
+ - return-void-barrier
+ - iget-quick
+ - invoke-polymorphic
+ - invoke-polymorphic/range
+ - invoke-custom
+ - invoke-custom/range
+ - const-method-handle
+ - const-method-type
+
+
+
+ - public
+ - private
+ - protected
+ - static
+ - final
+ - synchronized
+ - volatile
+ - bridge
+ - transient
+ - varargs
+ - native
+ - interface
+ - abstract
+ - strictfp
+ - synthetic
+ - annotation
+ - enum
+ - constructor
+ - declared-synchronized
+
+
+ - build
+ - runtime
+ - system
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+