Chromium Code Reviews| 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 ea41fac5d1442429deb59fb7ef1768c3c6f05c74..39be6848eba0fd3186103cd076145d7658b38f4d 100644 |
| --- a/chrome/browser/signin/easy_unlock_screenlock_state_handler.cc |
| +++ b/chrome/browser/signin/easy_unlock_screenlock_state_handler.cc |
| @@ -5,11 +5,10 @@ |
| #include "chrome/browser/signin/easy_unlock_screenlock_state_handler.h" |
| #include "base/bind.h" |
| -#include "base/prefs/pref_service.h" |
| #include "base/strings/string16.h" |
| #include "base/strings/utf_string_conversions.h" |
| +#include "chrome/browser/browser_process.h" |
| #include "chrome/browser/chromeos/chromeos_utils.h" |
| -#include "chrome/common/pref_names.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "ui/base/l10n/l10n_util.h" |
| @@ -69,20 +68,23 @@ bool TooltipContainsDeviceType(EasyUnlockScreenlockStateHandler::State state) { |
| state == EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED; |
| } |
| +bool IsLocaleEnUS() { |
| + return g_browser_process->GetApplicationLocale() == "en-US"; |
| +} |
| + |
| } // namespace |
| EasyUnlockScreenlockStateHandler::EasyUnlockScreenlockStateHandler( |
| const std::string& user_email, |
| HardlockState initial_hardlock_state, |
| - PrefService* pref_service, |
| ScreenlockBridge* screenlock_bridge) |
| : state_(STATE_INACTIVE), |
| user_email_(user_email), |
| - pref_service_(pref_service), |
| screenlock_bridge_(screenlock_bridge), |
| hardlock_state_(initial_hardlock_state), |
| - hardlock_ui_shown_(false) { |
| + hardlock_ui_shown_(false), |
| + is_trial_run_(false) { |
| DCHECK(screenlock_bridge_); |
| screenlock_bridge_->AddObserver(this); |
| } |
| @@ -104,10 +106,8 @@ void EasyUnlockScreenlockStateHandler::ChangeState(State new_state) { |
| if (!screenlock_bridge_->IsLocked()) |
| return; |
| - const bool trial_run = IsTrialRun(); |
| - |
| // No hardlock UI for trial run. |
| - if (!trial_run && hardlock_state_ != NO_HARDLOCK) { |
| + if (!is_trial_run_ && hardlock_state_ != NO_HARDLOCK) { |
| ShowHardlockUI(); |
| return; |
| } |
| @@ -125,10 +125,10 @@ void EasyUnlockScreenlockStateHandler::ChangeState(State new_state) { |
| icon_options.SetIcon(icon); |
| // Don't hardlock on trial run. |
| - if (!trial_run && HardlockOnClick(state_)) |
| + if (!is_trial_run_ && HardlockOnClick(state_)) |
| icon_options.SetHardlockOnClick(); |
| - UpdateTooltipOptions(trial_run, &icon_options); |
| + UpdateTooltipOptions(is_trial_run_, &icon_options); |
| screenlock_bridge_->lock_handler()->ShowUserPodCustomIcon(user_email_, |
| icon_options); |
| @@ -146,10 +146,7 @@ void EasyUnlockScreenlockStateHandler::SetHardlockState( |
| if (hardlock_state_ != NO_HARDLOCK) { |
| hardlock_ui_shown_ = false; |
| - State last_state = state_; |
| - // This should force updating screenlock state. |
| - state_ = STATE_INACTIVE; |
| - ChangeState(last_state); |
| + RefreshScreenlockState(); |
| } |
| } |
| @@ -158,23 +155,33 @@ void EasyUnlockScreenlockStateHandler::MaybeShowHardlockUI() { |
| ShowHardlockUI(); |
| } |
| +void EasyUnlockScreenlockStateHandler::SetTrialRun() { |
| + if (is_trial_run_) |
| + return; |
| + is_trial_run_ = true; |
| + RefreshScreenlockState(); |
| +} |
| + |
| void EasyUnlockScreenlockStateHandler::OnScreenDidLock() { |
| - State last_state = state_; |
| - // This should force updating screenlock state. |
| - state_ = STATE_INACTIVE; |
| - ChangeState(last_state); |
| + RefreshScreenlockState(); |
| } |
| void EasyUnlockScreenlockStateHandler::OnScreenDidUnlock() { |
| hardlock_ui_shown_ = false; |
| - if (state_ != STATE_INACTIVE) |
| - MarkTrialRunComplete(); |
| + is_trial_run_ = false; |
| } |
| void EasyUnlockScreenlockStateHandler::OnFocusedUserChanged( |
| const std::string& user_id) { |
| } |
| +void EasyUnlockScreenlockStateHandler::RefreshScreenlockState() { |
| + State last_state = state_; |
| + // This should force updating screenlock state. |
| + state_ = STATE_INACTIVE; |
| + ChangeState(last_state); |
| +} |
| + |
| void EasyUnlockScreenlockStateHandler::ShowHardlockUI() { |
| DCHECK(hardlock_state_ != NO_HARDLOCK); |
| @@ -201,17 +208,20 @@ void EasyUnlockScreenlockStateHandler::ShowHardlockUI() { |
| ScreenlockBridge::UserPodCustomIconOptions icon_options; |
| icon_options.SetIcon(ScreenlockBridge::USER_POD_CUSTOM_ICON_HARDLOCKED); |
| - base::string16 tooltip; |
| - if (hardlock_state_ == USER_HARDLOCK) { |
| - tooltip = l10n_util::GetStringFUTF16( |
| - IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_HARDLOCK_USER, GetDeviceName()); |
| - } else if (hardlock_state_ == PAIRING_CHANGED) { |
| - tooltip = l10n_util::GetStringUTF16( |
| - IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_HARDLOCK_PAIRING_CHANGED); |
| - } else { |
| - LOG(ERROR) << "Unknown hardlock state " << hardlock_state_; |
| + // TODO(tbarzic): Remove this condition for M-40. |
| + if (IsLocaleEnUS()) { |
| + base::string16 tooltip; |
| + if (hardlock_state_ == USER_HARDLOCK) { |
| + tooltip = l10n_util::GetStringFUTF16( |
| + IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_HARDLOCK_USER, GetDeviceName()); |
| + } else if (hardlock_state_ == PAIRING_CHANGED) { |
| + tooltip = l10n_util::GetStringUTF16( |
| + IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_HARDLOCK_PAIRING_CHANGED); |
| + } else { |
| + LOG(ERROR) << "Unknown hardlock state " << hardlock_state_; |
| + } |
| + icon_options.SetTooltip(tooltip, true /* autoshow */); |
| } |
| - icon_options.SetTooltip(tooltip, false /* don't autoshow */); |
| screenlock_bridge_->lock_handler()->ShowUserPodCustomIcon(user_email_, |
| icon_options); |
| @@ -224,7 +234,11 @@ void EasyUnlockScreenlockStateHandler::UpdateTooltipOptions( |
| size_t resource_id = 0; |
| base::string16 device_name; |
| if (trial_run && state_ == STATE_AUTHENTICATED) { |
| - resource_id = IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_TUTORIAL; |
| + // TODO(tbarzic): Remove this condition for M-40 branch. |
| + if (IsLocaleEnUS()) |
| + resource_id = IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_INITIAL_AUTHENTICATED; |
| + else |
| + resource_id = IDS_EASY_UNLOCK_SCREENLOCK_TOOLTIP_TUTORIAL; |
| } else { |
| resource_id = GetTooltipResourceId(state_); |
| if (TooltipContainsDeviceType(state_)) |
| @@ -244,20 +258,7 @@ void EasyUnlockScreenlockStateHandler::UpdateTooltipOptions( |
| if (tooltip.empty()) |
| return; |
| - icon_options->SetTooltip( |
| - tooltip, |
| - state_ == STATE_AUTHENTICATED && trial_run /* autoshow tooltip */); |
| -} |
| - |
| -bool EasyUnlockScreenlockStateHandler::IsTrialRun() { |
| - return pref_service_ && |
| - pref_service_->GetBoolean(prefs::kEasyUnlockShowTutorial); |
| -} |
| - |
| -void EasyUnlockScreenlockStateHandler::MarkTrialRunComplete() { |
| - if (!pref_service_) |
| - return; |
| - pref_service_->SetBoolean(prefs::kEasyUnlockShowTutorial, false); |
| + icon_options->SetTooltip(tooltip, trial_run /* autoshow tooltip */); |
| } |
| base::string16 EasyUnlockScreenlockStateHandler::GetDeviceName() { |
| @@ -270,15 +271,18 @@ base::string16 EasyUnlockScreenlockStateHandler::GetDeviceName() { |
| } |
| void EasyUnlockScreenlockStateHandler::UpdateScreenlockAuthType() { |
| - if (!IsTrialRun() && hardlock_state_ != NO_HARDLOCK) |
| + if (!is_trial_run_ && hardlock_state_ != NO_HARDLOCK) |
| return; |
| if (state_ == STATE_AUTHENTICATED) { |
| - screenlock_bridge_->lock_handler()->SetAuthType( |
| - user_email_, |
| - ScreenlockBridge::LockHandler::USER_CLICK, |
| - l10n_util::GetStringUTF16( |
| - IDS_EASY_UNLOCK_SCREENLOCK_USER_POD_AUTH_VALUE)); |
| + if (screenlock_bridge_->lock_handler()->GetAuthType(user_email_) != |
| + ScreenlockBridge::LockHandler::USER_CLICK) { |
|
xiyuan
2014/10/09 21:03:55
nit: Should we move this logic to Lockhandler::Set
tbarzic
2014/10/09 21:33:27
I plan to make a cl that removes FORCED_OFFLINE_PA
|
| + screenlock_bridge_->lock_handler()->SetAuthType( |
| + user_email_, |
| + ScreenlockBridge::LockHandler::USER_CLICK, |
| + l10n_util::GetStringUTF16( |
| + IDS_EASY_UNLOCK_SCREENLOCK_USER_POD_AUTH_VALUE)); |
| + } |
| } else if (screenlock_bridge_->lock_handler()->GetAuthType(user_email_) != |
| ScreenlockBridge::LockHandler::OFFLINE_PASSWORD) { |
| screenlock_bridge_->lock_handler()->SetAuthType( |