| Index: chrome/browser/signin/easy_unlock_screenlock_state_handler.cc
|
| diff --git a/chrome/browser/signin/easy_unlock_screenlock_state_handler.cc b/chrome/browser/signin/easy_unlock_screenlock_state_handler.cc
|
| index 13816fc155f61a86379fd7b9384c06fd0851e20a..5ddb98f1af5eebab988d112c5206eb398ec8ac8e 100644
|
| --- a/chrome/browser/signin/easy_unlock_screenlock_state_handler.cc
|
| +++ b/chrome/browser/signin/easy_unlock_screenlock_state_handler.cc
|
| @@ -49,6 +49,10 @@ bool HasAnimation(EasyUnlockScreenlockStateHandler::State state) {
|
| return state == EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING;
|
| }
|
|
|
| +bool HardlockOnClick(EasyUnlockScreenlockStateHandler::State state) {
|
| + return state == EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED;
|
| +}
|
| +
|
| size_t GetTooltipResourceId(EasyUnlockScreenlockStateHandler::State state) {
|
| switch (state) {
|
| case EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH:
|
| @@ -64,9 +68,7 @@ size_t GetTooltipResourceId(EasyUnlockScreenlockStateHandler::State state) {
|
| case EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_NEARBY:
|
| return IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_PHONE_NOT_NEARBY;
|
| case EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED:
|
| - // TODO(tbarzic): When hard lock is enabled change this to
|
| - // IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_HARDLOCK_INSTRUCTIONS.
|
| - return 0;
|
| + return IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_HARDLOCK_INSTRUCTIONS;
|
| default:
|
| return 0;
|
| }
|
| @@ -99,10 +101,13 @@ void EasyUnlockScreenlockStateHandler::ChangeState(State new_state) {
|
|
|
| state_ = new_state;
|
|
|
| - // If lock screen is not active, just cache the current state.
|
| - // The screenlock state will get refreshed in |ScreenDidLock|.
|
| - if (!screenlock_bridge_->IsLocked())
|
| + // If lock screen is not active or it forces offline password, just cache the
|
| + // current state. The screenlock state will get refreshed in |ScreenDidLock|.
|
| + if (!screenlock_bridge_->IsLocked() ||
|
| + screenlock_bridge_->lock_handler()->GetAuthType(user_email_) ==
|
| + ScreenlockBridge::LockHandler::FORCE_OFFLINE_PASSWORD) {
|
| return;
|
| + }
|
|
|
| UpdateScreenlockAuthType();
|
|
|
| @@ -115,7 +120,9 @@ void EasyUnlockScreenlockStateHandler::ChangeState(State new_state) {
|
| }
|
| icon_options.SetIconAsResourceURL(icon_url);
|
|
|
| - UpdateTooltipOptions(&icon_options);
|
| + bool trial_run = IsTrialRun();
|
| +
|
| + UpdateTooltipOptions(trial_run, &icon_options);
|
|
|
| if (UseOpaqueIcon(state_))
|
| icon_options.SetOpacity(kOpaqueIconOpacity);
|
| @@ -125,6 +132,13 @@ void EasyUnlockScreenlockStateHandler::ChangeState(State new_state) {
|
| if (HasAnimation(state_))
|
| icon_options.SetAnimation(kSpinnerResourceWidth, kSpinnerIntervalMs);
|
|
|
| + // Hardlocking is disabled in trial run.
|
| + if (!trial_run && HardlockOnClick(state_))
|
| + icon_options.SetHardlockOnClick();
|
| +
|
| + if (trial_run && state_ == STATE_AUTHENTICATED)
|
| + MarkTrialRunComplete();
|
| +
|
| screenlock_bridge_->lock_handler()->ShowUserPodCustomIcon(user_email_,
|
| icon_options);
|
| }
|
| @@ -140,12 +154,11 @@ void EasyUnlockScreenlockStateHandler::OnScreenDidUnlock() {
|
| }
|
|
|
| void EasyUnlockScreenlockStateHandler::UpdateTooltipOptions(
|
| + bool trial_run,
|
| ScreenlockBridge::UserPodCustomIconOptions* icon_options) {
|
| - bool show_tutorial = ShouldShowTutorial();
|
| -
|
| size_t resource_id = 0;
|
| base::string16 device_name;
|
| - if (show_tutorial) {
|
| + if (trial_run && state_ == STATE_AUTHENTICATED) {
|
| resource_id = IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_TUTORIAL;
|
| } else {
|
| resource_id = GetTooltipResourceId(state_);
|
| @@ -166,20 +179,17 @@ void EasyUnlockScreenlockStateHandler::UpdateTooltipOptions(
|
| if (tooltip.empty())
|
| return;
|
|
|
| - if (show_tutorial)
|
| - MarkTutorialShown();
|
| -
|
| - icon_options->SetTooltip(tooltip, show_tutorial /* autoshow tooltip */);
|
| + icon_options->SetTooltip(
|
| + tooltip,
|
| + state_ == STATE_AUTHENTICATED && trial_run /* autoshow tooltip */);
|
| }
|
|
|
| -bool EasyUnlockScreenlockStateHandler::ShouldShowTutorial() {
|
| - if (state_ != STATE_AUTHENTICATED)
|
| - return false;
|
| +bool EasyUnlockScreenlockStateHandler::IsTrialRun() {
|
| return pref_service_ &&
|
| pref_service_->GetBoolean(prefs::kEasyUnlockShowTutorial);
|
| }
|
|
|
| -void EasyUnlockScreenlockStateHandler::MarkTutorialShown() {
|
| +void EasyUnlockScreenlockStateHandler::MarkTrialRunComplete() {
|
| if (!pref_service_)
|
| return;
|
| pref_service_->SetBoolean(prefs::kEasyUnlockShowTutorial, false);
|
| @@ -195,6 +205,10 @@ base::string16 EasyUnlockScreenlockStateHandler::GetDeviceName() {
|
| }
|
|
|
| void EasyUnlockScreenlockStateHandler::UpdateScreenlockAuthType() {
|
| + if (screenlock_bridge_->lock_handler()->GetAuthType(user_email_) ==
|
| + ScreenlockBridge::LockHandler::FORCE_OFFLINE_PASSWORD)
|
| + return;
|
| +
|
| if (state_ == STATE_AUTHENTICATED) {
|
| screenlock_bridge_->lock_handler()->SetAuthType(
|
| user_email_,
|
|
|