Index: ios/chrome/browser/reading_list/reading_list_web_state_observer_unittest.mm |
diff --git a/ios/chrome/browser/reading_list/reading_list_web_state_observer_unittest.mm b/ios/chrome/browser/reading_list/reading_list_web_state_observer_unittest.mm |
index 3008236fc006bb55aa0f1e9da76bfd6e1529d323..bd64b0118e2cfefde81211c943fe2d0d9dd4e73a 100644 |
--- a/ios/chrome/browser/reading_list/reading_list_web_state_observer_unittest.mm |
+++ b/ios/chrome/browser/reading_list/reading_list_web_state_observer_unittest.mm |
@@ -31,6 +31,18 @@ class TestNavigationManager : public web::TestNavigationManager { |
bool reload_called_ = false; |
}; |
+// A Test navigation manager that remembers the last opened parameters. |
+class TestWebState : public web::TestWebState { |
+ public: |
+ void OpenURL(const web::WebState::OpenURLParams& params) override { |
+ last_opened_url_ = params.url; |
+ } |
+ const GURL& LastOpenedUrl() { return last_opened_url_; } |
+ |
+ private: |
+ GURL last_opened_url_; |
+}; |
+ |
// Test fixture to test loading of Reading list entries. |
class ReadingListWebStateObserverTest : public web::WebTest { |
public: |
@@ -54,7 +66,7 @@ class ReadingListWebStateObserverTest : public web::WebTest { |
std::unique_ptr<web::NavigationItem> last_committed_item_; |
std::unique_ptr<ReadingListModelImpl> reading_list_model_; |
TestNavigationManager* test_navigation_manager_; |
- web::TestWebState test_web_state_; |
+ TestWebState test_web_state_; |
}; |
// Tests that failing loading an online version does not mark it read. |
@@ -97,8 +109,8 @@ TEST_F(ReadingListWebStateObserverTest, TestLoadReadingListOnline) { |
EXPECT_TRUE(entry->IsRead()); |
} |
-// Tests that loading a distilled version of an entry. |
-TEST_F(ReadingListWebStateObserverTest, TestLoadReadingListDistilled) { |
+// Tests that loading a distilled version of an entry from a commited entry. |
+TEST_F(ReadingListWebStateObserverTest, TestLoadReadingListDistilledCommitted) { |
GURL url(kTestURL); |
std::string distilled_path = kTestDistilledPath; |
reading_list_model_->SetEntryDistilledPath(url, |
@@ -112,10 +124,32 @@ TEST_F(ReadingListWebStateObserverTest, TestLoadReadingListDistilled) { |
test_web_state_.OnPageLoaded(web::PageLoadCompletionStatus::FAILURE); |
test_web_state_.SetLoading(false); |
+ EXPECT_FALSE(test_navigation_manager_->ReloadCalled()); |
+ EXPECT_EQ(test_web_state_.LastOpenedUrl(), distilled_url); |
+ EXPECT_TRUE(entry->IsRead()); |
+} |
+ |
+// Tests that loading a distilled version of an entry. |
+TEST_F(ReadingListWebStateObserverTest, TestLoadReadingListDistilledPending) { |
+ GURL url(kTestURL); |
+ std::string distilled_path = kTestDistilledPath; |
+ reading_list_model_->SetEntryDistilledPath(url, |
+ base::FilePath(distilled_path)); |
+ const ReadingListEntry* entry = reading_list_model_->GetEntryByURL(url); |
+ GURL distilled_url = |
+ reading_list::DistilledURLForPath(entry->DistilledPath(), entry->URL()); |
+ |
+ test_navigation_manager_->SetPendingItem(nil); |
+ test_navigation_manager_->GetLastCommittedItem()->SetURL(url); |
+ test_web_state_.SetLoading(true); |
+ test_web_state_.OnPageLoaded(web::PageLoadCompletionStatus::FAILURE); |
+ test_web_state_.SetLoading(false); |
+ |
EXPECT_TRUE(test_navigation_manager_->ReloadCalled()); |
EXPECT_EQ(test_navigation_manager_->GetLastCommittedItem()->GetVirtualURL(), |
url); |
EXPECT_EQ(test_navigation_manager_->GetLastCommittedItem()->GetURL(), |
distilled_url); |
+ |
EXPECT_TRUE(entry->IsRead()); |
} |