// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_PUBLIC_SCHEDULE_SERVICE_UTILS_H_ #define CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_PUBLIC_SCHEDULE_SERVICE_UTILS_H_ #include <utility> #include "base/time/clock.h" #include "base/time/time.h" namespace notifications { TimePair; TimeDeltaPair; // Given suggested |morning| and |evening| windows together with current time, // calculate actual deliver time window from |out_start_time| to |out_end_time|. // Both windows duration should be within 12 hours, and start of |evening| // should be later than end of |morning|. // Return false if the inputs are invalid. // [begining_of_today,morning_window_end] => deliver on today morning. // (morning_window_end, evening_window_end] => deliver on today evening. // (evening_window_end, end_of_today] => deliver on tomorrow morning. bool NextTimeWindow(base::Clock* clock, const TimeDeltaPair& morning, const TimeDeltaPair& evening, TimePair* out); // Retrieves the time stamp of a certain hour at a certain day from today. // |hour| must be in the range of [0, 23]. // |today| is a timestamp to define today, usually caller can directly pass in // the current system time. // |day_delta| is the different between the output date and today. // Returns false if the conversion is failed. bool ToLocalHour(int hour, const base::Time& today, int day_delta, base::Time* out); } // namespace notifications #endif // CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_PUBLIC_SCHEDULE_SERVICE_UTILS_H_