Merge cherrypicks of ['googleplex-android-review.googlesource.com/35620472'] into udc-platform-release.

Change-Id: I9cc9b64facbde8bee6f5c4dc1fcec13870c550dc
diff --git a/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java b/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java
index 65f3c4a..a351e34 100644
--- a/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java
+++ b/src/java/com/android/internal/telephony/cat/CommandParamsFactory.java
@@ -22,6 +22,7 @@
 import static com.android.internal.telephony.cat.CatCmdMessage.SetupEventListConstants.LANGUAGE_SELECTION_EVENT;
 import static com.android.internal.telephony.cat.CatCmdMessage.SetupEventListConstants.USER_ACTIVITY_EVENT;
 
+import android.app.KeyguardManager;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.Resources.NotFoundException;
@@ -88,6 +89,7 @@
     private static final int MAX_GSM7_DEFAULT_CHARS = 239;
     private static final int MAX_UCS2_CHARS = 118;
 
+    private Context mContext;
     /**
      * Returns a singleton instance of CommandParamsFactory
      * @param caller Class used for queuing raw ril messages, decoding them into
@@ -109,6 +111,7 @@
 
     private CommandParamsFactory(RilMessageDecoder caller, IccFileHandler fh, Context context) {
         mCaller = caller;
+        mContext = context;
         mIconLoader = IconLoader.getInstance(this, fh);
         try {
             mNoAlphaUsrCnf = context.getResources().getBoolean(
@@ -875,7 +878,12 @@
      */
     private boolean processLaunchBrowser(CommandDetails cmdDet,
             List<ComprehensionTlv> ctlvs) throws ResultException {
-
+        KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class);
+        if (keyguardManager != null && keyguardManager.isDeviceLocked()) {
+            CatLog.d(this, "The device is locked, cannot launch the Browser");
+            throw new ResultException(ResultCode.LAUNCH_BROWSER_ERROR,
+                    "The device is locked, unable to process the command.");
+        }
         CatLog.d(this, "process LaunchBrowser");
 
         TextMessage confirmMsg = new TextMessage();
diff --git a/src/java/com/android/internal/telephony/cat/ResultException.java b/src/java/com/android/internal/telephony/cat/ResultException.java
index 0de9ffe..a0f1406 100644
--- a/src/java/com/android/internal/telephony/cat/ResultException.java
+++ b/src/java/com/android/internal/telephony/cat/ResultException.java
@@ -34,13 +34,12 @@
     public ResultException(ResultCode result) {
         super();
 
-        // ETSI TS 102 223, 8.12 -- For the general results '20', '21', '26',
+        // ETSI TS 102 223, 8.12 -- For the general results '20', '21',
         // '38', '39', '3A', '3C', and '3D', it is mandatory for the terminal
         // to provide a specific cause value as additional information.
         switch (result) {
             case TERMINAL_CRNTLY_UNABLE_TO_PROCESS:    // 0x20
             case NETWORK_CRNTLY_UNABLE_TO_PROCESS:     // 0x21
-            case LAUNCH_BROWSER_ERROR:                 // 0x26
             case MULTI_CARDS_CMD_ERROR:                // 0x38
             case USIM_CALL_CONTROL_PERMANENT:          // 0x39
             case BIP_ERROR:                            // 0x3a