// 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_UPDATE_CLIENT_CRX_DOWNLOADER_H_ #define COMPONENTS_UPDATE_CLIENT_CRX_DOWNLOADER_H_ #include <stdint.h> #include <memory> #include <string> #include <vector> #include "base/files/file_path.h" #include "base/functional/callback.h" #include "base/memory/ref_counted.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "url/gurl.h" namespace update_client { // Defines a download interface for downloading components, with retrying on // fallback urls in case of errors. This class implements a chain of // responsibility design pattern. It can give successors in the chain a chance // to handle a download request, until one of them succeeds, or there are no // more urls or successors to try. A callback is always called at the end of // the download, one time only. // When multiple urls and downloaders exists, first all the urls are tried, in // the order they are provided in the StartDownload function argument. After // that, the download request is routed to the next downloader in the chain. // The members of this class expect to be called from the main sequence only. class CrxDownloader : public base::RefCountedThreadSafe<CrxDownloader> { … }; } // namespace update_client #endif // COMPONENTS_UPDATE_CLIENT_CRX_DOWNLOADER_H_