mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-09 15:00:58 +00:00
fix(core/ui): minor visual tweaks
- centered title for coinjoin loader - make device label bold on label confirmation screen [no changelog]
This commit is contained in:
parent
312f6899c7
commit
3a5fdfedcc
@ -90,7 +90,7 @@
|
|||||||
#define MICROPY_PY_DELATTR_SETATTR (0)
|
#define MICROPY_PY_DELATTR_SETATTR (0)
|
||||||
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
|
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
|
||||||
#define MICROPY_PY_BUILTINS_STR_CENTER (1)
|
#define MICROPY_PY_BUILTINS_STR_CENTER (1)
|
||||||
#define MICROPY_PY_BUILTINS_STR_PARTITION (0)
|
#define MICROPY_PY_BUILTINS_STR_PARTITION (1)
|
||||||
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0)
|
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0)
|
||||||
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
|
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
|
||||||
#define MICROPY_PY_BUILTINS_FROZENSET (0)
|
#define MICROPY_PY_BUILTINS_FROZENSET (0)
|
||||||
|
@ -37,6 +37,7 @@ static void _librust_qstrs(void) {
|
|||||||
MP_QSTR_confirm_address;
|
MP_QSTR_confirm_address;
|
||||||
MP_QSTR_confirm_blob;
|
MP_QSTR_confirm_blob;
|
||||||
MP_QSTR_confirm_coinjoin;
|
MP_QSTR_confirm_coinjoin;
|
||||||
|
MP_QSTR_confirm_emphasized;
|
||||||
MP_QSTR_confirm_fido;
|
MP_QSTR_confirm_fido;
|
||||||
MP_QSTR_confirm_homescreen;
|
MP_QSTR_confirm_homescreen;
|
||||||
MP_QSTR_confirm_joint_total;
|
MP_QSTR_confirm_joint_total;
|
||||||
|
@ -60,7 +60,7 @@ where
|
|||||||
Self {
|
Self {
|
||||||
value: 0,
|
value: 0,
|
||||||
indeterminate,
|
indeterminate,
|
||||||
content: Frame::left_aligned(
|
content: Frame::centered(
|
||||||
theme::label_title(),
|
theme::label_title(),
|
||||||
"COINJOIN IN PROGRESS",
|
"COINJOIN IN PROGRESS",
|
||||||
Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner),
|
Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner),
|
||||||
|
@ -23,6 +23,7 @@ use crate::{
|
|||||||
painter,
|
painter,
|
||||||
placed::GridPlaced,
|
placed::GridPlaced,
|
||||||
text::{
|
text::{
|
||||||
|
op::OpTextLayout,
|
||||||
paragraphs::{
|
paragraphs::{
|
||||||
Checklist, Paragraph, ParagraphSource, ParagraphVecLong, ParagraphVecShort,
|
Checklist, Paragraph, ParagraphSource, ParagraphVecLong, ParagraphVecShort,
|
||||||
Paragraphs, VecExt,
|
Paragraphs, VecExt,
|
||||||
@ -270,6 +271,15 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T> ComponentMsgObj for FormattedText<T>
|
||||||
|
where
|
||||||
|
T: StringType + Clone,
|
||||||
|
{
|
||||||
|
fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> {
|
||||||
|
unreachable!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T> ComponentMsgObj for Checklist<T>
|
impl<T> ComponentMsgObj for Checklist<T>
|
||||||
where
|
where
|
||||||
T: ParagraphSource,
|
T: ParagraphSource,
|
||||||
@ -349,7 +359,7 @@ impl<T> ComponentMsgObj for (Timeout, T)
|
|||||||
where
|
where
|
||||||
T: Component<Msg = ()>,
|
T: Component<Msg = ()>,
|
||||||
{
|
{
|
||||||
fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> {
|
fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> {
|
||||||
Ok(CANCELLED.as_obj())
|
Ok(CANCELLED.as_obj())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -447,6 +457,47 @@ extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut M
|
|||||||
unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) }
|
unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj {
|
||||||
|
let block = move |_args: &[Obj], kwargs: &Map| {
|
||||||
|
let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?;
|
||||||
|
let verb: Option<StrBuffer> = kwargs
|
||||||
|
.get(Qstr::MP_QSTR_verb)
|
||||||
|
.unwrap_or_else(|_| Obj::const_none())
|
||||||
|
.try_into_option()?;
|
||||||
|
|
||||||
|
let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?;
|
||||||
|
let mut iter_buf = IterBuf::new();
|
||||||
|
let iter = Iter::try_from_obj_with_buf(items, &mut iter_buf)?;
|
||||||
|
let mut ops = OpTextLayout::new(theme::TEXT_NORMAL);
|
||||||
|
for item in iter {
|
||||||
|
if item.is_str() {
|
||||||
|
ops = ops.text_normal(item.try_into()?)
|
||||||
|
} else {
|
||||||
|
let [emphasis, text]: [Obj; 2] = iter_into_array(item)?;
|
||||||
|
let text: StrBuffer = text.try_into()?;
|
||||||
|
if emphasis.try_into()? {
|
||||||
|
ops = ops.text_demibold(text);
|
||||||
|
} else {
|
||||||
|
ops = ops.text_normal(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let buttons = Button::<StrBuffer>::cancel_confirm_text(None, verb);
|
||||||
|
let obj = LayoutObj::new(Frame::left_aligned(
|
||||||
|
theme::label_title(),
|
||||||
|
title,
|
||||||
|
SwipePage::new(
|
||||||
|
FormattedText::new(ops).vertically_aligned(geometry::Alignment::Center),
|
||||||
|
buttons,
|
||||||
|
theme::BG,
|
||||||
|
),
|
||||||
|
))?;
|
||||||
|
Ok(obj.into())
|
||||||
|
};
|
||||||
|
unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) }
|
||||||
|
}
|
||||||
|
|
||||||
struct ConfirmBlobParams {
|
struct ConfirmBlobParams {
|
||||||
title: StrBuffer,
|
title: StrBuffer,
|
||||||
subtitle: Option<StrBuffer>,
|
subtitle: Option<StrBuffer>,
|
||||||
@ -1596,6 +1647,15 @@ pub static mp_module_trezorui2: Module = obj_module! {
|
|||||||
/// """Confirm action."""
|
/// """Confirm action."""
|
||||||
Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(),
|
Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(),
|
||||||
|
|
||||||
|
/// def confirm_emphasized(
|
||||||
|
/// *,
|
||||||
|
/// title: str,
|
||||||
|
/// items: Iterable[str | tuple[bool, str]],
|
||||||
|
/// verb: str | None = None,
|
||||||
|
/// ) -> object:
|
||||||
|
/// """Confirm formatted text that has been pre-split in python. For tuples
|
||||||
|
/// the first component is a bool indicating whether this part is emphasized."""
|
||||||
|
Qstr::MP_QSTR_confirm_emphasized => obj_fn_kw!(0, new_confirm_emphasized).as_obj(),
|
||||||
|
|
||||||
/// def confirm_homescreen(
|
/// def confirm_homescreen(
|
||||||
/// *,
|
/// *,
|
||||||
@ -1685,7 +1745,7 @@ pub static mp_module_trezorui2: Module = obj_module! {
|
|||||||
/// def confirm_total(
|
/// def confirm_total(
|
||||||
/// *,
|
/// *,
|
||||||
/// title: str,
|
/// title: str,
|
||||||
/// items: List[Tuple[str, str]],
|
/// items: list[tuple[str, str]],
|
||||||
/// info_button: bool = False,
|
/// info_button: bool = False,
|
||||||
/// ) -> object:
|
/// ) -> object:
|
||||||
/// """Transaction summary. Always hold to confirm."""
|
/// """Transaction summary. Always hold to confirm."""
|
||||||
@ -1787,7 +1847,7 @@ pub static mp_module_trezorui2: Module = obj_module! {
|
|||||||
/// title: str,
|
/// title: str,
|
||||||
/// button: str,
|
/// button: str,
|
||||||
/// info_button: str,
|
/// info_button: str,
|
||||||
/// items: Iterable[Tuple[int, str]],
|
/// items: Iterable[tuple[int, str]],
|
||||||
/// ) -> object:
|
/// ) -> object:
|
||||||
/// """Confirm given items but with third button. Always single page
|
/// """Confirm given items but with third button. Always single page
|
||||||
/// without scrolling."""
|
/// without scrolling."""
|
||||||
@ -1797,7 +1857,7 @@ pub static mp_module_trezorui2: Module = obj_module! {
|
|||||||
/// *,
|
/// *,
|
||||||
/// title: str,
|
/// title: str,
|
||||||
/// button: str,
|
/// button: str,
|
||||||
/// items: Iterable[Tuple[int, str]],
|
/// items: Iterable[tuple[int, str]],
|
||||||
/// ) -> object:
|
/// ) -> object:
|
||||||
/// """Confirm long content with the possibility to go back from any page.
|
/// """Confirm long content with the possibility to go back from any page.
|
||||||
/// Meant to be used with confirm_with_info."""
|
/// Meant to be used with confirm_with_info."""
|
||||||
|
@ -98,7 +98,7 @@
|
|||||||
#define MICROPY_PY_DELATTR_SETATTR (0)
|
#define MICROPY_PY_DELATTR_SETATTR (0)
|
||||||
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
|
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
|
||||||
#define MICROPY_PY_BUILTINS_STR_CENTER (1)
|
#define MICROPY_PY_BUILTINS_STR_CENTER (1)
|
||||||
#define MICROPY_PY_BUILTINS_STR_PARTITION (0)
|
#define MICROPY_PY_BUILTINS_STR_PARTITION (1)
|
||||||
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0)
|
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0)
|
||||||
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
|
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
|
||||||
#define MICROPY_PY_BUILTINS_FROZENSET (0)
|
#define MICROPY_PY_BUILTINS_FROZENSET (0)
|
||||||
|
@ -400,6 +400,17 @@ def confirm_action(
|
|||||||
"""Confirm action."""
|
"""Confirm action."""
|
||||||
|
|
||||||
|
|
||||||
|
# rust/src/ui/model_tt/layout.rs
|
||||||
|
def confirm_emphasized(
|
||||||
|
*,
|
||||||
|
title: str,
|
||||||
|
items: Iterable[str | tuple[bool, str]],
|
||||||
|
verb: str | None = None,
|
||||||
|
) -> object:
|
||||||
|
"""Confirm formatted text that has been pre-split in python. For tuples
|
||||||
|
the first component is a bool indicating whether this part is emphasized."""
|
||||||
|
|
||||||
|
|
||||||
# rust/src/ui/model_tt/layout.rs
|
# rust/src/ui/model_tt/layout.rs
|
||||||
def confirm_homescreen(
|
def confirm_homescreen(
|
||||||
*,
|
*,
|
||||||
@ -497,7 +508,7 @@ def confirm_value(
|
|||||||
def confirm_total(
|
def confirm_total(
|
||||||
*,
|
*,
|
||||||
title: str,
|
title: str,
|
||||||
items: List[Tuple[str, str]],
|
items: list[tuple[str, str]],
|
||||||
info_button: bool = False,
|
info_button: bool = False,
|
||||||
) -> object:
|
) -> object:
|
||||||
"""Transaction summary. Always hold to confirm."""
|
"""Transaction summary. Always hold to confirm."""
|
||||||
@ -608,7 +619,7 @@ def confirm_with_info(
|
|||||||
title: str,
|
title: str,
|
||||||
button: str,
|
button: str,
|
||||||
info_button: str,
|
info_button: str,
|
||||||
items: Iterable[Tuple[int, str]],
|
items: Iterable[tuple[int, str]],
|
||||||
) -> object:
|
) -> object:
|
||||||
"""Confirm given items but with third button. Always single page
|
"""Confirm given items but with third button. Always single page
|
||||||
without scrolling."""
|
without scrolling."""
|
||||||
@ -619,7 +630,7 @@ def confirm_more(
|
|||||||
*,
|
*,
|
||||||
title: str,
|
title: str,
|
||||||
button: str,
|
button: str,
|
||||||
items: Iterable[Tuple[int, str]],
|
items: Iterable[tuple[int, str]],
|
||||||
) -> object:
|
) -> object:
|
||||||
"""Confirm long content with the possibility to go back from any page.
|
"""Confirm long content with the possibility to go back from any page.
|
||||||
Meant to be used with confirm_with_info."""
|
Meant to be used with confirm_with_info."""
|
||||||
|
@ -2,7 +2,7 @@ from typing import TYPE_CHECKING
|
|||||||
|
|
||||||
from trezor import utils
|
from trezor import utils
|
||||||
from trezor.enums import ButtonRequestType
|
from trezor.enums import ButtonRequestType
|
||||||
from trezor.ui.layouts import confirm_action, confirm_homescreen
|
from trezor.ui.layouts import confirm_action, confirm_homescreen, confirm_single
|
||||||
from trezor.wire import DataError
|
from trezor.wire import DataError
|
||||||
|
|
||||||
import trezorui2
|
import trezorui2
|
||||||
@ -172,13 +172,13 @@ async def _require_confirm_change_homescreen(
|
|||||||
|
|
||||||
|
|
||||||
async def _require_confirm_change_label(ctx: GenericContext, label: str) -> None:
|
async def _require_confirm_change_label(ctx: GenericContext, label: str) -> None:
|
||||||
await confirm_action(
|
await confirm_single(
|
||||||
ctx,
|
ctx,
|
||||||
"set_label",
|
"set_label",
|
||||||
"Device name",
|
"Device name",
|
||||||
description="Do you want to change device name to {}?",
|
description="Change device name to {}?",
|
||||||
description_param=label,
|
description_param=label,
|
||||||
br_code=BRT_PROTECT_CALL,
|
verb="Change",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -363,6 +363,26 @@ async def confirm_action(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def confirm_single(
|
||||||
|
ctx: GenericContext,
|
||||||
|
br_type: str,
|
||||||
|
title: str,
|
||||||
|
description: str,
|
||||||
|
description_param: str | None = None,
|
||||||
|
verb: str | None = None,
|
||||||
|
) -> None:
|
||||||
|
description_param = description_param or ""
|
||||||
|
begin, _separator, end = description.partition("{}")
|
||||||
|
await confirm_action(
|
||||||
|
ctx,
|
||||||
|
br_type,
|
||||||
|
title,
|
||||||
|
description=begin + description_param + end,
|
||||||
|
verb=verb or "CONFIRM",
|
||||||
|
br_code=ButtonRequestType.ProtectCall,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def confirm_reset_device(
|
async def confirm_reset_device(
|
||||||
ctx: GenericContext,
|
ctx: GenericContext,
|
||||||
title: str,
|
title: str,
|
||||||
|
@ -278,6 +278,34 @@ async def confirm_action(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def confirm_single(
|
||||||
|
ctx: GenericContext,
|
||||||
|
br_type: str,
|
||||||
|
title: str,
|
||||||
|
description: str,
|
||||||
|
description_param: str | None = None,
|
||||||
|
verb: str | None = None,
|
||||||
|
) -> None:
|
||||||
|
if verb is not None:
|
||||||
|
verb = verb.upper()
|
||||||
|
description_param = description_param or ""
|
||||||
|
begin, _separator, end = description.partition("{}")
|
||||||
|
await raise_if_not_confirmed(
|
||||||
|
interact(
|
||||||
|
ctx,
|
||||||
|
RustLayout(
|
||||||
|
trezorui2.confirm_emphasized(
|
||||||
|
title=title.upper(),
|
||||||
|
items=(begin, (True, description_param), end),
|
||||||
|
verb=verb,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
br_type,
|
||||||
|
ButtonRequestType.ProtectCall,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def confirm_reset_device(
|
async def confirm_reset_device(
|
||||||
ctx: GenericContext, title: str, recovery: bool = False
|
ctx: GenericContext, title: str, recovery: bool = False
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -1756,7 +1756,7 @@
|
|||||||
"TR_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "132313d9d2e89b6d1361d2c02ca8a9572a521bbfaf6453e49b991954923413f2",
|
"TR_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "132313d9d2e89b6d1361d2c02ca8a9572a521bbfaf6453e49b991954923413f2",
|
||||||
"TR_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b654071bf9d7faff8b7f283150804d712400f9e5a8217bcb89fb76f83dc467d1",
|
"TR_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b654071bf9d7faff8b7f283150804d712400f9e5a8217bcb89fb76f83dc467d1",
|
||||||
"TR_test_autolock.py::test_autolock_cancels_ui": "24adeb92c6c701075980bd0f8b08cae8decb48aea67e81b0c880f23278a5d942",
|
"TR_test_autolock.py::test_autolock_cancels_ui": "24adeb92c6c701075980bd0f8b08cae8decb48aea67e81b0c880f23278a5d942",
|
||||||
"TR_test_autolock.py::test_autolock_default_value": "dd186ea42e0ea51696ff28b2cf9f58cce6efa2d8e84a68e95047cbef9e9f835a",
|
"TR_test_autolock.py::test_autolock_default_value": "5d0b75910b0934f9739c6ff0c058ab616219db27c008a0de1f36a236cf0a73ba",
|
||||||
"TR_test_autolock.py::test_autolock_ignores_getaddress": "87f75b4035574d1f982ca2bb834c298c81f9cd94baeeb7b44722662e37602dbf",
|
"TR_test_autolock.py::test_autolock_ignores_getaddress": "87f75b4035574d1f982ca2bb834c298c81f9cd94baeeb7b44722662e37602dbf",
|
||||||
"TR_test_autolock.py::test_autolock_ignores_initialize": "87f75b4035574d1f982ca2bb834c298c81f9cd94baeeb7b44722662e37602dbf",
|
"TR_test_autolock.py::test_autolock_ignores_initialize": "87f75b4035574d1f982ca2bb834c298c81f9cd94baeeb7b44722662e37602dbf",
|
||||||
"TR_test_basic.py::test_device_id_different": "6ed1584443961ba00a4759d91f3b13a9ffa93fce1e2568744e153aeb0765dd0d",
|
"TR_test_basic.py::test_device_id_different": "6ed1584443961ba00a4759d91f3b13a9ffa93fce1e2568744e153aeb0765dd0d",
|
||||||
@ -1774,16 +1774,16 @@
|
|||||||
"TR_test_firmware_hash.py::test_firmware_hash_emu": "5c20e27dcba8ba5e74512a5b6c4517e07c29c3c2f622fc4b9532eddbf82c6ac9",
|
"TR_test_firmware_hash.py::test_firmware_hash_emu": "5c20e27dcba8ba5e74512a5b6c4517e07c29c3c2f622fc4b9532eddbf82c6ac9",
|
||||||
"TR_test_firmware_hash.py::test_firmware_hash_hw": "57e3aa5a6a55926dcc95ca290bf1b2826bbc86b535e0baa162f7c79b1784c96b",
|
"TR_test_firmware_hash.py::test_firmware_hash_hw": "57e3aa5a6a55926dcc95ca290bf1b2826bbc86b535e0baa162f7c79b1784c96b",
|
||||||
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "70c2479c43f0d902ce235aa134f990f798cd677dca298b0898d1676d1cd225f6",
|
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "70c2479c43f0d902ce235aa134f990f798cd677dca298b0898d1676d1cd225f6",
|
||||||
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "9d8c753c0e0459d9368c87025b1d008d8f5f66d0b018dfa6d7aaa13de28b6665",
|
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "d5375706916cb55e945182ffb12b4d3ead018216ed155572296ca6e9e9a8d9a7",
|
||||||
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5a31233b5dd5d5fed19f06c2ac52f7d93e6b19c6013d6d752ce82f56244503fd",
|
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5a31233b5dd5d5fed19f06c2ac52f7d93e6b19c6013d6d752ce82f56244503fd",
|
||||||
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "4af2680f5abfe0d5f173841f5431c3dc5dfedb40af8c205b3f11615e89ca9fac",
|
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "4af2680f5abfe0d5f173841f5431c3dc5dfedb40af8c205b3f11615e89ca9fac",
|
||||||
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "4af2680f5abfe0d5f173841f5431c3dc5dfedb40af8c205b3f11615e89ca9fac",
|
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "4af2680f5abfe0d5f173841f5431c3dc5dfedb40af8c205b3f11615e89ca9fac",
|
||||||
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "4af2680f5abfe0d5f173841f5431c3dc5dfedb40af8c205b3f11615e89ca9fac",
|
"TR_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "4af2680f5abfe0d5f173841f5431c3dc5dfedb40af8c205b3f11615e89ca9fac",
|
||||||
"TR_test_msg_applysettings.py::test_apply_settings": "033ea55744ae6e1f58f316026611b4688dae4185a1a6d9c90e74ccc14ecd6e8a",
|
"TR_test_msg_applysettings.py::test_apply_settings": "b6103ad64a5b73749363d2d981a50439c654e6f427f481fa1b01b2c3b0a81aa5",
|
||||||
"TR_test_msg_applysettings.py::test_apply_settings_passphrase": "cd99c6c8eecd12536ba3bc43a2105c617b7b7e82b5f50b3a22834dab23ead905",
|
"TR_test_msg_applysettings.py::test_apply_settings_passphrase": "cd99c6c8eecd12536ba3bc43a2105c617b7b7e82b5f50b3a22834dab23ead905",
|
||||||
"TR_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c0d276bc4b64307c1440b648bc87f1de44edf2af8a3b3b32997f3271990f66b8",
|
"TR_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c0d276bc4b64307c1440b648bc87f1de44edf2af8a3b3b32997f3271990f66b8",
|
||||||
"TR_test_msg_applysettings.py::test_apply_settings_rotation": "1b1f2d2d66d458550e524b6cb9d36dcda132e1d10bf1c95c1cde6a3fc1d3616b",
|
"TR_test_msg_applysettings.py::test_apply_settings_rotation": "1b1f2d2d66d458550e524b6cb9d36dcda132e1d10bf1c95c1cde6a3fc1d3616b",
|
||||||
"TR_test_msg_applysettings.py::test_experimental_features": "23629cfa1744ee0f2f69e0fb393d648885c0251c4486e531b5a52ada9b7ee9dc",
|
"TR_test_msg_applysettings.py::test_experimental_features": "2a06448be4d338d4801e546e8eede4f9effeca2c9dc78dbb6b6449ffaf37cf4f",
|
||||||
"TR_test_msg_applysettings.py::test_label_too_long": "57e3aa5a6a55926dcc95ca290bf1b2826bbc86b535e0baa162f7c79b1784c96b",
|
"TR_test_msg_applysettings.py::test_label_too_long": "57e3aa5a6a55926dcc95ca290bf1b2826bbc86b535e0baa162f7c79b1784c96b",
|
||||||
"TR_test_msg_applysettings.py::test_safety_checks": "2abd8b80488fa2ac88987469b2d0d050b41e32aba5bb3fc33b860374f3fd57d1",
|
"TR_test_msg_applysettings.py::test_safety_checks": "2abd8b80488fa2ac88987469b2d0d050b41e32aba5bb3fc33b860374f3fd57d1",
|
||||||
"TR_test_msg_backup_device.py::test_backup_bip39": "c3f73753287060702e5ee4ee8a7dcf1344d25f42dfec7bb25cc349954e1a35c3",
|
"TR_test_msg_backup_device.py::test_backup_bip39": "c3f73753287060702e5ee4ee8a7dcf1344d25f42dfec7bb25cc349954e1a35c3",
|
||||||
@ -1820,7 +1820,7 @@
|
|||||||
"TR_test_pin.py::test_exponential_backoff_t2": "52281d0972707fdc79d75c7be53a2245cb08bce99032747084895657d7dca5d6",
|
"TR_test_pin.py::test_exponential_backoff_t2": "52281d0972707fdc79d75c7be53a2245cb08bce99032747084895657d7dca5d6",
|
||||||
"TR_test_pin.py::test_incorrect_pin_t2": "124344d031a0bb76a00619252359f32bb3a0e795743ed4c07633e0d016b9fc2f",
|
"TR_test_pin.py::test_incorrect_pin_t2": "124344d031a0bb76a00619252359f32bb3a0e795743ed4c07633e0d016b9fc2f",
|
||||||
"TR_test_pin.py::test_no_protection": "57e3aa5a6a55926dcc95ca290bf1b2826bbc86b535e0baa162f7c79b1784c96b",
|
"TR_test_pin.py::test_no_protection": "57e3aa5a6a55926dcc95ca290bf1b2826bbc86b535e0baa162f7c79b1784c96b",
|
||||||
"TR_test_protection_levels.py::test_apply_settings": "3d0230adc6180464094133d8570c4a32739462ebbc7838a84c9e3a5f6ae1a781",
|
"TR_test_protection_levels.py::test_apply_settings": "4a624209ced2b6e147a316018be1f46cccc5fdc9a0660c1316d3f8f7dbc973bd",
|
||||||
"TR_test_protection_levels.py::test_change_pin_t2": "146c99c81e6501b1171234e56ef85967e095774eb591313f2dbf72a42546bd9e",
|
"TR_test_protection_levels.py::test_change_pin_t2": "146c99c81e6501b1171234e56ef85967e095774eb591313f2dbf72a42546bd9e",
|
||||||
"TR_test_protection_levels.py::test_get_address": "65abab80b1efa1fc29199bedd350d7e76b3096fbb575fc600a76cf67a69328f4",
|
"TR_test_protection_levels.py::test_get_address": "65abab80b1efa1fc29199bedd350d7e76b3096fbb575fc600a76cf67a69328f4",
|
||||||
"TR_test_protection_levels.py::test_get_entropy": "07ffdd1d2d447d3610b99cf2f14949b8101f6fa212c2dc8349df13d0ba651740",
|
"TR_test_protection_levels.py::test_get_entropy": "07ffdd1d2d447d3610b99cf2f14949b8101f6fa212c2dc8349df13d0ba651740",
|
||||||
@ -1884,7 +1884,7 @@
|
|||||||
},
|
},
|
||||||
"TT": {
|
"TT": {
|
||||||
"click_tests": {
|
"click_tests": {
|
||||||
"TT_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "03e156da82e7acd3509f831d1fc2e635fcebc673f3c14d61d141273e608fc7a4",
|
"TT_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "670aa732e6d64912be8a0658a5ce4a3a602e2dd0dfe9ff9c68766bab777c2d2e",
|
||||||
"TT_test_autolock.py::test_autolock_does_not_interrupt_signing": "6711f75420f88f7500a6adfa8d9d25007871f698e08f048a80450085d9452133",
|
"TT_test_autolock.py::test_autolock_does_not_interrupt_signing": "6711f75420f88f7500a6adfa8d9d25007871f698e08f048a80450085d9452133",
|
||||||
"TT_test_autolock.py::test_autolock_interrupts_passphrase": "d1f797544d62708739c340dd4aa4ee28cfc65e9b643f595a55706de5917ee82f",
|
"TT_test_autolock.py::test_autolock_interrupts_passphrase": "d1f797544d62708739c340dd4aa4ee28cfc65e9b643f595a55706de5917ee82f",
|
||||||
"TT_test_autolock.py::test_autolock_interrupts_signing": "ae4d3cc00fd5482b4499eff1c73aec75f4153e34950db910d4f787cc5f9b4208",
|
"TT_test_autolock.py::test_autolock_interrupts_signing": "ae4d3cc00fd5482b4499eff1c73aec75f4153e34950db910d4f787cc5f9b4208",
|
||||||
@ -1938,8 +1938,8 @@
|
|||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_get_address": "a350f2131e942e52029dd8646c33a5392335eef2f4e8a64499a3e185c8890f57",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_get_address": "a350f2131e942e52029dd8646c33a5392335eef2f4e8a64499a3e185c8890f57",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fe6f38a712c28289520dae54bbdf5aa67e7a34916a1b8c7064130419d5f22e04",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fe6f38a712c28289520dae54bbdf5aa67e7a34916a1b8c7064130419d5f22e04",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "fe8cd9934667d12430865eeccd7fdfd2f957ac933aa438fd15d5eaa6a7c1ab7b",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "fe8cd9934667d12430865eeccd7fdfd2f957ac933aa438fd15d5eaa6a7c1ab7b",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx": "23ab128ca97aaac5506d8e77f0fe9951db62538a60ea3664cab4f3d7b84501f6",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx": "65a8e11765a403512659e3af55db625423e300cdda5406cd6d383642b32cd740",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "fd523b4cd46d79aba746ab20e75a519ffa9858d94471ab53a7f22c2edf7306ab",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "20dd629b0a249610f5b507e0c3aa8b85201482195fec1b42fe61c39db69e9564",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "750b3cebac7e8467763642fce5c5b3a7984877e199bc0b1acf36eb9b266985e8",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "750b3cebac7e8467763642fce5c5b3a7984877e199bc0b1acf36eb9b266985e8",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "4df5b3f3038732bef4f0613ffa82ba840f571cd44740ea5c4e0dd8fd3e37a915",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "4df5b3f3038732bef4f0613ffa82ba840f571cd44740ea5c4e0dd8fd3e37a915",
|
||||||
"TT_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0a9ed8c97bfbf9f5615ffd9286c6ffb18f92f81481a2c97fb643b83cd96d2545",
|
"TT_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0a9ed8c97bfbf9f5615ffd9286c6ffb18f92f81481a2c97fb643b83cd96d2545",
|
||||||
@ -2951,15 +2951,15 @@
|
|||||||
"TT_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "e451683254af05cbdc8fa4caad1925dfd5e7de7338fc80f1289fb198f9c1f676",
|
"TT_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "e451683254af05cbdc8fa4caad1925dfd5e7de7338fc80f1289fb198f9c1f676",
|
||||||
"TT_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0e00ab4c70dd9fec3511712ebbcdfa2556487efa1e53830248240627c5f1417f",
|
"TT_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0e00ab4c70dd9fec3511712ebbcdfa2556487efa1e53830248240627c5f1417f",
|
||||||
"TT_test_autolock.py::test_autolock_cancels_ui": "41bce102e56bcb761e7480690b4f2ded2739522c9642c7233eceafece9641a1e",
|
"TT_test_autolock.py::test_autolock_cancels_ui": "41bce102e56bcb761e7480690b4f2ded2739522c9642c7233eceafece9641a1e",
|
||||||
"TT_test_autolock.py::test_autolock_default_value": "0126aab250a451219f64248cb9ff5a34e36e9c8caf85b175f16fbaa90a38e654",
|
"TT_test_autolock.py::test_autolock_default_value": "903b00be6bfa0694284da893caeef10a69be0c4e9484416d6968c57cdfa8e347",
|
||||||
"TT_test_autolock.py::test_autolock_ignores_getaddress": "21605135cfbb4914cd525d6b76f260a17fe6552fdadcf9a89b2ec6e3572606f5",
|
"TT_test_autolock.py::test_autolock_ignores_getaddress": "21605135cfbb4914cd525d6b76f260a17fe6552fdadcf9a89b2ec6e3572606f5",
|
||||||
"TT_test_autolock.py::test_autolock_ignores_initialize": "21605135cfbb4914cd525d6b76f260a17fe6552fdadcf9a89b2ec6e3572606f5",
|
"TT_test_autolock.py::test_autolock_ignores_initialize": "21605135cfbb4914cd525d6b76f260a17fe6552fdadcf9a89b2ec6e3572606f5",
|
||||||
"TT_test_basic.py::test_device_id_different": "6f8d7ba4ef109b2c20d09689d1fa329e23d5a11d21ce47a91339aeb21ffcf1ad",
|
"TT_test_basic.py::test_device_id_different": "6f8d7ba4ef109b2c20d09689d1fa329e23d5a11d21ce47a91339aeb21ffcf1ad",
|
||||||
"TT_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
"TT_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
||||||
"TT_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
"TT_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
||||||
"TT_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
"TT_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
||||||
"TT_test_busy_state.py::test_busy_expiry": "ba86a3b442bcc2709762a008734511cf5d7ddd715f7184e9006061b8046e2d56",
|
"TT_test_busy_state.py::test_busy_expiry": "903a28c07c3ae14381b4c854cda714052d828b6138ee6e1fcd3907a7d4ff5eb8",
|
||||||
"TT_test_busy_state.py::test_busy_state": "808dd87ba553e2f1f89d5d9ae0a2605d4e39a394cb0a538ff19370a0a49adeb7",
|
"TT_test_busy_state.py::test_busy_state": "2f6cd1ee1c57655ccb3d8c116227fac68fd1692abb21f4d842b76142f8bc941a",
|
||||||
"TT_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5",
|
"TT_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5",
|
||||||
"TT_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5",
|
"TT_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5",
|
||||||
"TT_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5",
|
"TT_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5",
|
||||||
@ -2972,11 +2972,11 @@
|
|||||||
"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "914efb0961a2182f1ffb1b71b4dc68fc59c000270d4e0d8be98550f435bb3a34",
|
"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "914efb0961a2182f1ffb1b71b4dc68fc59c000270d4e0d8be98550f435bb3a34",
|
||||||
"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "914efb0961a2182f1ffb1b71b4dc68fc59c000270d4e0d8be98550f435bb3a34",
|
"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "914efb0961a2182f1ffb1b71b4dc68fc59c000270d4e0d8be98550f435bb3a34",
|
||||||
"TT_test_msg_applysettings.py::test_apply_homescreen_toif": "914efb0961a2182f1ffb1b71b4dc68fc59c000270d4e0d8be98550f435bb3a34",
|
"TT_test_msg_applysettings.py::test_apply_homescreen_toif": "914efb0961a2182f1ffb1b71b4dc68fc59c000270d4e0d8be98550f435bb3a34",
|
||||||
"TT_test_msg_applysettings.py::test_apply_settings": "19e2405d937b26de2c48744d4f8a5ff876a1f276dd0f574af0b18f9cf095b133",
|
"TT_test_msg_applysettings.py::test_apply_settings": "65331ed91d57db555d6a6d44f27323c771158367d47d1b591e5067b71b44ba8a",
|
||||||
"TT_test_msg_applysettings.py::test_apply_settings_passphrase": "87d6fcedfa5ebabe9ae8c6a1e138bdcb2023c2cb52d84b62576c1f8602bb9803",
|
"TT_test_msg_applysettings.py::test_apply_settings_passphrase": "87d6fcedfa5ebabe9ae8c6a1e138bdcb2023c2cb52d84b62576c1f8602bb9803",
|
||||||
"TT_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "be0c1a6a8c60e74b18929349bba70b9bd313d0a95faf8c42795e9eff6f1391da",
|
"TT_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "be0c1a6a8c60e74b18929349bba70b9bd313d0a95faf8c42795e9eff6f1391da",
|
||||||
"TT_test_msg_applysettings.py::test_apply_settings_rotation": "59466fcbae8742584adf7269eac15d5eeb905e0ddebc32087e01dbb22f60096f",
|
"TT_test_msg_applysettings.py::test_apply_settings_rotation": "59466fcbae8742584adf7269eac15d5eeb905e0ddebc32087e01dbb22f60096f",
|
||||||
"TT_test_msg_applysettings.py::test_experimental_features": "e7bdcfa8708fc0fbe88f5f4cc7f93497c94fa5ae9e08282496c04e993123674c",
|
"TT_test_msg_applysettings.py::test_experimental_features": "f38ed6fd1202c705571c4bd30978c9af1992e3ff3f1bf679f835c48e0573f52d",
|
||||||
"TT_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
"TT_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
||||||
"TT_test_msg_applysettings.py::test_safety_checks": "4ec93f34a54d13317c2d5434ed5853d0edf0f6d91772aab2a15acf7e3de75458",
|
"TT_test_msg_applysettings.py::test_safety_checks": "4ec93f34a54d13317c2d5434ed5853d0edf0f6d91772aab2a15acf7e3de75458",
|
||||||
"TT_test_msg_backup_device.py::test_backup_bip39": "a01b8e554380d678021934d3ff1465b9e822079bc6d98a94660b3d11c7ad0e10",
|
"TT_test_msg_backup_device.py::test_backup_bip39": "a01b8e554380d678021934d3ff1465b9e822079bc6d98a94660b3d11c7ad0e10",
|
||||||
@ -3016,7 +3016,7 @@
|
|||||||
"TT_test_pin.py::test_exponential_backoff_t2": "477f517b378cfbbea696d26156d225e82cafc923a61439ebd2fcdc30624621f8",
|
"TT_test_pin.py::test_exponential_backoff_t2": "477f517b378cfbbea696d26156d225e82cafc923a61439ebd2fcdc30624621f8",
|
||||||
"TT_test_pin.py::test_incorrect_pin_t2": "a876b9361f82c8921f9e0f6139f6603171d1a2f072d397be62af9c01fad3f562",
|
"TT_test_pin.py::test_incorrect_pin_t2": "a876b9361f82c8921f9e0f6139f6603171d1a2f072d397be62af9c01fad3f562",
|
||||||
"TT_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
"TT_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
|
||||||
"TT_test_protection_levels.py::test_apply_settings": "f21279b8f97c74260ccbe823e8e71b475ed6f631966c977fd56197e182b26c41",
|
"TT_test_protection_levels.py::test_apply_settings": "d28b52f30a3513b03a1649261c8762211aa3d82e2afa305e3ea30380f1f8c5dd",
|
||||||
"TT_test_protection_levels.py::test_change_pin_t2": "990124ab2de328f9f2080ee8936d96e0d0d62d52ee64b453553af9e54bea1d59",
|
"TT_test_protection_levels.py::test_change_pin_t2": "990124ab2de328f9f2080ee8936d96e0d0d62d52ee64b453553af9e54bea1d59",
|
||||||
"TT_test_protection_levels.py::test_get_address": "79930e3c2d8e3e87934f7f06d09daa27508beb1e5ed413006533ce03bc3c45ce",
|
"TT_test_protection_levels.py::test_get_address": "79930e3c2d8e3e87934f7f06d09daa27508beb1e5ed413006533ce03bc3c45ce",
|
||||||
"TT_test_protection_levels.py::test_get_entropy": "a820cf9c173f1aa5b446ef9f40910594e1346bfb94219d7204254bc5b1a38909",
|
"TT_test_protection_levels.py::test_get_entropy": "a820cf9c173f1aa5b446ef9f40910594e1346bfb94219d7204254bc5b1a38909",
|
||||||
|
Loading…
Reference in New Issue
Block a user