Use mojo JSTime for chrome://discards state_change_time [chromium/src : main]

3 views
Skip to first unread message

Helmut Januschka (Gerrit)

unread,
Jul 7, 2026, 6:30:57 PM (8 days ago) Jul 7
to Mike West, Chromium IPC Reviews, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, ipc-securi...@chromium.org

Helmut Januschka voted and added 2 comments

Votes added by Helmut Januschka

Commit-Queue+1

2 comments

File chrome/browser/resources/discards/discards_tab.ts
Line 25, Patchset 1:function mojoTimeToDate(mojoTime: Time): Date {
Joe Mason . resolved

There's a mojo_base.mojom.JSTime that will do this conversion automatically.

https://source.chromium.org/chromium/chromium/src/+/main:mojo/public/mojom/base/time.mojom;l=15;drc=6b8c38e905a1f87bfd60a5dd2990ade450700566

Helmut Januschka

thx!

File chrome/browser/ui/webui/discards/discards.mojom
Line 74, Patchset 1: mojo_base.mojom.Time state_change_time;
Joe Mason . resolved

Nit: prefer JSTime here.

Helmut Januschka

Done

Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib69c6c380134f12bb244397f72a777479f03203c
Gerrit-Change-Number: 8027230
Gerrit-PatchSet: 3
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: Joe Mason <joenot...@google.com>
Gerrit-Reviewer: Mike West <mk...@chromium.org>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: gwsq
Gerrit-Comment-Date: Tue, 07 Jul 2026 22:30:38 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Joe Mason <joenot...@google.com>
satisfied_requirement
open
diffy

Helmut Januschka (Gerrit)

unread,
Jul 7, 2026, 6:31:03 PM (8 days ago) Jul 7
to Mike West, Chromium IPC Reviews, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, ipc-securi...@chromium.org

Helmut Januschka voted Commit-Queue+2

Commit-Queue+2
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib69c6c380134f12bb244397f72a777479f03203c
Gerrit-Change-Number: 8027230
Gerrit-PatchSet: 3
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: Joe Mason <joenot...@google.com>
Gerrit-Reviewer: Mike West <mk...@chromium.org>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: gwsq
Gerrit-Comment-Date: Tue, 07 Jul 2026 22:30:46 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy

Chromium LUCI CQ (Gerrit)

unread,
Jul 7, 2026, 6:43:33 PM (8 days ago) Jul 7
to Helmut Januschka, Mike West, Chromium IPC Reviews, chromium...@chromium.org, chrome-gr...@chromium.org, ipc-securi...@chromium.org

Chromium LUCI CQ submitted the change with unreviewed changes

Unreviewed changes

1 is the latest approved patch-set.
The change was submitted with unreviewed changes in the following files:

```
The name of the file: chrome/test/data/webui/discards/discards_test.ts
Insertions: 2, Deletions: 2.

@@ -30,7 +30,7 @@
discardReason: LifecycleUnitDiscardReason.EXTERNAL,
id: 0,
siteEngagementScore: 0,
- stateChangeTime: {internalValue: 0n},
+ stateChangeTime: new Date(0),
};
const dummy2: TabDiscardsInfo = {
title: 'title 2',
@@ -51,7 +51,7 @@
discardReason: LifecycleUnitDiscardReason.EXTERNAL,
id: 0,
siteEngagementScore: 0,
- stateChangeTime: {internalValue: 0n},
+ stateChangeTime: new Date(0),
};

['title', 'tabUrl', 'visibility', 'state', 'isAutoDiscardable',
```
```
The name of the file: chrome/browser/ui/webui/discards/discards.mojom
Insertions: 1, Deletions: 1.

@@ -71,7 +71,7 @@
// Whether or not the tab has input focus.
bool has_focus;
// Wall-clock time at which the lifecycle state last changed.
- mojo_base.mojom.Time state_change_time;
+ mojo_base.mojom.JSTime state_change_time;
};

// Interface for providing information about discards. Lives in the browser
```
```
The name of the file: chrome/browser/resources/discards/discards_tab.ts
Insertions: 2, Deletions: 14.

@@ -9,7 +9,6 @@
import {getFaviconForPageURL} from 'chrome://resources/js/icon.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {CrLitElement} from 'chrome://resources/lit/v3_0/lit.rollup.js';
-import type {Time} from 'chrome://resources/mojo/mojo/public/mojom/base/time.mojom-webui.js';

import {boolToString, durationToString, getOrCreateDetailsProvider} from './discards.js';
import type {DetailsProviderRemote, TabDiscardsInfo} from './discards.mojom-webui.js';
@@ -19,17 +18,6 @@
import {LifecycleUnitDiscardReason, LifecycleUnitLoadingState, LifecycleUnitState} from './lifecycle_unit_state.mojom-webui.js';
import {SortedTableMixinLit} from './sorted_table_mixin_lit.js';

-// Converts a `mojo_base.mojom.Time` to a JS `Date`. `internalValue` is
-// microseconds since the Windows FILETIME epoch (1601-01-01 UTC); `Date`
-// expects milliseconds since the Unix epoch.
-function mojoTimeToDate(mojoTime: Time): Date {
- const windowsEpoch = Date.UTC(1601, 0, 1, 0, 0, 0, 0);
- const unixEpoch = Date.UTC(1970, 0, 1, 0, 0, 0, 0);
- const epochDeltaInMs = unixEpoch - windowsEpoch;
- const timeInMs = Number(mojoTime.internalValue) / 1000;
- return new Date(timeInMs - epochDeltaInMs);
-}
-
function compareByTitle(a: TabDiscardsInfo, b: TabDiscardsInfo): number {
const val1 = a.title.toLowerCase();
const val2 = b.title.toLowerCase();
@@ -292,7 +280,7 @@
private lifecycleStateToString_(
state: LifecycleUnitState, reason: LifecycleUnitDiscardReason,
visibility: LifecycleUnitVisibility, hasFocus: boolean,
- stateChangeTime: Time): string {
+ stateChangeTime: Date): string {
function pageLifecycleStateFromVisibilityAndFocus(): string {
switch (visibility) {
case LifecycleUnitVisibility.HIDDEN:
@@ -314,7 +302,7 @@
case LifecycleUnitState.DISCARDED:
return 'discarded (' + this.discardReasonToString_(reason) + ')' +
((reason === LifecycleUnitDiscardReason.URGENT) ?
- ' at ' + mojoTimeToDate(stateChangeTime).toLocaleString() :
+ ' at ' + stateChangeTime.toLocaleString() :
'');
default:
assertNotReached();
```

Change information

Commit message:
Use mojo JSTime for chrome://discards state_change_time

Stamp a wall-clock alongside TimeTicks in LifecycleUnitBase::SetState
and ship it via the mojom JSTime field so the display is an actual wall
clock instead of a TimeTicks::UnixEpoch-relative TimeDelta.
Bug: 355423207
Change-Id: Ib69c6c380134f12bb244397f72a777479f03203c
Reviewed-by: Joe Mason <joenot...@google.com>
Reviewed-by: Mike West <mk...@chromium.org>
Commit-Queue: Helmut Januschka <hel...@januschka.com>
Cr-Commit-Position: refs/heads/main@{#1658339}
Files:
  • M chrome/browser/resource_coordinator/lifecycle_unit.h
  • M chrome/browser/resource_coordinator/lifecycle_unit_base.cc
  • M chrome/browser/resource_coordinator/lifecycle_unit_base.h
  • M chrome/browser/resource_coordinator/lifecycle_unit_base_unittest.cc
  • M chrome/browser/resources/discards/discards_tab.ts
  • M chrome/browser/ui/webui/discards/discards.mojom
  • M chrome/browser/ui/webui/discards/discards_ui.cc
  • M chrome/test/data/webui/discards/discards_test.ts
Change size: S
Delta: 8 files changed, 32 insertions(+), 17 deletions(-)
Branch: refs/heads/main
Submit Requirements:
  • requirement satisfiedCode-Review: +1 by Mike West, +1 by Joe Mason
Open in Gerrit
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: merged
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib69c6c380134f12bb244397f72a777479f03203c
Gerrit-Change-Number: 8027230
Gerrit-PatchSet: 4
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: Joe Mason <joenot...@google.com>
Gerrit-Reviewer: Mike West <mk...@chromium.org>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: gwsq
open
diffy
satisfied_requirement
Reply all
Reply to author
Forward
0 new messages