blob: 177dbca553c8bb58cc574f19be58407e6b48f7b9 [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2018 The Chromium Authors
alexclarke1794435f2015-07-23 11:50:352// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Gabriel Charetteaccb9342022-08-03 23:46:265#include "base/task/common/lazy_now.h"
alexclarke1794435f2015-07-23 11:50:356
Arthur Sonzognie5fff99c2024-02-21 15:58:247#include <optional>
8
David Dorwin3f503b82022-04-20 04:07:039#include "base/check.h"
alexclarkef65eb2d2015-11-03 18:24:1610#include "base/time/tick_clock.h"
alexclarke1794435f2015-07-23 11:50:3511
Greg Kraynov8f4784462018-05-14 10:08:2112namespace base {
Greg Kraynov1f358aca2018-04-27 18:51:3313
Alex Attar9fcc01e2022-05-20 14:01:2714LazyNow::LazyNow(TimeTicks now) : now_(now), tick_clock_(nullptr) {}
Greg Kraynov1f358aca2018-04-27 18:51:3315
Arthur Sonzognie5fff99c2024-02-21 15:58:2416LazyNow::LazyNow(std::optional<TimeTicks> now, const TickClock* tick_clock)
Alex Attar9fcc01e2022-05-20 14:01:2717 : now_(now), tick_clock_(tick_clock) {
18 DCHECK(tick_clock);
19}
20
21LazyNow::LazyNow(const TickClock* tick_clock) : tick_clock_(tick_clock) {
Greg Kraynov1f358aca2018-04-27 18:51:3322 DCHECK(tick_clock);
23}
24
tzik429534e2018-05-28 09:24:5425LazyNow::LazyNow(LazyNow&& move_from) noexcept
Alex Attar9fcc01e2022-05-20 14:01:2726 : now_(move_from.now_), tick_clock_(move_from.tick_clock_) {
Greg Kraynov1f358aca2018-04-27 18:51:3327 move_from.tick_clock_ = nullptr;
Arthur Sonzognie5fff99c2024-02-21 15:58:2428 move_from.now_ = std::nullopt;
Greg Kraynov1f358aca2018-04-27 18:51:3329}
30
Greg Kraynov8f4784462018-05-14 10:08:2131TimeTicks LazyNow::Now() {
Greg Kraynov02e83f92018-05-24 11:22:52