| Index: ios/chrome/browser/reading_list/reading_list_distiller_page.mm
|
| diff --git a/ios/chrome/browser/reading_list/reading_list_distiller_page.mm b/ios/chrome/browser/reading_list/reading_list_distiller_page.mm
|
| index e774a3c2f00b7d443290c235ab4c368fd492dfd5..6ac1c4ad5b4047feaddfec0173351a24c6b493b1 100644
|
| --- a/ios/chrome/browser/reading_list/reading_list_distiller_page.mm
|
| +++ b/ios/chrome/browser/reading_list/reading_list_distiller_page.mm
|
| @@ -53,6 +53,7 @@ ReadingListDistillerPage::ReadingListDistillerPage(
|
| : dom_distiller::DistillerPageIOS(browser_state),
|
| web_state_dispatcher_(web_state_dispatcher),
|
| delegate_(delegate),
|
| + delayed_task_id_(0),
|
| weak_ptr_factory_(this) {
|
| DCHECK(delegate);
|
| }
|
| @@ -69,6 +70,7 @@ void ReadingListDistillerPage::DistillPageImpl(const GURL& url,
|
| web_state_dispatcher_->RequestWebState();
|
| AttachWebState(std::move(new_web_state));
|
| original_url_ = url;
|
| + delayed_task_id_++;
|
| FetchFavicon(url);
|
|
|
| DistillerPageIOS::DistillPageImpl(url, script);
|
| @@ -105,6 +107,7 @@ void ReadingListDistillerPage::OnDistillationDone(const GURL& page_url,
|
| [old_web_state->GetView() removeFromSuperview];
|
| web_state_dispatcher_->ReturnWebState(std::move(old_web_state));
|
| }
|
| + delayed_task_id_++;
|
| DistillerPageIOS::OnDistillationDone(page_url, value);
|
| }
|
|
|
| @@ -158,11 +161,17 @@ void ReadingListDistillerPage::OnLoadURLDone(
|
| weak_ptr_factory_.GetWeakPtr();
|
| base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
| FROM_HERE,
|
| - base::Bind(&ReadingListDistillerPage::DelayedOnLoadURLDone, weak_this),
|
| + base::Bind(&ReadingListDistillerPage::DelayedOnLoadURLDone, weak_this,
|
| + delayed_task_id_),
|
| base::TimeDelta::FromSeconds(kPageLoadDelayInSeconds));
|
| }
|
|
|
| -void ReadingListDistillerPage::DelayedOnLoadURLDone() {
|
| +void ReadingListDistillerPage::DelayedOnLoadURLDone(int delayed_task_id) {
|
| + if (!CurrentWebState() || delayed_task_id != delayed_task_id_) {
|
| + // Something interrupted the distillation.
|
| + // Abort here.
|
| + return;
|
| + }
|
| if (IsGoogleCachedAMPPage()) {
|
| // Workaround for Google AMP pages.
|
| HandleGoogleCachedAMPPage();
|
|
|