OSDN Git Service

TIF: throw an exception if an operation takes too long.
authorDongwon Kang <dwkang@google.com>
Mon, 27 Apr 2015 08:43:52 +0000 (17:43 +0900)
committerDongwon Kang <dwkang@google.com>
Wed, 29 Apr 2015 05:33:24 +0000 (14:33 +0900)
Bug: 19383373
Change-Id: I915f77af3ab12d10810fd85e55d7d5c5da3d6136

media/java/android/media/tv/ITvInputSessionWrapper.java

index a3442e3..95aaa7f 100644 (file)
@@ -41,8 +41,9 @@ import com.android.internal.os.SomeArgs;
 public class ITvInputSessionWrapper extends ITvInputSession.Stub implements HandlerCaller.Callback {
     private static final String TAG = "TvInputSessionWrapper";
 
-    private static final int MESSAGE_HANDLING_DURATION_THRESHOLD_MILLIS = 50;
-    private static final int MESSAGE_TUNE_DURATION_THRESHOLD_MILLIS = 2000;
+    private static final int EXECUTE_MESSAGE_TIMEOUT_SHORT_MILLIS = 50;
+    private static final int EXECUTE_MESSAGE_TUNE_TIMEOUT_MILLIS = 2000;
+    private static final int EXECUTE_MESSAGE_TIMEOUT_LONG_MILLIS = 5 * 1000;
 
     private static final int DO_RELEASE = 1;
     private static final int DO_SET_MAIN = 2;
@@ -184,14 +185,18 @@ public class ITvInputSessionWrapper extends ITvInputSession.Stub implements Hand
             }
         }
         long duration = System.currentTimeMillis() - startTime;
-        if (duration > MESSAGE_HANDLING_DURATION_THRESHOLD_MILLIS) {
+        if (duration > EXECUTE_MESSAGE_TIMEOUT_SHORT_MILLIS) {
             Log.w(TAG, "Handling message (" + msg.what + ") took too long time (duration="
                     + duration + "ms)");
-            if (msg.what == DO_TUNE && duration > MESSAGE_TUNE_DURATION_THRESHOLD_MILLIS) {
+            if (msg.what == DO_TUNE && duration > EXECUTE_MESSAGE_TUNE_TIMEOUT_MILLIS) {
                 throw new RuntimeException("Too much time to handle tune request. (" + duration
-                        + "ms > " + MESSAGE_TUNE_DURATION_THRESHOLD_MILLIS + "ms) "
+                        + "ms > " + EXECUTE_MESSAGE_TUNE_TIMEOUT_MILLIS + "ms) "
                         + "Consider handling the tune request in a separate thread.");
             }
+            if (duration > EXECUTE_MESSAGE_TIMEOUT_LONG_MILLIS) {
+                throw new RuntimeException("Too much time to handle a request. (type=" + msg.what +
+                        ", " + duration + "ms > " + EXECUTE_MESSAGE_TIMEOUT_LONG_MILLIS + "ms).");
+            }
         }
     }