// 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_OFFLINE_ITEMS_COLLECTION_CORE_OFFLINE_ITEM_H_ #define COMPONENTS_OFFLINE_ITEMS_COLLECTION_CORE_OFFLINE_ITEM_H_ #include <optional> #include <string> #include "base/files/file_path.h" #include "base/time/time.h" #include "components/offline_items_collection/core/fail_state.h" #include "components/offline_items_collection/core/offline_item_filter.h" #include "components/offline_items_collection/core/offline_item_state.h" #include "components/offline_items_collection/core/pending_state.h" #include "ui/gfx/image/image.h" #include "url/gurl.h" namespace offline_items_collection { // An id that uniquely represents a piece of offline content. struct ContentId { … }; // A Java counterpart will be generated for this enum. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.offline_items_collection enum class OfflineItemProgressUnit { … }; // This struct holds the relevant pieces of information to represent an abstract // offline item to the front end. This is meant to be backed by components that // need to both show content being offlined (downloading, saving, etc.) as well // as content that should be exposed as available offline (downloads, pages, // etc.). // // A new feature should expose these OfflineItems via an OfflineContentProvider. struct OfflineItem { … }; // Implemented for test-only. See test_support/offline_item_test_support.cc. std::ostream& operator<<(std::ostream& os, const OfflineItem& item); // This struct holds any potentially expensive visuals for an OfflineItem. If // the front end requires the visuals it will ask for them through the // OfflineContentProvider interface asynchronously to give the backend time to // generate them if necessary. // // It is not expected that these will change. Currently the UI might cache the // results of this call. // TODO(dtrainor): If we run into a scenario where this changes, add a way for // an OfflineItem update to let us know about an update to the visuals. struct OfflineItemVisuals { … }; // This struct holds additional information related to sharing a particular // OfflineItem. This information doesn't necessarily exist within OfflineItem // because it may be expensive/unnecessary to compute until the user attempts to // share the item. struct OfflineItemShareInfo { … }; } // namespace offline_items_collection #endif // COMPONENTS_OFFLINE_ITEMS_COLLECTION_CORE_OFFLINE_ITEM_H_