diff --git a/autotests/folding/test.smali.fold b/autotests/folding/test.smali.fold new file mode 100644 --- /dev/null +++ b/autotests/folding/test.smali.fold @@ -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/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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +