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

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

Issue 2578973002: Reload offline version on load failure (Closed)
Patch Set: rebase + const Created 4 years 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/reading_list_web_state_observer.h
diff --git a/ios/chrome/browser/reading_list/reading_list_web_state_observer.h b/ios/chrome/browser/reading_list/reading_list_web_state_observer.h
index 47fcfb6f9aa4c0075e442c5ac0b852bb6dfc376f..1c16afed1ccfe4624596a719084ee81853c1588f 100644
--- a/ios/chrome/browser/reading_list/reading_list_web_state_observer.h
+++ b/ios/chrome/browser/reading_list/reading_list_web_state_observer.h
@@ -12,6 +12,10 @@
class ReadingListModel;
+namespace web {
+class NavigationItem;
+}
+
// Observes the loading of pages coming from the reading list, determines
// whether loading an offline version of the page is needed, and actually
// trigger the loading of the offline page (if possible).
@@ -23,34 +27,44 @@ class ReadingListWebStateObserver : public web::WebStateObserver {
~ReadingListWebStateObserver() override;
- // Starts checking that the current navigation is loading quickly enough [1].
- // If not, starts to load a distilled version of the page (if there is any).
- // If that same WebStateObserver was already checking that a page was loading
- // quickly enough, stops checking the loading of that page.
- // [1] A page loading quickly enough is a page that has loaded 15% within
- // 1 second.
- void StartCheckingProgress(const GURL& pending_url);
-
private:
ReadingListWebStateObserver(web::WebState* web_state,
ReadingListModel* reading_list_model);
- // Looks at the loading percentage. If less than 15%, attemps to load the
- // offline version of that page.
+ // Looks at the loading percentage. If less than 25% * time, attemps to load
+ // the offline version of that page.
+ // |time| is the number of seconds since |StartCheckingProgress| was called.
void VerifyIfReadingListEntryStartedLoading();
friend class ReadingListWebStateObserverUserDataWrapper;
- // Stop checking the loading of the |pending_url_|.
+ // Stops checking the loading of the |pending_url_|.
// The WebState will still be observed, but no action will be done on events.
void StopCheckingProgress();
+ // Loads the offline version of the URL in place of the current page.
+ void LoadOfflineReadingListEntry(web::NavigationItem* item);
+
+ // Returns if the current page with |url| has an offline version that can be
+ // displayed if the normal loading fails.
+ bool IsUrlAvailableOffline(const GURL& url) const;
+
+ // Checks if |item| should be observed or not.
+ // A non-null item should be observed if it is not already loading an offline
+ // URL.
+ bool ShouldObserveItem(web::NavigationItem* item) const;
+
// WebContentsObserver implementation.
- void DidStopLoading() override;
void PageLoaded(
web::PageLoadCompletionStatus load_completion_status) override;
void WebStateDestroyed() override;
+ // Starts checking that the current navigation is loading quickly enough [1].
+ // If not, starts to load a distilled version of the page (if there is any).
+ // [1] A page loading quickly enough is a page that has loaded 25% within
+ // 1 second, 50% within 2 seconds and 75% within 3 seconds.
+ void DidStartLoading() override;
+
ReadingListModel* reading_list_model_;
std::unique_ptr<base::Timer> timer_;
GURL pending_url_;

Powered by Google App Engine
This is Rietveld 408576698