// Copyright 2017 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_DOWNLOAD_CONTENT_PUBLIC_ALL_DOWNLOAD_ITEM_NOTIFIER_H_ #define COMPONENTS_DOWNLOAD_CONTENT_PUBLIC_ALL_DOWNLOAD_ITEM_NOTIFIER_H_ #include <set> #include "base/memory/raw_ptr.h" #include "components/download/public/common/download_item.h" #include "content/public/browser/download_manager.h" // AllDownloadItemNotifier observes ALL the DownloadItems on a given // DownloadManager. // Clients should use GetManager() instead of storing their own pointer to the // manager so that they can be sensitive to managers that have gone down. // Example Usage: // class DownloadSystemConsumer : public AllDownloadItemNotifier::Observer { // public: // DownloadSystemConsumer(DownloadManager* original_manager, // DownloadManager* incognito_manager) // : original_notifier_(original_manager, this), // incognito_notifier_(incognito_manager, this) { // } // // virtual void OnDownloadUpdated( // DownloadManager* manager, DownloadItem* item) { ... } // // private: // AllDownloadItemNotifier original_notifier_; // AllDownloadItemNotifier incognito_notifier_; // }; namespace download { class AllDownloadItemNotifier : public content::DownloadManager::Observer, public DownloadItem::Observer { … }; } // namespace download #endif // COMPONENTS_DOWNLOAD_CONTENT_PUBLIC_ALL_DOWNLOAD_ITEM_NOTIFIER_H_