// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_WEBAPPS_BROWSER_BANNERS_APP_BANNER_SETTINGS_HELPER_H_ #define COMPONENTS_WEBAPPS_BROWSER_BANNERS_APP_BANNER_SETTINGS_HELPER_H_ #include <optional> #include <set> #include <string> #include "base/auto_reset.h" #include "base/time/time.h" namespace content { class BrowserContext; class WebContents; } // namespace content class GURL; namespace webapps { struct InstallBannerConfig; // Utility class to record banner events for the given package or start url. // // These events are used to decide when banners should be shown, using a // heuristic based on how many different days in a recent period of time (for // example the past two weeks) the banner could have been shown, when it was // last shown, when it was last blocked, and when it was last installed (for // ServiceWorker style apps - native apps can query whether the app was // installed directly). // // The desired effect is to have banners appear once a user has demonstrated // an ongoing relationship with the app, and not to pester the user too much. // // For most events only the last event is recorded. The exception are the // could show events. For these a list of the events is maintained. At most // one event is stored per day, and events outside the window the heuristic // uses are discarded. Local times are used to enforce these rules, to ensure // what we count as a day matches what the user perceives to be days. class AppBannerSettingsHelper { … }; } // namespace webapps #endif // COMPONENTS_WEBAPPS_BROWSER_BANNERS_APP_BANNER_SETTINGS_HELPER_H_