Merge "Correctly iterate through MediaProjection callbacks." into lmp-mr1-dev
diff --git a/media/java/android/media/projection/MediaProjection.java b/media/java/android/media/projection/MediaProjection.java
index 2ca9b9a..a6bde1d 100644
--- a/media/java/android/media/projection/MediaProjection.java
+++ b/media/java/android/media/projection/MediaProjection.java
@@ -76,6 +76,9 @@
         if (callback == null) {
             throw new IllegalArgumentException("callback should not be null");
         }
+        if (handler == null) {
+            handler = new Handler();
+        }
         mCallbacks.put(callback, new CallbackRecord(callback, handler));
     }
 
@@ -182,16 +185,15 @@
     private final class MediaProjectionCallback extends IMediaProjectionCallback.Stub {
         @Override
         public void onStop() {
-            final int N = mCallbacks.size();
-            for (int i = 0; i < N; i++) {
-                mCallbacks.get(i).onStop();
+            for (CallbackRecord cbr : mCallbacks.values()) {
+                cbr.onStop();
             }
         }
     }
 
     private final static class CallbackRecord {
-        private Callback mCallback;
-        private Handler mHandler;
+        private final Callback mCallback;
+        private final Handler mHandler;
 
         public CallbackRecord(Callback callback, Handler handler) {
             mCallback = callback;