Commit d61bda19 authored by Wenzhao Zang's avatar Wenzhao Zang Committed by Commit Bot

cros: Update re-auth message UI

1) Update the UI to be the same with the web-ui implementation.

2) Add a button to lock_debug_view.cc|h for easy debugging.

Bug: 836336
Change-Id: I89143c7db149dea31bc6848de18e6ecc6386f98b
Reviewed-on: https://chromium-review.googlesource.com/1044746Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Wenzhao (Colin) Zang <wzang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556174}
parent 7dae0564
......@@ -199,6 +199,13 @@ class LockDebugView::DebugDataDispatcherTransformer
debug_user->account_id, debug_user->enable_click_to_unlock);
}
// Force online sign-in for the user at |user_index|.
void ForceOnlineSignInForUserIndex(size_t user_index) {
DCHECK(user_index >= 0 && user_index < debug_users_.size());
debug_dispatcher_.SetForceOnlineSignInForUser(
debug_users_[user_index].account_id);
}
void ToggleLockScreenNoteButton() {
if (lock_screen_note_state_ == mojom::TrayActionState::kAvailable) {
lock_screen_note_state_ = mojom::TrayActionState::kNotAvailable;
......@@ -616,12 +623,20 @@ void LockDebugView::ButtonPressed(views::Button* sender,
if (per_user_action_column_cycle_easy_unlock_state_[i] == sender)
debug_data_dispatcher_->CycleEasyUnlockForUserIndex(i);
}
// Force online sign-in.
for (size_t i = 0u; i < per_user_action_column_force_online_sign_in_.size();
++i) {
if (per_user_action_column_force_online_sign_in_[i] == sender)
debug_data_dispatcher_->ForceOnlineSignInForUserIndex(i);
}
}
void LockDebugView::RebuildDebugUserColumn() {
per_user_action_column_->RemoveAllChildViews(true /*delete_children*/);
per_user_action_column_toggle_pin_.clear();
per_user_action_column_cycle_easy_unlock_state_.clear();
per_user_action_column_force_online_sign_in_.clear();
per_user_action_column_use_detachable_base_.clear();
for (size_t i = 0u; i < num_users_; ++i) {
......@@ -640,6 +655,12 @@ void LockDebugView::RebuildDebugUserColumn() {
toggle_click_auth);
row->AddChildView(toggle_click_auth);
views::View* force_online_sign_in =
AddButton("Force online sign-in", false /*add_to_debug_row*/);
per_user_action_column_force_online_sign_in_.push_back(
force_online_sign_in);
row->AddChildView(force_online_sign_in);
if (debug_detachable_base_model_->debugging_pairing_state() &&
debug_detachable_base_model_->GetPairingStatus() ==
DetachableBasePairingStatus::kAuthenticated) {
......
......@@ -67,6 +67,7 @@ class LockDebugView : public views::View, public views::ButtonListener {
views::View* per_user_action_column_ = nullptr;
std::vector<views::View*> per_user_action_column_toggle_pin_;
std::vector<views::View*> per_user_action_column_cycle_easy_unlock_state_;
std::vector<views::View*> per_user_action_column_force_online_sign_in_;
std::vector<views::View*> per_user_action_column_use_detachable_base_;
// Debug row which contains buttons that affect the entire UI.
......
......@@ -16,6 +16,7 @@
#include "ash/login/ui/non_accessible_view.h"
#include "ash/login/ui/pin_keyboard_animation.h"
#include "ash/public/cpp/login_constants.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "ash/shell.h"
#include "ash/strings/grit/ash_strings.h"
#include "base/strings/utf_string_conversions.h"
......@@ -26,6 +27,8 @@
#include "ui/compositor/layer_animator.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
#include "ui/gfx/interpolated_transform.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/border.h"
#include "ui/views/controls/button/label_button.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/layout/fill_layout.h"
......@@ -158,25 +161,25 @@ LoginAuthUserView::LoginAuthUserView(const mojom::LoginUserInfoPtr& user,
callbacks.on_easy_unlock_icon_hovered,
callbacks.on_easy_unlock_icon_tapped);
// TODO(crbug.com/836336): Update the spec. Currently the text must be set in
// |UpdateForUser| because it's dependent on the user name.
online_sign_in_message_ = new views::LabelButton(this, base::string16()),
online_sign_in_message_->SetPaintToLayer();
online_sign_in_message_->SetTextSubpixelRenderingEnabled(false);
online_sign_in_message_->SetTextColor(views::Button::STATE_NORMAL,
kOnlineSignInMessageColor);
online_sign_in_message_ = new views::LabelButton(
this, base::UTF8ToUTF16(user->basic_user_info->display_name));
DecorateOnlineSignInMessage();
SetPaintToLayer(ui::LayerType::LAYER_NOT_DRAWN);
// Build layout.
auto* wrapped_password_view =
login_layout_util::WrapViewForPreferredSize(password_view_);
auto* wrapped_message_view =
login_layout_util::WrapViewForPreferredSize(online_sign_in_message_);
auto* wrapped_user_view =
login_layout_util::WrapViewForPreferredSize(user_view_);
auto* wrapped_pin_view =
login_layout_util::WrapViewForPreferredSize(pin_view_);
// Add views in tabbing order; they are rendered in a different order below.
AddChildView(password_view_);
AddChildView(online_sign_in_message_);
AddChildView(wrapped_password_view);
AddChildView(wrapped_message_view);
AddChildView(wrapped_pin_view);
AddChildView(wrapped_user_view);
......@@ -200,8 +203,8 @@ LoginAuthUserView::LoginAuthUserView(const mojom::LoginUserInfoPtr& user,
add_padding(kDistanceFromTopOfBigUserViewToUserIconDp);
add_view(wrapped_user_view);
add_padding(kDistanceBetweenUserViewAndPasswordDp);
add_view(password_view_);
add_view(online_sign_in_message_);
add_view(wrapped_password_view);
add_view(wrapped_message_view);
add_padding(kDistanceBetweenPasswordFieldAndPinKeyboard);
add_view(wrapped_pin_view);
add_padding(kDistanceFromPinKeyboardToBigUserViewBottom);
......@@ -226,6 +229,7 @@ void LoginAuthUserView::SetAuthMethods(uint32_t auth_methods) {
password_view_->SetEnabled(has_password);
password_view_->SetFocusEnabledForChildViews(has_password);
password_view_->SetVisible(!force_online_sign_in);
password_view_->layer()->SetOpacity(has_password ? 1 : 0);
if (!had_password && has_password)
......@@ -442,4 +446,21 @@ bool LoginAuthUserView::HasAuthMethod(AuthMethods auth_method) const {
return (auth_methods_ & auth_method) != 0;
}
void LoginAuthUserView::DecorateOnlineSignInMessage() {
online_sign_in_message_->SetPaintToLayer();
online_sign_in_message_->layer()->SetFillsBoundsOpaquely(false);
online_sign_in_message_->SetImage(
views::Button::STATE_NORMAL,
CreateVectorIcon(kLockScreenAlertIcon, kOnlineSignInMessageColor));
online_sign_in_message_->SetTextSubpixelRenderingEnabled(false);
online_sign_in_message_->SetTextColor(views::Button::STATE_NORMAL,
kOnlineSignInMessageColor);
online_sign_in_message_->SetTextColor(views::Button::STATE_HOVERED,
kOnlineSignInMessageColor);
online_sign_in_message_->SetTextColor(views::Button::STATE_PRESSED,
kOnlineSignInMessageColor);
online_sign_in_message_->SetBorder(
views::CreateEmptyBorder(gfx::Insets(9, 0)));
}
} // namespace ash
......@@ -139,6 +139,9 @@ class ASH_EXPORT LoginAuthUserView : public NonAccessibleView,
// bool has_tap = HasAuthMethod(AUTH_TAP).
bool HasAuthMethod(AuthMethods auth_method) const;
// Update UI for the online sign-in message.
void DecorateOnlineSignInMessage();
AuthMethods auth_methods_ = AUTH_NONE;
LoginUserView* user_view_ = nullptr;
LoginPasswordView* password_view_ = nullptr;
......
......@@ -127,7 +127,7 @@ TEST_F(LoginAuthUserViewUnittest, OnlineSignInMessage) {
// visible. The password field and PIN keyboard are invisible.
view_->SetAuthMethods(LoginAuthUserView::AUTH_ONLINE_SIGN_IN);
EXPECT_TRUE(online_sign_in_message->visible());
EXPECT_EQ(0.0f, password_view->layer()->opacity());
EXPECT_FALSE(password_view->visible());
EXPECT_FALSE(pin_view->visible());
// Clicking the message triggers |ShowGaiaSignin|.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment