Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Unified Diff: ios/chrome/browser/reading_list/url_downloader.h

Issue 2320403002: Update reading list entry on download (Closed)
Patch Set: address comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/reading_list/url_downloader.h
diff --git a/ios/chrome/browser/reading_list/url_downloader.h b/ios/chrome/browser/reading_list/url_downloader.h
index 2eab241294dfce84ff4770877325252f4f08059f..2a839d9f647794861ca7e41c5b17385a11906da0 100644
--- a/ios/chrome/browser/reading_list/url_downloader.h
+++ b/ios/chrome/browser/reading_list/url_downloader.h
@@ -31,16 +31,33 @@ class URLDownloader {
friend class MockURLDownloader;
public:
- // A completion callback that takes a GURL and a bool indicating
- // success and returns void.
+ // And enum indicating different download outcomes.
+ enum SuccessState {
+ DOWNLOAD_SUCCESS,
+ DOWNLOAD_EXISTS,
+ ERROR_RETRY,
+ ERROR_PERMANENT
+ };
+
+ // A completion callback that takes a GURL and a bool indicating the
+ // outcome and returns void.
using SuccessCompletion = base::Callback<void(const GURL&, bool)>;
+ // A download completion callback that takes, in order, the GURL that was
+ // downloaded, a SuccessState indicating the outcome of the download, the
+ // offline GURL for the download, and the title of the url, and returns void.
+ // The offline GURL and title should not be used in case of failure.
+ using DownloadCompletion = base::Callback<
+ void(const GURL&, SuccessState, const GURL&, const std::string&)>;
+
// Create a URL downloader with completion callbacks for downloads and
- // deletions.
+ // deletions. The completion callbacks will be called with the original url
+ // and a boolean indicating success. For downloads, if distillation was
+ // successful, it will also include the distilled url and extracted title.
URLDownloader(dom_distiller::DomDistillerService* distiller_service,
PrefService* prefs,
base::FilePath chrome_profile_path,
- const SuccessCompletion& download_completion,
+ const DownloadCompletion& download_completion,
const SuccessCompletion& delete_completion);
virtual ~URLDownloader();
@@ -60,7 +77,9 @@ class URLDownloader {
void HandleNextTask();
// Callback for completed (or failed) download, handles calling
// downloadCompletion and starting the next task.
- void DownloadCompletionHandler(const GURL& url, bool success);
+ void DownloadCompletionHandler(const GURL& url,
+ const std::string& title,
+ SuccessState success);
// Callback for completed (or failed) deletion, handles calling
// deleteCompletion and starting the next task.
void DeleteCompletionHandler(const GURL& url, bool success);
@@ -75,10 +94,11 @@ class URLDownloader {
// the directory already exists.
bool CreateOfflineURLDirectory(const GURL& url);
// Saves the |data| for image at |imageURL| to disk, for main URL |url|;
- // returns path of saved file.
- std::string SaveImage(const GURL& url,
- const GURL& imageURL,
- const std::string& data);
+ // puts path of saved file in |path| and returns whether save was successful.
+ bool SaveImage(const GURL& url,
+ const GURL& imageURL,
+ const std::string& data,
+ base::FilePath& path);
// Saves images in |images| array to disk and replaces references in |html| to
// local path. Returns updated html.
std::string SaveAndReplaceImagesInHTML(
@@ -91,7 +111,7 @@ class URLDownloader {
// Downloads |url|, depending on |offlineURLExists| state.
virtual void DownloadURL(GURL url, bool offlineURLExists);
// Saves distilled html to disk, including saving images and main file.
- bool SaveDistilledHTML(
+ SuccessState SaveDistilledHTML(
const GURL& url,
std::vector<dom_distiller::DistillerViewerInterface::ImageInfo> images,
std::string html);
@@ -100,11 +120,12 @@ class URLDownloader {
const GURL& pageURL,
const std::string& html,
const std::vector<dom_distiller::DistillerViewerInterface::ImageInfo>&
- images);
+ images,
+ const std::string& title);
dom_distiller::DomDistillerService* distiller_service_;
PrefService* pref_service_;
- const SuccessCompletion download_completion_;
+ const DownloadCompletion download_completion_;
const SuccessCompletion delete_completion_;
std::deque<Task> tasks_;
bool working_;

Powered by Google App Engine
This is Rietveld 408576698