From feed0ada86988cfcdbff0cb6078f2dcfd7ed5bc6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 26 Jan 2024 11:42:21 +0100 Subject: [PATCH 1/5] FileViewer: fix coloration issue for logs files. --- .../viewfolder/impl/file/ViewFilePresenter.kt | 10 +++++ .../viewfolder/impl/file/ViewFileState.kt | 7 ++++ .../impl/file/ViewFileStateProvider.kt | 1 + .../viewfolder/impl/file/ViewFileView.kt | 42 ++++++++++++++----- .../test/file/ViewFilePresenterTest.kt | 26 ++++++++++++ 5 files changed, 75 insertions(+), 11 deletions(-) diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt index 91cc59ec05..0337d9044a 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt @@ -49,6 +49,7 @@ class ViewFilePresenter @AssistedInject constructor( @Composable override fun present(): ViewFileState { val coroutineScope = rememberCoroutineScope() + val colorationMode = remember { name.toColorationMode() } fun handleEvent(event: ViewFileEvents) { when (event) { @@ -67,6 +68,7 @@ class ViewFilePresenter @AssistedInject constructor( return ViewFileState( name = name, lines = lines, + colorationMode = colorationMode, eventSink = ::handleEvent, ) } @@ -79,3 +81,11 @@ class ViewFilePresenter @AssistedInject constructor( fileSave.save(path) } } + +private fun String.toColorationMode(): ColorationMode { + return when { + equals("logcat.log") -> ColorationMode.Logcat + startsWith("logs.") -> ColorationMode.Logs + else -> ColorationMode.None + } +} diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt index 9fb531c478..8529655139 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt @@ -21,5 +21,12 @@ import io.element.android.libraries.architecture.AsyncData data class ViewFileState( val name: String, val lines: AsyncData>, + val colorationMode: ColorationMode, val eventSink: (ViewFileEvents) -> Unit, ) + +enum class ColorationMode { + Logcat, + Logs, + None, +} diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt index f0612c0714..9859528511 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt @@ -51,5 +51,6 @@ fun aViewFileState( ) = ViewFileState( name = name, lines = lines, + colorationMode = ColorationMode.Logcat, eventSink = {}, ) diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt index f58f5399d7..eea8f64b6e 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt @@ -114,6 +114,7 @@ fun ViewFileView( is AsyncData.Success -> FileContent( modifier = Modifier.weight(1f), lines = state.lines.data.toImmutableList(), + colorationMode = state.colorationMode, ) is AsyncData.Failure -> AsyncFailure(throwable = state.lines.error, onRetry = null) } @@ -125,6 +126,7 @@ fun ViewFileView( @Composable private fun FileContent( lines: ImmutableList, + colorationMode: ColorationMode, modifier: Modifier = Modifier, ) { LazyColumn( @@ -147,6 +149,7 @@ private fun FileContent( LineRow( lineNumber = index + 1, line = line, + colorationMode = colorationMode, ) } } @@ -157,6 +160,7 @@ private fun FileContent( private fun LineRow( lineNumber: Int, line: String, + colorationMode: ColorationMode, ) { val context = LocalContext.current Row( @@ -195,25 +199,41 @@ private fun LineRow( } .padding(horizontal = 4.dp), text = line, - color = line.toColor(), + color = line.toColor(colorationMode), style = ElementTheme.typography.fontBodyMdRegular ) } } /** - * Convert a logcat line to a color. - * Ex: `01-23 13:14:50.740 25818 25818 D org.matrix.rust.sdk: elementx: SyncIndicator = Hide | RustRoomListService.kt:81` + * Convert a line to a color. + * Ex for logcat: + * `01-23 13:14:50.740 25818 25818 D org.matrix.rust.sdk: elementx: SyncIndicator = Hide | RustRoomListService.kt:81` + * ^ use this char to determine the color + * Ex for logs: + * `2024-01-26T10:22:26.947416Z WARN elementx: Restore with non-empty map | MatrixClientsHolder.kt:68` + * ^ use this char to determine the color, see [LogLevel] */ @Composable -private fun String.toColor(): Color { - return when (getOrNull(31)) { - 'D' -> Color(0xFF299999) - 'I' -> Color(0xFFABC023) - 'W' -> Color(0xFFBBB529) - 'E' -> Color(0xFFFF6B68) - 'A' -> Color(0xFFFF6B68) - else -> ElementTheme.colors.textPrimary +private fun String.toColor(colorationMode: ColorationMode): Color { + return when (colorationMode) { + ColorationMode.Logcat -> when (getOrNull(31)) { + 'D' -> Color(0xFF299999) + 'I' -> Color(0xFFABC023) + 'W' -> Color(0xFFBBB529) + 'E' -> Color(0xFFFF6B68) + 'A' -> Color(0xFFFF6B68) + else -> ElementTheme.colors.textPrimary + } + ColorationMode.Logs -> when (getOrNull(32)) { + 'E' -> ElementTheme.colors.textPrimary + 'G' -> Color(0xFF299999) + '0' -> Color(0xFFABC023) + 'N' -> Color(0xFFBBB529) + 'R' -> Color(0xFFFF6B68) + else -> ElementTheme.colors.textPrimary + } + ColorationMode.None -> ElementTheme.colors.textPrimary } } diff --git a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt index 3b593410b2..bfff21a71f 100644 --- a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt +++ b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt @@ -20,6 +20,7 @@ import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.features.viewfolder.impl.file.ColorationMode import io.element.android.features.viewfolder.impl.file.FileContentReader import io.element.android.features.viewfolder.impl.file.FileSave import io.element.android.features.viewfolder.impl.file.FileShare @@ -48,6 +49,7 @@ class ViewFilePresenterTest { val initialState = awaitItem() assertThat(initialState.name).isEqualTo("aName") assertThat(initialState.lines).isInstanceOf(AsyncData.Loading::class.java) + assertThat(initialState.colorationMode).isEqualTo(ColorationMode.None) val loadedState = awaitItem() val lines = (loadedState.lines as AsyncData.Success).data assertThat(lines.size).isEqualTo(1) @@ -55,6 +57,30 @@ class ViewFilePresenterTest { } } + @Test + fun `present - coloration mode for logcat`() = runTest { + val presenter = createPresenter(name = "logcat.log") + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.colorationMode).isEqualTo(ColorationMode.Logcat) + cancelAndConsumeRemainingEvents() + } + } + + @Test + fun `present - coloration mode for logs`() = runTest { + val presenter = createPresenter(name = "logs.date") + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.colorationMode).isEqualTo(ColorationMode.Logs) + cancelAndConsumeRemainingEvents() + } + } + @Test fun `present - share should not have any side effect`() = runTest { val fileContentReader = FakeFileContentReader().apply { From 52e0137904ebe5c19a5f9a9a7147b17ed39f8001 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 26 Jan 2024 14:46:51 +0100 Subject: [PATCH 2/5] Rename `ColorationMode.Logs` to `ColorationMode.RustLogs`. --- .../features/viewfolder/impl/file/ViewFilePresenter.kt | 2 +- .../android/features/viewfolder/impl/file/ViewFileState.kt | 2 +- .../android/features/viewfolder/impl/file/ViewFileView.kt | 4 ++-- .../features/viewfolder/test/file/ViewFilePresenterTest.kt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt index 0337d9044a..4af90a83ed 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFilePresenter.kt @@ -85,7 +85,7 @@ class ViewFilePresenter @AssistedInject constructor( private fun String.toColorationMode(): ColorationMode { return when { equals("logcat.log") -> ColorationMode.Logcat - startsWith("logs.") -> ColorationMode.Logs + startsWith("logs.") -> ColorationMode.RustLogs else -> ColorationMode.None } } diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt index 8529655139..35ed0991ad 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileState.kt @@ -27,6 +27,6 @@ data class ViewFileState( enum class ColorationMode { Logcat, - Logs, + RustLogs, None, } diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt index eea8f64b6e..5127d41828 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt @@ -210,7 +210,7 @@ private fun LineRow( * Ex for logcat: * `01-23 13:14:50.740 25818 25818 D org.matrix.rust.sdk: elementx: SyncIndicator = Hide | RustRoomListService.kt:81` * ^ use this char to determine the color - * Ex for logs: + * Ex for Rust logs: * `2024-01-26T10:22:26.947416Z WARN elementx: Restore with non-empty map | MatrixClientsHolder.kt:68` * ^ use this char to determine the color, see [LogLevel] */ @@ -225,7 +225,7 @@ private fun String.toColor(colorationMode: ColorationMode): Color { 'A' -> Color(0xFFFF6B68) else -> ElementTheme.colors.textPrimary } - ColorationMode.Logs -> when (getOrNull(32)) { + ColorationMode.RustLogs -> when (getOrNull(32)) { 'E' -> ElementTheme.colors.textPrimary 'G' -> Color(0xFF299999) '0' -> Color(0xFFABC023) diff --git a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt index bfff21a71f..6cef49a72d 100644 --- a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt +++ b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/test/file/ViewFilePresenterTest.kt @@ -76,7 +76,7 @@ class ViewFilePresenterTest { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.colorationMode).isEqualTo(ColorationMode.Logs) + assertThat(initialState.colorationMode).isEqualTo(ColorationMode.RustLogs) cancelAndConsumeRemainingEvents() } } From 407d1cab246c63e8703012ae79e523758212e95e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 26 Jan 2024 14:49:45 +0100 Subject: [PATCH 3/5] Extract colors to avoid duplication and for more clarity. --- .../viewfolder/impl/file/ViewFileView.kt | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt index 5127d41828..39f14ef88f 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt @@ -218,25 +218,30 @@ private fun LineRow( private fun String.toColor(colorationMode: ColorationMode): Color { return when (colorationMode) { ColorationMode.Logcat -> when (getOrNull(31)) { - 'D' -> Color(0xFF299999) - 'I' -> Color(0xFFABC023) - 'W' -> Color(0xFFBBB529) - 'E' -> Color(0xFFFF6B68) - 'A' -> Color(0xFFFF6B68) + 'D' -> colorDebug + 'I' -> colorInfo + 'W' -> colorWarning + 'E' -> colorError + 'A' -> colorError else -> ElementTheme.colors.textPrimary } ColorationMode.RustLogs -> when (getOrNull(32)) { 'E' -> ElementTheme.colors.textPrimary - 'G' -> Color(0xFF299999) - '0' -> Color(0xFFABC023) - 'N' -> Color(0xFFBBB529) - 'R' -> Color(0xFFFF6B68) + 'G' -> colorDebug + '0' -> colorInfo + 'N' -> colorWarning + 'R' -> colorError else -> ElementTheme.colors.textPrimary } ColorationMode.None -> ElementTheme.colors.textPrimary } } +private val colorDebug = Color(0xFF299999) +private val colorInfo = Color(0xFFABC023) +private val colorWarning = Color(0xFFBBB529) +private val colorError = Color(0xFFFF6B68) + @PreviewsDayNight @Composable internal fun ViewFileViewPreview(@PreviewParameter(ViewFileStateProvider::class) state: ViewFileState) = ElementPreview { From 465748d26f08be14515e3c57ef429cda16ef4766 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 26 Jan 2024 14:55:53 +0100 Subject: [PATCH 4/5] Add preview for Rust logs (and fix a bug!) --- .../impl/file/ViewFileStateProvider.kt | 24 +++++++++++++++++-- .../viewfolder/impl/file/ViewFileView.kt | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt index 9859528511..3213036d4d 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileStateProvider.kt @@ -27,6 +27,7 @@ open class ViewFileStateProvider : PreviewParameterProvider { aViewFileState(lines = AsyncData.Failure(Exception("A failure"))), aViewFileState(lines = AsyncData.Success(emptyList())), aViewFileState( + name = "logcat.log", lines = AsyncData.Success( listOf( "Line 1", @@ -40,7 +41,25 @@ open class ViewFileStateProvider : PreviewParameterProvider { "01-23 13:14:50.740 25818 25818 E error", "01-23 13:14:50.740 25818 25818 A assertion", ) - ) + ), + colorationMode = ColorationMode.Logcat, + ), + aViewFileState( + name = "logs.2024-01-26", + lines = AsyncData.Success( + listOf( + "Line 1", + "Line 2", + "Line 3 lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor" + + " incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,", + "2024-01-26T10:22:26.947416Z TRACE trace", + "2024-01-26T10:22:26.947416Z DEBUG debug", + "2024-01-26T10:22:26.947416Z INFO info", + "2024-01-26T10:22:26.947416Z WARN warn", + "2024-01-26T10:22:26.947416Z ERROR error", + ) + ), + colorationMode = ColorationMode.RustLogs, ) ) } @@ -48,9 +67,10 @@ open class ViewFileStateProvider : PreviewParameterProvider { fun aViewFileState( name: String = "aName", lines: AsyncData> = AsyncData.Uninitialized, + colorationMode: ColorationMode = ColorationMode.None, ) = ViewFileState( name = name, lines = lines, - colorationMode = ColorationMode.Logcat, + colorationMode = colorationMode, eventSink = {}, ) diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt index 39f14ef88f..d5b3818227 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileView.kt @@ -228,7 +228,7 @@ private fun String.toColor(colorationMode: ColorationMode): Color { ColorationMode.RustLogs -> when (getOrNull(32)) { 'E' -> ElementTheme.colors.textPrimary 'G' -> colorDebug - '0' -> colorInfo + 'O' -> colorInfo 'N' -> colorWarning 'R' -> colorError else -> ElementTheme.colors.textPrimary From b8a2b2a276d7bcf25ea63b9acf335a0886d90e41 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Fri, 26 Jan 2024 14:04:10 +0000 Subject: [PATCH 5/5] Update screenshots --- ...eView_null_ViewFileView-Day-0_1_null_4,NEXUS_5,1.0,en].png | 4 ++-- ...eView_null_ViewFileView-Day-0_1_null_5,NEXUS_5,1.0,en].png | 3 +++ ...iew_null_ViewFileView-Night-0_2_null_4,NEXUS_5,1.0,en].png | 4 ++-- ...iew_null_ViewFileView-Night-0_2_null_5,NEXUS_5,1.0,en].png | 3 +++ 4 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_5,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_5,NEXUS_5,1.0,en].png diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_4,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_4,NEXUS_5,1.0,en].png index f5be6b5490..862b48dfc9 100644 --- a/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_4,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_4,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52ea44b4be9b858f64a886ded5427f8ef5c2149914e348166a2fbb333ffc41f8 -size 70418 +oid sha256:726f55e0bd89f429e351b070bda57be081c01a42240ba53e8d87bdfdcf84a1c6 +size 71385 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_5,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_5,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..1a3a882cc9 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Day-0_1_null_5,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:839bdc36f80481351c63b66e358a0f68537a8cc1cdf75ee9dcaed35338573e92 +size 66140 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_4,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_4,NEXUS_5,1.0,en].png index 339e893381..8bd6eb3b3b 100644 --- a/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_4,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_4,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:304c5c94e3b408c744f0b6c86d35ac781f368e6e0d5742d5b2ff36ac1682538a -size 67297 +oid sha256:684fec6dc2c15767195b79d6c4c5996ab9cdb03386b5fcfc3400622ad4e03008 +size 68115 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_5,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_5,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..c6eca13a72 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.viewfolder.impl.file_ViewFileView_null_ViewFileView-Night-0_2_null_5,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1813c8906a75315d691faf5fe7ede66ab7e56e52e779408a2a4fcd6829c113b1 +size 61642