Merge "IMS-VT: Turn ON screen when there is a upgrade request"
diff --git a/src/com/android/incallui/InCallPresenter.java b/src/com/android/incallui/InCallPresenter.java
index 1d33e34..9b481dd 100644
--- a/src/com/android/incallui/InCallPresenter.java
+++ b/src/com/android/incallui/InCallPresenter.java
@@ -36,6 +36,8 @@
 import android.view.Window;
 import android.view.WindowManager;
 
+import android.os.PowerManager;
+
 import com.google.common.base.Preconditions;
 import com.android.incalluibind.ObjectFactory;
 
@@ -90,6 +92,8 @@
     private boolean mServiceConnected = false;
     private boolean mAccountSelectionCancelled = false;
     private InCallCameraManager mInCallCameraManager = null;
+    private PowerManager mPowerManager;
+    private PowerManager.WakeLock mWakeLock = null;
 
     private final Phone.Listener mPhoneListener = new Phone.Listener() {
         @Override
@@ -211,6 +215,10 @@
         mProximitySensor = new ProximitySensor(context, mAudioModeProvider);
         addListener(mProximitySensor);
 
+        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+        mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |
+                PowerManager.ACQUIRE_CAUSES_WAKEUP, "InCallPresenter");
+
         mCallList = callList;
 
         // This only gets called by the service so this is okay.
@@ -1072,6 +1080,9 @@
             }
             mProximitySensor = null;
 
+            mWakeLock = null;
+            mPowerManager = null;
+
             mAudioModeProvider = null;
 
             if (mStatusBarNotifier != null) {
@@ -1220,6 +1231,34 @@
         }
     }
 
+    /* returns TRUE if screen is turned ON else false */
+    private boolean isScreenInteractive() {
+        return mPowerManager.isInteractive();
+    }
+
+    public void wakeUpScreen() {
+        if (!isScreenInteractive()) {
+            acquireWakeLock();
+            releaseWakeLock();
+        }
+    }
+
+    private void acquireWakeLock() {
+        Log.v(this, "acquireWakeLock");
+
+        if (mWakeLock != null) {
+            mWakeLock.acquire();
+        }
+    }
+
+    private void releaseWakeLock() {
+        Log.v(this, "releaseWakeLock");
+
+        if (mWakeLock != null && mWakeLock.isHeld()) {
+            mWakeLock.release();
+        }
+    }
+
     public void enableScreenTimeout(boolean v) {
         Log.v(this, "enableScreenTimeout: value=" + v);
         if (mInCallActivity == null) {
diff --git a/src/com/android/incallui/InCallVideoCallListener.java b/src/com/android/incallui/InCallVideoCallListener.java
index 13ffe51..080acc5 100644
--- a/src/com/android/incallui/InCallVideoCallListener.java
+++ b/src/com/android/incallui/InCallVideoCallListener.java
@@ -49,6 +49,10 @@
     @Override
     public void onSessionModifyRequestReceived(VideoProfile videoProfile) {
         Log.d(this, " onSessionModifyRequestReceived videoProfile=" + videoProfile);
+
+        /* turn ON screen when already turned OFF */
+        InCallPresenter.getInstance().wakeUpScreen();
+
         int previousVideoState = CallUtils.toUnPausedVideoState(mCall.getVideoState());
         int newVideoState = CallUtils.toUnPausedVideoState(videoProfile.getVideoState());