|  | // Copyright 2023 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_DOWNLOAD_BUBBLE_DOWNLOAD_BUBBLE_DISPLAY_INFO_H_ | 
|  | #define CHROME_BROWSER_DOWNLOAD_BUBBLE_DOWNLOAD_BUBBLE_DISPLAY_INFO_H_ | 
|  |  | 
|  | #include "base/time/time.h" | 
|  |  | 
|  | // Summarizes information from DownloadUIModels to be displayed in the download | 
|  | // bubble. Produced by DownloadBubbleUpdateService by iterating through models, | 
|  | // which is somewhat expensive, so summarized information is stored in the form | 
|  | // of this struct. | 
|  | struct DownloadBubbleDisplayInfo { | 
|  | // Number of models that would be returned to display. | 
|  | size_t all_models_size = 0; | 
|  | // The last time that a download was completed. Will be null if no downloads | 
|  | // were completed. | 
|  | base::Time last_completed_time; | 
|  | // Whether there are any downloads actively doing deep scanning. | 
|  | bool has_deep_scanning = false; | 
|  | // Whether any downloads are unactioned. | 
|  | bool has_unactioned = false; | 
|  | // From the button UI's perspective, whether the download is considered in | 
|  | // progress. Consider dangerous downloads as completed, because we don't | 
|  | // want to encourage users to interact with them. | 
|  | int in_progress_count = 0; | 
|  | // Count of in-progress downloads (by the above definition) that are paused. | 
|  | int paused_count = 0; | 
|  |  | 
|  | // Returns a reference to a singleton empty struct. This is for callers who | 
|  | // return references but don't have anything to return in some cases. | 
|  | static const DownloadBubbleDisplayInfo& EmptyInfo(); | 
|  | }; | 
|  |  | 
|  | #endif  // CHROME_BROWSER_DOWNLOAD_BUBBLE_DOWNLOAD_BUBBLE_DISPLAY_INFO_H_ |