// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ui/webui/ash/login/offline_login_screen_handler.h"

#include "ash/login/resources/grit/ash_login_strings.h"
#include "components/login/localized_values_builder.h"
#include "components/user_manager/known_user.h"
#include "google_apis/gaia/gaia_auth_util.h"

namespace ash {

OfflineLoginScreenHandler::OfflineLoginScreenHandler()
    : BaseScreenHandler(kScreenId) {}

OfflineLoginScreenHandler::~OfflineLoginScreenHandler() = default;

void OfflineLoginScreenHandler::DeclareLocalizedValues(
    ::login::LocalizedValuesBuilder* builder) {
  builder->Add("offlineLoginEmail", IDS_OFFLINE_LOGIN_EMAIL);
  builder->Add("offlineLoginPassword", IDS_OFFLINE_LOGIN_PASSWORD);
  builder->Add("offlineLoginPin", IDS_OFFLINE_LOGIN_PIN);
  builder->Add("offlineLoginInvalidEmail", IDS_OFFLINE_LOGIN_INVALID_EMAIL);
  builder->Add("offlineLoginInvalidPassword",
               IDS_OFFLINE_LOGIN_INVALID_PASSWORD);
  builder->Add("offlineLoginInvalidPin", IDS_OFFLINE_LOGIN_INVALID_PIN);
  builder->Add("offlineLoginNextBtn", IDS_OFFLINE_LOGIN_NEXT_BUTTON_TEXT);
  builder->Add("offlineLoginForgotPasswordBtn",
               IDS_OFFLINE_LOGIN_FORGOT_PASSWORD_BUTTON_TEXT);
  builder->Add("offlineLoginForgotPasswordDlg",
               IDS_OFFLINE_LOGIN_FORGOT_PASSWORD_DIALOG_TEXT);
  builder->Add("offlineLoginCloseBtn", IDS_OFFLINE_LOGIN_CLOSE_BUTTON_TEXT);
  builder->Add("offlineLoginWarningTitle", IDS_OFFLINE_LOGIN_WARNING_TITLE);
  builder->Add("offlineLoginWarning", IDS_OFFLINE_LOGIN_WARNING_TEXT);
  builder->Add("offlineLoginOkBtn", IDS_OFFLINE_LOGIN_OK_BUTTON_TEXT);
}

void OfflineLoginScreenHandler::Show(base::DictValue params) {
  ShowInWebUI(std::move(params));
}

void OfflineLoginScreenHandler::Hide() {
  Reset();
}

void OfflineLoginScreenHandler::Reset() {
  CallExternalAPI("reset");
}

void OfflineLoginScreenHandler::ShowPasswordPage(bool authenticate_by_pin) {
  CallExternalAPI("proceedToPasswordPage", authenticate_by_pin);
}

void OfflineLoginScreenHandler::ShowOnlineRequiredDialog() {
  CallExternalAPI("showOnlineRequiredDialog");
}

void OfflineLoginScreenHandler::ShowPasswordMismatchMessage() {
  CallExternalAPI("showPasswordMismatchMessage");
}

base::WeakPtr<OfflineLoginView> OfflineLoginScreenHandler::AsWeakPtr() {
  return weak_ptr_factory_.GetWeakPtr();
}

}  // namespace ash
