Commit e2fd4f2d authored by Danila Kuzmin's avatar Danila Kuzmin Committed by Commit Bot

cros oobe: Migrate wrong-hwid screen to polymer using oobe-dialog

Bug: 1007874
Change-Id: I501a90c677b05c87053a42920ed7eabdd9491752
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2230627
Commit-Queue: Danila Kuzmin <dkuzmin@google.com>
Reviewed-by: default avatarDenis Kuznetsov [CET] <antrim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#779967}
parent df7b50b8
...@@ -2191,7 +2191,7 @@ ...@@ -2191,7 +2191,7 @@
A factory error has been detected A factory error has been detected
</message> </message>
<message name="IDS_WRONG_HWID_SCREEN_MESSAGE_FIRST_PART" desc="Warning message shown on screen notifying about malformed hardware ID. First paragraph."> <message name="IDS_WRONG_HWID_SCREEN_MESSAGE_FIRST_PART" desc="Warning message shown on screen notifying about malformed hardware ID. First paragraph.">
Unfortunately, your computer is configured with a malformed hardware ID. This prevents Chrome OS from updating with the latest security fixes and your computer <ph name="BEGIN_BOLD">$1</ph>may be vulnerable to malicious attacks<ph name="END_BOLD">$2</ph>. Unfortunately, your computer is configured with a malformed hardware ID. This prevents Chrome OS from updating with the latest security fixes and your computer <ph name="BEGIN_BOLD">&lt;b&gt;</ph>may be vulnerable to malicious attacks<ph name="END_BOLD">&lt;/b&gt;</ph>.
</message> </message>
<message name="IDS_WRONG_HWID_SCREEN_MESSAGE_SECOND_PART" desc="Warning message shown on screen notifying about malformed hardware ID. Second paragraph."> <message name="IDS_WRONG_HWID_SCREEN_MESSAGE_SECOND_PART" desc="Warning message shown on screen notifying about malformed hardware ID. Second paragraph.">
Please contact your hardware manufacturer immediately to send your computer to a repair facility. Please contact your hardware manufacturer immediately to send your computer to a repair facility.
......
...@@ -150,8 +150,10 @@ bool IsHWIDCorrect(const std::string& hwid) { ...@@ -150,8 +150,10 @@ bool IsHWIDCorrect(const std::string& hwid) {
} }
bool IsMachineHWIDCorrect() { bool IsMachineHWIDCorrect() {
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
if (cmd_line->HasSwitch(chromeos::switches::kForceHWIDCheckFailureForTest))
return false;
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
if (cmd_line->HasSwitch(::switches::kTestType)) if (cmd_line->HasSwitch(::switches::kTestType))
return true; return true;
if (!base::SysInfo::IsRunningOnChromeOS()) if (!base::SysInfo::IsRunningOnChromeOS())
......
...@@ -13,16 +13,25 @@ MockWrongHWIDScreen::MockWrongHWIDScreen( ...@@ -13,16 +13,25 @@ MockWrongHWIDScreen::MockWrongHWIDScreen(
MockWrongHWIDScreen::~MockWrongHWIDScreen() {} MockWrongHWIDScreen::~MockWrongHWIDScreen() {}
void MockWrongHWIDScreen::ExitScreen() {
WrongHWIDScreen::OnExit();
}
MockWrongHWIDScreenView::MockWrongHWIDScreenView() = default; MockWrongHWIDScreenView::MockWrongHWIDScreenView() = default;
MockWrongHWIDScreenView::~MockWrongHWIDScreenView() { MockWrongHWIDScreenView::~MockWrongHWIDScreenView() {
if (delegate_) if (screen_)
delegate_->OnViewDestroyed(this); screen_->OnViewDestroyed(this);
}
void MockWrongHWIDScreenView::Bind(WrongHWIDScreen* screen) {
screen_ = screen;
MockBind(screen_);
} }
void MockWrongHWIDScreenView::SetDelegate(WrongHWIDScreen* delegate) { void MockWrongHWIDScreenView::Unbind() {
delegate_ = delegate; screen_ = nullptr;
MockSetDelegate(delegate); MockUnbind();
} }
} // namespace chromeos } // namespace chromeos
...@@ -19,6 +19,8 @@ class MockWrongHWIDScreen : public WrongHWIDScreen { ...@@ -19,6 +19,8 @@ class MockWrongHWIDScreen : public WrongHWIDScreen {
MOCK_METHOD0(ShowImpl, void()); MOCK_METHOD0(ShowImpl, void());
MOCK_METHOD0(HideImpl, void()); MOCK_METHOD0(HideImpl, void());
void ExitScreen();
}; };
class MockWrongHWIDScreenView : public WrongHWIDScreenView { class MockWrongHWIDScreenView : public WrongHWIDScreenView {
...@@ -26,14 +28,16 @@ class MockWrongHWIDScreenView : public WrongHWIDScreenView { ...@@ -26,14 +28,16 @@ class MockWrongHWIDScreenView : public WrongHWIDScreenView {
MockWrongHWIDScreenView(); MockWrongHWIDScreenView();
~MockWrongHWIDScreenView() override; ~MockWrongHWIDScreenView() override;
void SetDelegate(WrongHWIDScreen* delegate) override; void Bind(WrongHWIDScreen* screen) override;
void Unbind() override;
MOCK_METHOD0(Show, void()); MOCK_METHOD0(Show, void());
MOCK_METHOD0(Hide, void()); MOCK_METHOD0(Hide, void());
MOCK_METHOD1(MockSetDelegate, void(WrongHWIDScreen*)); MOCK_METHOD1(MockBind, void(WrongHWIDScreen*));
MOCK_METHOD0(MockUnbind, void());
private: private:
WrongHWIDScreen* delegate_ = nullptr; WrongHWIDScreen* screen_ = nullptr;
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
#include "chrome/browser/chromeos/login/wizard_controller.h" #include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h"
namespace {
constexpr char kUserActionSkip[] = "skip-screen";
} // namespace
namespace chromeos { namespace chromeos {
WrongHWIDScreen::WrongHWIDScreen(WrongHWIDScreenView* view, WrongHWIDScreen::WrongHWIDScreen(WrongHWIDScreenView* view,
...@@ -17,12 +21,12 @@ WrongHWIDScreen::WrongHWIDScreen(WrongHWIDScreenView* view, ...@@ -17,12 +21,12 @@ WrongHWIDScreen::WrongHWIDScreen(WrongHWIDScreenView* view,
exit_callback_(exit_callback) { exit_callback_(exit_callback) {
DCHECK(view_); DCHECK(view_);
if (view_) if (view_)
view_->SetDelegate(this); view_->Bind(this);
} }
WrongHWIDScreen::~WrongHWIDScreen() { WrongHWIDScreen::~WrongHWIDScreen() {
if (view_) if (view_)
view_->SetDelegate(nullptr); view_->Unbind();
} }
void WrongHWIDScreen::OnExit() { void WrongHWIDScreen::OnExit() {
...@@ -46,4 +50,12 @@ void WrongHWIDScreen::HideImpl() { ...@@ -46,4 +50,12 @@ void WrongHWIDScreen::HideImpl() {
view_->Hide(); view_->Hide();
} }
void WrongHWIDScreen::OnUserAction(const std::string& action_id) {
if (action_id == kUserActionSkip) {
OnExit();
} else {
BaseScreen::OnUserAction(action_id);
}
}
} // namespace chromeos } // namespace chromeos
...@@ -24,16 +24,26 @@ class WrongHWIDScreen : public BaseScreen { ...@@ -24,16 +24,26 @@ class WrongHWIDScreen : public BaseScreen {
const base::RepeatingClosure& exit_callback); const base::RepeatingClosure& exit_callback);
~WrongHWIDScreen() override; ~WrongHWIDScreen() override;
// Called when screen is exited.
void OnExit();
// This method is called, when view is being destroyed. Note, if Delegate // This method is called, when view is being destroyed. Note, if Delegate
// is destroyed earlier then it has to call SetDelegate(NULL). // is destroyed earlier then it has to call SetDelegate(NULL).
void OnViewDestroyed(WrongHWIDScreenView* view); void OnViewDestroyed(WrongHWIDScreenView* view);
void OnExit();
void set_exit_callback_for_testing(
const base::RepeatingClosure& exit_callback) {
exit_callback_ = exit_callback;
}
const base::RepeatingClosure& get_exit_callback_for_testing() {
return exit_callback_;
}
private: private:
// BaseScreen implementation: // BaseScreen implementation:
void ShowImpl() override; void ShowImpl() override;
void HideImpl() override; void HideImpl() override;
void OnUserAction(const std::string& action_id) override;
WrongHWIDScreenView* view_; WrongHWIDScreenView* view_;
base::RepeatingClosure exit_callback_; base::RepeatingClosure exit_callback_;
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h"
#include "chrome/browser/chromeos/login/oobe_screen.h"
#include "chrome/browser/chromeos/login/test/js_checker.h"
#include "chrome/browser/chromeos/login/test/oobe_base_test.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
#include "chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h"
#include "chromeos/constants/chromeos_switches.h"
#include "content/public/test/browser_test.h"
namespace chromeos {
class WrongHWIDScreenTest : public OobeBaseTest {
public:
WrongHWIDScreenTest() = default;
~WrongHWIDScreenTest() override = default;
void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(switches::kForceHWIDCheckFailureForTest);
OobeBaseTest::SetUpCommandLine(command_line);
}
};
IN_PROC_BROWSER_TEST_F(WrongHWIDScreenTest, BasicFlow) {
OobeScreenWaiter(WrongHWIDScreenView::kScreenId).Wait();
test::OobeJS().TapOnPath({"wrong-hwid", "skipButton"});
OobeScreenExitWaiter(WrongHWIDScreenView::kScreenId).Wait();
}
} // namespace chromeos
...@@ -417,8 +417,9 @@ void WizardController::Init(OobeScreenId first_screen) { ...@@ -417,8 +417,9 @@ void WizardController::Init(OobeScreenId first_screen) {
AdvanceToScreen(first_screen_); AdvanceToScreen(first_screen_);
if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() && if (!IsMachineHWIDCorrect() && !StartupUtils::IsDeviceRegistered() &&
first_screen_ == OobeScreen::SCREEN_UNKNOWN) first_screen_ == OobeScreen::SCREEN_UNKNOWN) {
ShowWrongHWIDScreen(); ShowWrongHWIDScreen();
}
if (base::CommandLine::ForCurrentProcess()->HasSwitch( if (base::CommandLine::ForCurrentProcess()->HasSwitch(
chromeos::switches::kOobeSkipToLogin)) { chromeos::switches::kOobeSkipToLogin)) {
...@@ -807,12 +808,7 @@ void WizardController::OnScreenExit(OobeScreenId screen, ...@@ -807,12 +808,7 @@ void WizardController::OnScreenExit(OobeScreenId screen,
// WizardController, ExitHandlers: // WizardController, ExitHandlers:
void WizardController::OnWrongHWIDScreenExit() { void WizardController::OnWrongHWIDScreenExit() {
OnScreenExit(WrongHWIDScreenView::kScreenId, kDefaultExitReason); OnScreenExit(WrongHWIDScreenView::kScreenId, kDefaultExitReason);
OnDeviceModificationCanceled();
if (previous_screen_) {
SetCurrentScreen(previous_screen_);
} else {
ShowPackagedLicenseScreen();
}
} }
void WizardController::OnHidDetectionScreenExit() { void WizardController::OnHidDetectionScreenExit() {
...@@ -1230,9 +1226,6 @@ void WizardController::OnDeviceModificationCanceled() { ...@@ -1230,9 +1226,6 @@ void WizardController::OnDeviceModificationCanceled() {
if (previous_screen_) { if (previous_screen_) {
SetCurrentScreen(previous_screen_); SetCurrentScreen(previous_screen_);
} else { } else {
if (current_screen_)
current_screen_->Hide();
ShowPackagedLicenseScreen(); ShowPackagedLicenseScreen();
} }
} }
......
...@@ -566,7 +566,7 @@ class WizardControllerFlowTest : public WizardControllerTest { ...@@ -566,7 +566,7 @@ class WizardControllerFlowTest : public WizardControllerTest {
base::Unretained(wizard_controller)))); base::Unretained(wizard_controller))));
mock_wrong_hwid_screen_view_ = std::make_unique<MockWrongHWIDScreenView>(); mock_wrong_hwid_screen_view_ = std::make_unique<MockWrongHWIDScreenView>();
ExpectSetDelegate(mock_wrong_hwid_screen_view_.get()); ExpectBindUnbind(mock_wrong_hwid_screen_view_.get());
mock_wrong_hwid_screen_ = mock_wrong_hwid_screen_ =
MockScreenExpectLifecycle(std::make_unique<MockWrongHWIDScreen>( MockScreenExpectLifecycle(std::make_unique<MockWrongHWIDScreen>(
mock_wrong_hwid_screen_view_.get(), mock_wrong_hwid_screen_view_.get(),
...@@ -974,7 +974,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ...@@ -974,7 +974,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest,
CheckCurrentScreen(WrongHWIDScreenView::kScreenId); CheckCurrentScreen(WrongHWIDScreenView::kScreenId);
// Verify and clear all expectations on the mock wrong hid screen before // Verify and clear all expectations on the mock wrong hwid screen before
// setting new ones. // setting new ones.
testing::Mock::VerifyAndClearExpectations(mock_wrong_hwid_screen_); testing::Mock::VerifyAndClearExpectations(mock_wrong_hwid_screen_);
...@@ -2918,8 +2918,6 @@ IN_PROC_BROWSER_TEST_F(WizardControllerOobeConfigurationTest, ...@@ -2918,8 +2918,6 @@ IN_PROC_BROWSER_TEST_F(WizardControllerOobeConfigurationTest,
EXPECT_FALSE(configuration->DictEmpty()); EXPECT_FALSE(configuration->DictEmpty());
} }
// TODO(dzhioev): Add test emulating device with wrong HWID.
// TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571
// TODO(merkulova): Add tests for bluetooth HID detection screen variations when // TODO(merkulova): Add tests for bluetooth HID detection screen variations when
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<link rel="stylesheet" href="oobe_screen_supervision_transition.css"> <link rel="stylesheet" href="oobe_screen_supervision_transition.css">
<link rel="stylesheet" href="screen_app_launch_splash.css"> <link rel="stylesheet" href="screen_app_launch_splash.css">
<link rel="stylesheet" href="screen_error_message.css"> <link rel="stylesheet" href="screen_error_message.css">
<link rel="stylesheet" href="screen_wrong_hwid.css">
<link rel="stylesheet" href="screen_fatal_error.css"> <link rel="stylesheet" href="screen_fatal_error.css">
<link rel="stylesheet" href="screen_active_directory_password_change.css"> <link rel="stylesheet" href="screen_active_directory_password_change.css">
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
// <include src="screen_app_launch_splash.js"> // <include src="screen_app_launch_splash.js">
// <include src="screen_arc_terms_of_service.js"> // <include src="screen_arc_terms_of_service.js">
// <include src="screen_error_message.js"> // <include src="screen_error_message.js">
// <include src="screen_wrong_hwid.js">
// <include src="screen_fatal_error.js"> // <include src="screen_fatal_error.js">
// <include src="screen_active_directory_password_change.js"> // <include src="screen_active_directory_password_change.js">
// <include src="screen_encryption_migration.js"> // <include src="screen_encryption_migration.js">
...@@ -58,7 +57,6 @@ cr.define('cr.ui.Oobe', function() { ...@@ -58,7 +57,6 @@ cr.define('cr.ui.Oobe', function() {
*/ */
initialize() { initialize() {
cr.ui.login.DisplayManager.initialize(); cr.ui.login.DisplayManager.initialize();
login.WrongHWIDScreen.register();
login.AccountPickerScreen.register(); login.AccountPickerScreen.register();
login.AutolaunchScreen.register(); login.AutolaunchScreen.register();
login.ErrorMessageScreen.register(); login.ErrorMessageScreen.register();
......
...@@ -62,7 +62,6 @@ ...@@ -62,7 +62,6 @@
<link rel="stylesheet" href="screen_app_launch_splash.css"> <link rel="stylesheet" href="screen_app_launch_splash.css">
<link rel="stylesheet" href="screen_error_message.css"> <link rel="stylesheet" href="screen_error_message.css">
<link rel="stylesheet" href="screen_wrong_hwid.css">
<link rel="stylesheet" href="screen_fatal_error.css"> <link rel="stylesheet" href="screen_fatal_error.css">
<script src="chrome://oobe/keyboard_utils.js"></script> <script src="chrome://oobe/keyboard_utils.js"></script>
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
// <include src="screen_app_launch_splash.js"> // <include src="screen_app_launch_splash.js">
// <include src="screen_arc_terms_of_service.js"> // <include src="screen_arc_terms_of_service.js">
// <include src="screen_error_message.js"> // <include src="screen_error_message.js">
// <include src="screen_wrong_hwid.js">
// <include src="screen_fatal_error.js"> // <include src="screen_fatal_error.js">
// <include src="screen_sync_consent.js"> // <include src="screen_sync_consent.js">
// <include src="screen_app_downloading.js"> // <include src="screen_app_downloading.js">
...@@ -51,7 +50,6 @@ cr.define('cr.ui.Oobe', function() { ...@@ -51,7 +50,6 @@ cr.define('cr.ui.Oobe', function() {
*/ */
initialize() { initialize() {
cr.ui.login.DisplayManager.initialize(); cr.ui.login.DisplayManager.initialize();
login.WrongHWIDScreen.register();
login.EulaScreen.register(); login.EulaScreen.register();
login.AutoEnrollmentCheckScreen.register(); login.AutoEnrollmentCheckScreen.register();
login.EnableDebuggingScreen.register(); login.EnableDebuggingScreen.register();
......
/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* This is the stylesheet used by the wrong HWID screen. */
#wrong-hwid {
padding: 40px 17px 30px;
text-align: center;
width: 722px;
}
#wrong-hwid #wrong-hwid-message-header {
color: #606060;
font-size: 22px;
padding: 5px 40px 30px;
}
#wrong-hwid #wrong-hwid-icon {
height: 112px;
}
#wrong-hwid #wrong-hwid-message-content {
color: #606060;
font-size: 16px;
padding: 20px 40px 40px;
}
#skip-hwid-warning {
justify-content: center;
}
#skip-hwid-warning-link {
color: #8c8c8c;
font-size: 18px;
text-decoration: none;
}
<div class="step hidden" id="wrong-hwid" hidden> <!-- Copyright 2020 The Chromium Authors. All rights reserved.
<div class="step-contents"> Use of this source code is governed by a BSD-style license that can be
<div id="wrong-hwid-message"> found in the LICENSE file. -->
<div id="wrong-hwid-message-header" i18n-content="wrongHWIDScreenHeader">
<dom-module id="wrong-hwid">
<template>
<style include="oobe-dialog-host"></style>
<oobe-dialog role="dialog" has-buttons
title-key="wrongHWIDScreenHeader">
<hd-iron-icon slot="oobe-icon" class="warning"
icon1x="oobe-32:warning" icon2x="oobe-64:warning">
</hd-iron-icon>
<div slot="subtitle">
<p><html-echo content="[[formattedFirstPart_(locale)]]"></html-echo></p>
<p>[[i18nDynamic(locale, 'wrongHWIDMessageSecondPart')]]</p>
</div> </div>
<img id="wrong-hwid-icon" src="chrome://theme/IDR_RESET_WARNING"/> <div slot="bottom-buttons" class="layout horizontal end-justified">
<div id="wrong-hwid-message-content"></div> <oobe-text-button id="skipButton" inverse
text-key="wrongHWIDScreenSkipLink" on-tap="onSkip_">
</oobe-text-button>
</div> </div>
<div id="skip-hwid-warning" class="step-controls"> </oobe-dialog>
<a id="skip-hwid-warning-link" href="#" </template>
i18n-content="wrongHWIDScreenSkipLink"></a> </dom-module>
</div>
</div>
</div>
...@@ -6,14 +6,15 @@ ...@@ -6,14 +6,15 @@
* @fileoverview wrong HWID screen implementation. * @fileoverview wrong HWID screen implementation.
*/ */
login.createScreen('WrongHWIDScreen', 'wrong-hwid', function() { Polymer({
return { is: 'wrong-hwid',
/** @override */
decorate() { behaviors: [OobeI18nBehavior, OobeDialogHostBehavior, LoginScreenBehavior],
$('skip-hwid-warning-link').addEventListener('click', function(event) {
chrome.send('wrongHWIDOnSkip'); ready() {
this.initializeLoginScreen('WrongHWIDMessageScreen', {
resetAllowed: true,
}); });
this.updateLocalizedContent();
}, },
/** Initial UI State for screen */ /** Initial UI State for screen */
...@@ -21,15 +22,11 @@ login.createScreen('WrongHWIDScreen', 'wrong-hwid', function() { ...@@ -21,15 +22,11 @@ login.createScreen('WrongHWIDScreen', 'wrong-hwid', function() {
return OOBE_UI_STATE.WRONG_HWID_WARNING; return OOBE_UI_STATE.WRONG_HWID_WARNING;
}, },
/** onSkip_() {
* Updates localized content of the screen that is not updated via template. this.userActed('skip-screen');
*/ },
updateLocalizedContent() {
$('wrong-hwid-message-content').innerHTML = '<p>' + formattedFirstPart_(locale) {
loadTimeData.getStringF( return this.i18nAdvanced('wrongHWIDMessageFirstPart');
'wrongHWIDMessageFirstPart', '<strong>', '</strong>') + },
'</p><p>' + loadTimeData.getString('wrongHWIDMessageSecondPart') +
'</p>';
}
};
}); });
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
<include src="../gesture_navigation.html"> <include src="../gesture_navigation.html">
<include src="../screen_tpm_error.html"> <include src="../screen_tpm_error.html">
<include src="../device_disabled.html"> <include src="../device_disabled.html">
<include src="../screen_wrong_hwid.html">
<include src="components_[OOBE].html"> <include src="components_[OOBE].html">
......
...@@ -48,5 +48,6 @@ ...@@ -48,5 +48,6 @@
// <include src="../gesture_navigation.js"> // <include src="../gesture_navigation.js">
// <include src="../screen_tpm_error.js"> // <include src="../screen_tpm_error.js">
// <include src="../device_disabled.js"> // <include src="../device_disabled.js">
// <include src="../screen_wrong_hwid.js">
// <include src="components_[OOBE].js"> // <include src="components_[OOBE].js">
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</gaia-signin> </gaia-signin>
<tpm-error-message id="tpm-error-message" class="step faded hidden"> <tpm-error-message id="tpm-error-message" class="step faded hidden">
</tpm-error-message> </tpm-error-message>
<include src="../screen_wrong_hwid.html"> <wrong-hwid id="wrong-hwid" class="step hidden"></wrong-hwid>
<include src="../screen_app_launch_splash.html"> <include src="../screen_app_launch_splash.html">
<saml-confirm-password id="saml-confirm-password" class="step hidden" hidden> <saml-confirm-password id="saml-confirm-password" class="step hidden" hidden>
</saml-confirm-password> </saml-confirm-password>
......
...@@ -16,11 +16,12 @@ constexpr StaticOobeScreenId WrongHWIDScreenView::kScreenId; ...@@ -16,11 +16,12 @@ constexpr StaticOobeScreenId WrongHWIDScreenView::kScreenId;
WrongHWIDScreenHandler::WrongHWIDScreenHandler( WrongHWIDScreenHandler::WrongHWIDScreenHandler(
JSCallsContainer* js_calls_container) JSCallsContainer* js_calls_container)
: BaseScreenHandler(kScreenId, js_calls_container) { : BaseScreenHandler(kScreenId, js_calls_container) {
set_user_acted_method_path("login.WrongHWIDMessageScreen.userActed");
} }
WrongHWIDScreenHandler::~WrongHWIDScreenHandler() { WrongHWIDScreenHandler::~WrongHWIDScreenHandler() {
if (delegate_) if (screen_)
delegate_->OnViewDestroyed(this); screen_->OnViewDestroyed(this);
} }
void WrongHWIDScreenHandler::Show() { void WrongHWIDScreenHandler::Show() {
...@@ -34,10 +35,14 @@ void WrongHWIDScreenHandler::Show() { ...@@ -34,10 +35,14 @@ void WrongHWIDScreenHandler::Show() {
void WrongHWIDScreenHandler::Hide() { void WrongHWIDScreenHandler::Hide() {
} }
void WrongHWIDScreenHandler::SetDelegate(WrongHWIDScreen* delegate) { void WrongHWIDScreenHandler::Bind(WrongHWIDScreen* screen) {
delegate_ = delegate; screen_ = screen;
if (page_is_ready()) BaseScreenHandler::SetBaseScreen(screen_);
Initialize(); }
void WrongHWIDScreenHandler::Unbind() {
screen_ = nullptr;
BaseScreenHandler::SetBaseScreen(nullptr);
} }
void WrongHWIDScreenHandler::DeclareLocalizedValues( void WrongHWIDScreenHandler::DeclareLocalizedValues(
...@@ -52,22 +57,10 @@ void WrongHWIDScreenHandler::DeclareLocalizedValues( ...@@ -52,22 +57,10 @@ void WrongHWIDScreenHandler::DeclareLocalizedValues(
} }
void WrongHWIDScreenHandler::Initialize() { void WrongHWIDScreenHandler::Initialize() {
if (!page_is_ready() || !delegate_)
return;
if (show_on_init_) { if (show_on_init_) {
Show();
show_on_init_ = false; show_on_init_ = false;
Show();
} }
} }
void WrongHWIDScreenHandler::RegisterMessages() {
AddCallback("wrongHWIDOnSkip", &WrongHWIDScreenHandler::HandleOnSkip);
}
void WrongHWIDScreenHandler::HandleOnSkip() {
if (delegate_)
delegate_->OnExit();
}
} // namespace chromeos } // namespace chromeos
...@@ -23,7 +23,12 @@ class WrongHWIDScreenView { ...@@ -23,7 +23,12 @@ class WrongHWIDScreenView {
virtual void Show() = 0; virtual void Show() = 0;
virtual void Hide() = 0; virtual void Hide() = 0;
virtual void SetDelegate(WrongHWIDScreen* delegate) = 0;
// Binds |screen| to the view.
virtual void Bind(WrongHWIDScreen* screen) = 0;
// Unbinds the screen from the view.
virtual void Unbind() = 0;
}; };
// WebUI implementation of WrongHWIDScreenActor. // WebUI implementation of WrongHWIDScreenActor.
...@@ -35,24 +40,19 @@ class WrongHWIDScreenHandler : public WrongHWIDScreenView, ...@@ -35,24 +40,19 @@ class WrongHWIDScreenHandler : public WrongHWIDScreenView,
explicit WrongHWIDScreenHandler(JSCallsContainer* js_calls_container); explicit WrongHWIDScreenHandler(JSCallsContainer* js_calls_container);
~WrongHWIDScreenHandler() override; ~WrongHWIDScreenHandler() override;
private:
// WrongHWIDScreenActor implementation: // WrongHWIDScreenActor implementation:
void Show() override; void Show() override;
void Hide() override; void Hide() override;
void SetDelegate(WrongHWIDScreen* delegate) override; void Bind(WrongHWIDScreen* screen) override;
void Unbind() override;
// BaseScreenHandler implementation: // BaseScreenHandler implementation:
void DeclareLocalizedValues( void DeclareLocalizedValues(
::login::LocalizedValuesBuilder* builder) override; ::login::LocalizedValuesBuilder* builder) override;
void Initialize() override; void Initialize() override;
// WebUIMessageHandler implementation: WrongHWIDScreen* screen_ = nullptr;
void RegisterMessages() override;
private:
// JS messages handlers.
void HandleOnSkip();
WrongHWIDScreen* delegate_ = nullptr;
// Keeps whether screen should be shown right after initialization. // Keeps whether screen should be shown right after initialization.
bool show_on_init_ = false; bool show_on_init_ = false;
...@@ -63,4 +63,3 @@ class WrongHWIDScreenHandler : public WrongHWIDScreenView, ...@@ -63,4 +63,3 @@ class WrongHWIDScreenHandler : public WrongHWIDScreenView,
} // namespace chromeos } // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_WRONG_HWID_SCREEN_HANDLER_H_ #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_WRONG_HWID_SCREEN_HANDLER_H_
...@@ -2263,6 +2263,7 @@ if (!is_android) { ...@@ -2263,6 +2263,7 @@ if (!is_android) {
"../browser/chromeos/login/screens/update_screen_browsertest.cc", "../browser/chromeos/login/screens/update_screen_browsertest.cc",
"../browser/chromeos/login/screens/user_selection_screen_browsertest.cc", "../browser/chromeos/login/screens/user_selection_screen_browsertest.cc",
"../browser/chromeos/login/screens/welcome_screen_browsertest.cc", "../browser/chromeos/login/screens/welcome_screen_browsertest.cc",
"../browser/chromeos/login/screens/wrong_hwid_screen_browsertest.cc",
"../browser/chromeos/login/session/chrome_session_manager_browsertest.cc", "../browser/chromeos/login/session/chrome_session_manager_browsertest.cc",
"../browser/chromeos/login/session_login_browsertest.cc", "../browser/chromeos/login/session_login_browsertest.cc",
"../browser/chromeos/login/signin/device_id_browsertest.cc", "../browser/chromeos/login/signin/device_id_browsertest.cc",
......
...@@ -358,6 +358,11 @@ const char kForceFirstRunUI[] = "force-first-run-ui"; ...@@ -358,6 +358,11 @@ const char kForceFirstRunUI[] = "force-first-run-ui";
// for any type of user. Should be used only for testing. // for any type of user. Should be used only for testing.
const char kForceHappinessTrackingSystem[] = "force-happiness-tracking-system"; const char kForceHappinessTrackingSystem[] = "force-happiness-tracking-system";
// Forces Hardware ID check (happens during OOBE) to fail. Should be used only
// for testing.
const char kForceHWIDCheckFailureForTest[] =
"force-hwid-check-failure-for-test";
// Usually in browser tests the usual login manager bringup is skipped so that // Usually in browser tests the usual login manager bringup is skipped so that
// tests can change how it's brought up. This flag disables that. // tests can change how it's brought up. This flag disables that.
const char kForceLoginManagerInTests[] = "force-login-manager-in-tests"; const char kForceLoginManagerInTests[] = "force-login-manager-in-tests";
......
...@@ -150,6 +150,8 @@ COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kForceFirstRunUI[]; ...@@ -150,6 +150,8 @@ COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kForceFirstRunUI[];
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const char kForceHappinessTrackingSystem[]; extern const char kForceHappinessTrackingSystem[];
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const char kForceHWIDCheckFailureForTest[];
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const char kForceLoginManagerInTests[]; extern const char kForceLoginManagerInTests[];
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const char kForceSystemCompositorMode[]; extern const char kForceSystemCompositorMode[];
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
/** @const */ var SCREEN_KIOSK_ENABLE = 'kiosk-enable'; /** @const */ var SCREEN_KIOSK_ENABLE = 'kiosk-enable';
/** @const */ var SCREEN_TERMS_OF_SERVICE = 'terms-of-service'; /** @const */ var SCREEN_TERMS_OF_SERVICE = 'terms-of-service';
/** @const */ var SCREEN_ARC_TERMS_OF_SERVICE = 'arc-tos'; /** @const */ var SCREEN_ARC_TERMS_OF_SERVICE = 'arc-tos';
/** @const */ var SCREEN_WRONG_HWID = 'wrong-hwid';
/** @const */ var SCREEN_DEVICE_DISABLED = 'device-disabled'; /** @const */ var SCREEN_DEVICE_DISABLED = 'device-disabled';
/** @const */ var SCREEN_UPDATE_REQUIRED = 'update-required'; /** @const */ var SCREEN_UPDATE_REQUIRED = 'update-required';
/** @const */ var SCREEN_ACTIVE_DIRECTORY_PASSWORD_CHANGE = /** @const */ var SCREEN_ACTIVE_DIRECTORY_PASSWORD_CHANGE =
...@@ -102,7 +101,6 @@ cr.define('cr.ui.login', function() { ...@@ -102,7 +101,6 @@ cr.define('cr.ui.login', function() {
SCREEN_ERROR_MESSAGE, SCREEN_ERROR_MESSAGE,
SCREEN_PASSWORD_CHANGED, SCREEN_PASSWORD_CHANGED,
SCREEN_ARC_TERMS_OF_SERVICE, SCREEN_ARC_TERMS_OF_SERVICE,
SCREEN_WRONG_HWID,
SCREEN_CONFIRM_PASSWORD, SCREEN_CONFIRM_PASSWORD,
SCREEN_UPDATE_REQUIRED, SCREEN_UPDATE_REQUIRED,
SCREEN_FATAL_ERROR, SCREEN_FATAL_ERROR,
......
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