diff options
3 files changed, 52 insertions, 7 deletions
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 496ab439bdc0..ecbe59872a21 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -1425,6 +1425,9 @@      <!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->      <string name="keyguard_indication_trust_disabled">Device will stay locked until you manually unlock</string> +    <!-- Indication on the keyguard that appears when trust agents unlocks the device and device is plugged in. [CHAR LIMIT=NONE] --> +    <string name="keyguard_indication_trust_unlocked_plugged_in"><xliff:g id="keyguard_indication" example="Kept unlocked by TrustAgent">%1$s</xliff:g>\n<xliff:g id="power_indication" example="Charging Slowly">%2$s</xliff:g></string> +      <!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->      <string name="hidden_notifications_title">Get notifications faster</string> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index 4f8e6cfdf767..9af90d697947 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -285,6 +285,14 @@ public class KeyguardIndicationController implements StateListener,      }      /** +     * Sets if the device is plugged in +     */ +    @VisibleForTesting +    void setPowerPluggedIn(boolean plugged) { +        mPowerPluggedIn = plugged; +    } + +    /**       * Returns the indication text indicating that trust is currently being managed.       *       * @return {@code null} or an empty string if a trust managed text should not be shown. @@ -382,29 +390,48 @@ public class KeyguardIndicationController implements StateListener,              int userId = KeyguardUpdateMonitor.getCurrentUser();              String trustGrantedIndication = getTrustGrantedIndication();              String trustManagedIndication = getTrustManagedIndication(); + +            String powerIndication = null; +            if (mPowerPluggedIn) { +                powerIndication = computePowerIndication(); +            } +              if (!mKeyguardUpdateMonitor.isUserUnlocked(userId)) {                  mTextView.switchIndication(com.android.internal.R.string.lockscreen_storage_locked);                  mTextView.setTextColor(mInitialTextColorState);              } else if (!TextUtils.isEmpty(mTransientIndication)) { -                mTextView.switchIndication(mTransientIndication); +                if (powerIndication != null) { +                    String indication = mContext.getResources().getString( +                            R.string.keyguard_indication_trust_unlocked_plugged_in, +                            mTransientIndication, powerIndication); +                    mTextView.switchIndication(indication); +                } else { +                    mTextView.switchIndication(mTransientIndication); +                }                  mTextView.setTextColor(mTransientTextColorState);              } else if (!TextUtils.isEmpty(trustGrantedIndication)                      && mKeyguardUpdateMonitor.getUserHasTrust(userId)) { -                mTextView.switchIndication(trustGrantedIndication); +                if (powerIndication != null) { +                    String indication = mContext.getResources().getString( +                            R.string.keyguard_indication_trust_unlocked_plugged_in, +                            trustGrantedIndication, powerIndication); +                    mTextView.switchIndication(indication); +                } else { +                    mTextView.switchIndication(trustGrantedIndication); +                }                  mTextView.setTextColor(mInitialTextColorState);              } else if (!TextUtils.isEmpty(mAlignmentIndication)) {                  mTextView.switchIndication(mAlignmentIndication);                  mTextView.setTextColor(Utils.getColorError(mContext));              } else if (mPowerPluggedIn) { -                String indication = computePowerIndication();                  if (DEBUG_CHARGING_SPEED) { -                    indication += ",  " + (mChargingWattage / 1000) + " mW"; +                    powerIndication += ",  " + (mChargingWattage / 1000) + " mW";                  }                  mTextView.setTextColor(mInitialTextColorState);                  if (animate) { -                    animateText(mTextView, indication); +                    animateText(mTextView, powerIndication);                  } else { -                    mTextView.switchIndication(indication); +                    mTextView.switchIndication(powerIndication);                  }              } else if (!TextUtils.isEmpty(trustManagedIndication)                      && mKeyguardUpdateMonitor.getUserTrustIsManaged(userId) @@ -469,7 +496,8 @@ public class KeyguardIndicationController implements StateListener,                  });      } -    private String computePowerIndication() { +    @VisibleForTesting +    String computePowerIndication() {          if (mPowerCharged) {              return mContext.getResources().getString(R.string.keyguard_charged);          } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java index 581d795af3df..f72b18cbd8a5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java @@ -403,4 +403,18 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {          verify(mStatusBarStateController).addCallback(eq(mController));          verify(mKeyguardUpdateMonitor, times(2)).registerCallback(any());      } + +    @Test +    public void unlockMethodCache_listenerUpdatesPluggedIndication() { +        createController(); +        when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true); +        mController.setPowerPluggedIn(true); +        mController.setVisible(true); +        String powerIndication = mController.computePowerIndication(); +        String pluggedIndication = mContext.getString(R.string.keyguard_indication_trust_unlocked); +        pluggedIndication = mContext.getString( +                R.string.keyguard_indication_trust_unlocked_plugged_in, +                pluggedIndication, powerIndication); +        assertThat(mTextView.getText()).isEqualTo(pluggedIndication); +    }  }  |