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

Unified Diff: chrome/browser/android/offline_pages/offline_page_tab_helper_unittest.cc

Issue 1902443003: Redirect immediately to offline copy on no network (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and update tests Created 4 years, 7 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: chrome/browser/android/offline_pages/offline_page_tab_helper_unittest.cc
diff --git a/chrome/browser/android/offline_pages/offline_page_tab_helper_unittest.cc b/chrome/browser/android/offline_pages/offline_page_tab_helper_unittest.cc
index 9248617c3fe3f9c7ed3beb2dc66c7e4f8f044653..bcec1accd9f800aed18946fe6dff504636db8d62 100644
--- a/chrome/browser/android/offline_pages/offline_page_tab_helper_unittest.cc
+++ b/chrome/browser/android/offline_pages/offline_page_tab_helper_unittest.cc
@@ -24,6 +24,10 @@
#include "net/base/network_change_notifier.h"
#include "testing/gtest/include/gtest/gtest.h"
+using SavePageResult = offline_pages::OfflinePageModel::SavePageResult;
+using SingleOfflinePageItemResult =
+ offline_pages::OfflinePageModel::SingleOfflinePageItemResult;
+
namespace offline_pages {
namespace {
@@ -67,14 +71,14 @@ class OfflinePageTabHelperTest :
void RunUntilIdle();
void SimulateHasNetworkConnectivity(bool has_connectivity);
void StartLoad(const GURL& url);
- void CommitLoad(const GURL& url);
void FailLoad(const GURL& url);
OfflinePageTabHelper* offline_page_tab_helper() const {
return offline_page_tab_helper_;
}
- int64_t offline_id() const { return offline_id_; }
+ const GURL& online_url() const { return online_url_; }
+ const GURL& offline_url() const { return offline_url_; }
private:
// OfflinePageTestArchiver::Observer implementation:
@@ -83,13 +87,14 @@ class OfflinePageTabHelperTest :
std::unique_ptr<OfflinePageTestArchiver> BuildArchiver(
const GURL& url,
const base::FilePath& file_name);
- void OnSavePageDone(OfflinePageModel::SavePageResult result,
- int64_t offline_id);
+ void OnSavePageDone(SavePageResult result, int64_t offline_id);
+ void OnGetPageByOfflineIdDone(const SingleOfflinePageItemResult& result);
std::unique_ptr<TestNetworkChangeNotifier> network_change_notifier_;
OfflinePageTabHelper* offline_page_tab_helper_; // Not owned.
- int64_t offline_id_;
+ GURL online_url_;
+ GURL offline_url_;
DISALLOW_COPY_AND_ASSIGN(OfflinePageTabHelperTest);
};
@@ -140,12 +145,8 @@ void OfflinePageTabHelperTest::SimulateHasNetworkConnectivity(bool online) {
void OfflinePageTabHelperTest::StartLoad(const GURL& url) {
controller().LoadURL(url, content::Referrer(), ui::PAGE_TRANSITION_TYPED,
std::string());
-}
-
-void OfflinePageTabHelperTest::CommitLoad(const GURL& url) {
- int entry_id = controller().GetPendingEntry()->GetUniqueID();
- content::RenderFrameHostTester::For(main_rfh())
- ->SendNavigate(0, entry_id, true, url);
+ content::RenderFrameHostTester::For(main_rfh())->
+ SimulateNavigationStart(url);
}
void OfflinePageTabHelperTest::FailLoad(const GURL& url) {
@@ -173,40 +174,52 @@ OfflinePageTabHelperTest::BuildArchiver(const GURL& url,
return archiver;
}
-void OfflinePageTabHelperTest::OnSavePageDone(
- OfflinePageModel::SavePageResult result,
- int64_t offline_id) {
- offline_id_ = offline_id;
+void OfflinePageTabHelperTest::OnSavePageDone(SavePageResult result,
+ int64_t offline_id) {
+ OfflinePageModel* model =
+ OfflinePageModelFactory::GetForBrowserContext(browser_context());
+ model->GetPageByOfflineId(offline_id,
+ base::Bind(&OfflinePageTabHelperTest::OnGetPageByOfflineIdDone,
+ AsWeakPtr()));
}
-TEST_F(OfflinePageTabHelperTest, SwitchToOnlineFromOffline) {
- SimulateHasNetworkConnectivity(true);
+void OfflinePageTabHelperTest::OnGetPageByOfflineIdDone(
+ const SingleOfflinePageItemResult& result) {
+ DCHECK(result);
+ online_url_ = result->url;
+ offline_url_ = result->GetOfflineURL();
+}
- OfflinePageModel* model =
- OfflinePageModelFactory::GetForBrowserContext(browser_context());
- const OfflinePageItem* page = model->MaybeGetPageByOfflineId(offline_id());
- GURL offline_url = page->GetOfflineURL();
- GURL online_url = page->url;
+TEST_F(OfflinePageTabHelperTest, SwitchToOnlineFromOfflineOnNetwork) {
+ SimulateHasNetworkConnectivity(true);
- StartLoad(offline_url);
- CommitLoad(online_url);
- EXPECT_EQ(online_url, controller().GetLastCommittedEntry()->GetURL());
+ StartLoad(offline_url());
+ // Gives a chance to run delayed task to do redirection.
+ RunUntilIdle();
+ // Redirection will be done immediately on navigation start.
+ EXPECT_EQ(online_url(), controller().GetPendingEntry()->GetURL());
}
-TEST_F(OfflinePageTabHelperTest, SwitchToOfflineFromOnline) {
+TEST_F(OfflinePageTabHelperTest, SwitchToOfflineFromOnlineOnNoNetwork) {
SimulateHasNetworkConnectivity(false);
- OfflinePageModel* model =
- OfflinePageModelFactory::GetForBrowserContext(browser_context());
- const OfflinePageItem* page = model->MaybeGetPageByOfflineId(offline_id());
- GURL offline_url = page->GetOfflineURL();
- GURL online_url = page->url;
+ StartLoad(online_url());
+ // Gives a chance to run delayed task to do redirection.
+ RunUntilIdle();
+ // Redirection will be done immediately on navigation start.
+ EXPECT_EQ(offline_url(), controller().GetPendingEntry()->GetURL());
+}
- StartLoad(online_url);
- EXPECT_EQ(online_url, controller().GetPendingEntry()->GetURL());
+TEST_F(OfflinePageTabHelperTest, SwitchToOfflineFromOnlineOnError) {
+ SimulateHasNetworkConnectivity(true);
+
+ StartLoad(online_url());
+ RunUntilIdle();
+ EXPECT_EQ(online_url(), controller().GetPendingEntry()->GetURL());
- FailLoad(online_url);
- EXPECT_EQ(offline_url, controller().GetPendingEntry()->GetURL());
+ // Redirection will be done immediately on navigation end with error.
+ FailLoad(online_url());
+ EXPECT_EQ(offline_url(), controller().GetPendingEntry()->GetURL());
}
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698