am a812d28b: Merge "Move proximity sensor logic into VM fragment." into mnc-dev

* commit 'a812d28bfdac171e726d6b865e7ea5cfda24d924':
  Move proximity sensor logic into VM fragment.
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 735d6eb..f5802d0 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -80,7 +80,7 @@
  * This activity can be either started with the URI of a single call log entry, or with the
  * {@link #EXTRA_CALL_LOG_IDS} extra to specify a group of call log entries.
  */
-public class CallDetailActivity extends Activity implements ProximitySensorAware {
+public class CallDetailActivity extends Activity {
     private static final String TAG = "CallDetail";
 
     private static final char LEFT_TO_RIGHT_EMBEDDING = '\u202A';
@@ -142,8 +142,6 @@
     /** Whether we should show "remove from call log" in the options menu. */
     private boolean mHasRemoveFromCallLogOption;
 
-    private PowerManager.WakeLock mProximityWakeLock;
-
     static final String[] CALL_LOG_PROJECTION = new String[] {
         CallLog.Calls.DATE,
         CallLog.Calls.DURATION,
@@ -197,13 +195,6 @@
         mAccountLabel = (TextView) findViewById(R.id.phone_account_label);
         mDefaultCountryIso = GeoUtil.getCurrentCountryIso(this);
         mContactPhotoManager = ContactPhotoManager.getInstance(this);
-        final PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
-        if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
-            mProximityWakeLock = powerManager.newWakeLock(
-                    PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
-        } else {
-            mProximityWakeLock = null;
-        }
 
         mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
         getActionBar().setDisplayHomeAsUpEnabled(true);
@@ -708,40 +699,6 @@
         );
     }
 
-    @Override
-    protected void onPause() {
-        // Immediately stop the proximity sensor.
-        disableProximitySensor(false);
-        super.onPause();
-    }
-
-    @Override
-    public void enableProximitySensor() {
-        if (mProximityWakeLock == null) {
-            return;
-        }
-        if (!mProximityWakeLock.isHeld()) {
-            Log.i(TAG, "Acquiring proximity wake lock");
-            mProximityWakeLock.acquire();
-        } else {
-            Log.i(TAG, "Proximity wake lock already acquired");
-        }
-    }
-
-    @Override
-    public void disableProximitySensor(boolean waitForFarState) {
-        if (mProximityWakeLock == null) {
-            return;
-        }
-        if (mProximityWakeLock.isHeld()) {
-            Log.i(TAG, "Releasing proximity wake lock");
-            int flags = (waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0);
-            mProximityWakeLock.release(flags);
-        } else {
-            Log.i(TAG, "Proximity wake lock already released");
-        }
-    }
-
     private void closeSystemDialogs() {
         sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
     }
diff --git a/src/com/android/dialer/ProximitySensorAware.java b/src/com/android/dialer/ProximitySensorAware.java
deleted file mode 100644
index 145b860..0000000
--- a/src/com/android/dialer/ProximitySensorAware.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.dialer;
-
-/**
- * An object that is aware of the state of the proximity sensor.
- */
-public interface ProximitySensorAware {
-    /** Start tracking the state of the proximity sensor. */
-    public void enableProximitySensor();
-
-    /**
-     * Stop tracking the state of the proximity sensor.
-     *
-     * @param waitForFarState if true and the sensor is currently in the near state, it will wait
-     *         until it is again in the far state before stopping to track its state.
-     */
-    public void disableProximitySensor(boolean waitForFarState);
-}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
index 0d5c3de..fd98688 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
@@ -41,7 +41,6 @@
 
 import com.android.common.io.MoreCloseables;
 import com.android.contacts.commonbind.analytics.AnalyticsUtil;
-import com.android.dialer.ProximitySensorAware;
 import com.android.dialer.R;
 import com.android.dialer.util.AsyncTaskExecutors;
 import com.android.ex.variablespeed.MediaPlayerProxy;
@@ -68,7 +67,7 @@
  */
 @NotThreadSafe
 public class VoicemailPlaybackFragment extends Fragment {
-    private static final String TAG = "VoicemailPlayback";
+    private static final String TAG = VoicemailPlaybackFragment.class.getSimpleName();
     private static final int NUMBER_OF_THREADS_IN_POOL = 2;
     private static final String[] HAS_CONTENT_PROJECTION = new String[] {
         VoicemailContract.Voicemails.HAS_CONTENT,
@@ -80,6 +79,8 @@
     private static ScheduledExecutorService mScheduledExecutorService;
     private View mPlaybackLayout;
 
+    private PowerManager.WakeLock mProximityWakeLock;
+
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
@@ -95,15 +96,24 @@
         Uri voicemailUri = arguments.getParcelable(EXTRA_VOICEMAIL_URI);
         Preconditions.checkNotNull(voicemailUri, "fragment must contain EXTRA_VOICEMAIL_URI");
         boolean startPlayback = arguments.getBoolean(EXTRA_VOICEMAIL_START_PLAYBACK, false);
+
         PowerManager powerManager =
                 (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE);
-        PowerManager.WakeLock wakeLock =
-                powerManager.newWakeLock(
-                        PowerManager.SCREEN_DIM_WAKE_LOCK, getClass().getSimpleName());
-        mPresenter = new VoicemailPlaybackPresenter(createPlaybackViewImpl(),
-                getMediaPlayerInstance(), voicemailUri,
-                getScheduledExecutorServiceInstance(), startPlayback,
-                AsyncTaskExecutors.createAsyncTaskExecutor(), wakeLock);
+        if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
+            mProximityWakeLock = powerManager.newWakeLock(
+                    PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
+        } else {
+            mProximityWakeLock = null;
+        }
+
+        mPresenter = new VoicemailPlaybackPresenter(
+                createPlaybackViewImpl(),
+                getMediaPlayerInstance(),
+                voicemailUri,
+                getScheduledExecutorServiceInstance(),
+                startPlayback,
+                AsyncTaskExecutors.createAsyncTaskExecutor(),
+                mProximityWakeLock);
         mPresenter.onCreate(savedInstanceState);
     }
 
@@ -134,6 +144,7 @@
 
     @Override
     public void onPause() {
+        releaseProximitySensor(false /* waitForFarState */);
         mPresenter.onPause();
         super.onPause();
     }
@@ -175,6 +186,31 @@
         }
     }
 
+    private void acquireProximitySensor() {
+        if (mProximityWakeLock == null) {
+            return;
+        }
+        if (!mProximityWakeLock.isHeld()) {
+            Log.i(TAG, "Acquiring proximity wake lock");
+            mProximityWakeLock.acquire();
+        } else {
+            Log.i(TAG, "Proximity wake lock already acquired");
+        }
+    }
+
+    private void releaseProximitySensor(boolean waitForFarState) {
+        if (mProximityWakeLock == null) {
+            return;
+        }
+        if (mProximityWakeLock.isHeld()) {
+            Log.i(TAG, "Releasing proximity wake lock");
+            int flags = waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0;
+            mProximityWakeLock.release(flags);
+        } else {
+            Log.i(TAG, "Proximity wake lock already released");
+        }
+    }
+
     /**
      * Formats a number of milliseconds as something that looks like {@code 00:05}.
      * <p>
@@ -214,7 +250,7 @@
     }
 
     /**  Methods required by the PlaybackView for the VoicemailPlaybackPresenter. */
-    private static final class PlaybackViewImpl implements VoicemailPlaybackPresenter.PlaybackView {
+    private final class PlaybackViewImpl implements VoicemailPlaybackPresenter.PlaybackView {
         private final ActivityReference mActivityReference;
         private final Context mApplicationContext;
         private final SeekBar mPlaybackSeek;
@@ -311,8 +347,8 @@
         public void enableProximitySensor() {
             // Only change the state if the activity is still around.
             Activity activity = mActivityReference.get();
-            if (activity != null && activity instanceof ProximitySensorAware) {
-                ((ProximitySensorAware) activity).enableProximitySensor();
+            if (activity != null) {
+                acquireProximitySensor();
             }
         }
 
@@ -320,8 +356,8 @@
         public void disableProximitySensor() {
             // Only change the state if the activity is still around.
             Activity activity = mActivityReference.get();
-            if (activity != null && activity instanceof ProximitySensorAware) {
-                ((ProximitySensorAware) activity).disableProximitySensor(true);
+            if (activity != null) {
+                releaseProximitySensor(true /* waitForFarState */);
             }
         }