Commit 0c48d4d6 authored by Olivier Robin's avatar Olivier Robin Committed by Commit Bot

IOSChromeSyncedTabDelegate: Accept -1 last committed index

NavigationManager can return -1 as the last committed index when back/
forwarding to a restored URL (even if IsRestoreSessionInProgress returns
false).
Accept -1 from navigation manager in that scenario.

Also rename storage_has_navigation_items variable.

Bug: 1035960
Tbr: eugenebut
Change-Id: Ie3c126c76c884c91997303728265ee2b5572851f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1985762
Commit-Queue: Olivier Robin <olivierrobin@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Reviewed-by: default avatarGauthier Ambard <gambard@chromium.org>
Reviewed-by: default avatarJustin Cohen <justincohen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#728004}
parent 0496c21c
...@@ -86,8 +86,8 @@ int IOSChromeSyncedTabDelegate::GetEntryCount() const { ...@@ -86,8 +86,8 @@ int IOSChromeSyncedTabDelegate::GetEntryCount() const {
} }
GURL IOSChromeSyncedTabDelegate::GetVirtualURLAtIndex(int i) const { GURL IOSChromeSyncedTabDelegate::GetVirtualURLAtIndex(int i) const {
DCHECK_GE(i, 0);
if (GetSessionStorageIfNeeded()) { if (GetSessionStorageIfNeeded()) {
DCHECK_GE(i, 0);
NSArray* item_storages = session_storage_.itemStorages; NSArray* item_storages = session_storage_.itemStorages;
DCHECK_LT(i, static_cast<int>(item_storages.count)); DCHECK_LT(i, static_cast<int>(item_storages.count));
CRWNavigationItemStorage* item = item_storages[i]; CRWNavigationItemStorage* item = item_storages[i];
...@@ -98,8 +98,8 @@ GURL IOSChromeSyncedTabDelegate::GetVirtualURLAtIndex(int i) const { ...@@ -98,8 +98,8 @@ GURL IOSChromeSyncedTabDelegate::GetVirtualURLAtIndex(int i) const {
} }
GURL IOSChromeSyncedTabDelegate::GetFaviconURLAtIndex(int i) const { GURL IOSChromeSyncedTabDelegate::GetFaviconURLAtIndex(int i) const {
DCHECK_GE(i, 0);
if (GetSessionStorageIfNeeded()) { if (GetSessionStorageIfNeeded()) {
DCHECK_GE(i, 0);
return GURL(); return GURL();
} }
NavigationItem* item = GetPossiblyPendingItemAtIndex(web_state_, i); NavigationItem* item = GetPossiblyPendingItemAtIndex(web_state_, i);
...@@ -108,8 +108,8 @@ GURL IOSChromeSyncedTabDelegate::GetFaviconURLAtIndex(int i) const { ...@@ -108,8 +108,8 @@ GURL IOSChromeSyncedTabDelegate::GetFaviconURLAtIndex(int i) const {
ui::PageTransition IOSChromeSyncedTabDelegate::GetTransitionAtIndex( ui::PageTransition IOSChromeSyncedTabDelegate::GetTransitionAtIndex(
int i) const { int i) const {
DCHECK_GE(i, 0);
if (GetSessionStorageIfNeeded()) { if (GetSessionStorageIfNeeded()) {
DCHECK_GE(i, 0);
return ui::PAGE_TRANSITION_LINK; return ui::PAGE_TRANSITION_LINK;
} }
NavigationItem* item = GetPossiblyPendingItemAtIndex(web_state_, i); NavigationItem* item = GetPossiblyPendingItemAtIndex(web_state_, i);
...@@ -223,21 +223,21 @@ bool IOSChromeSyncedTabDelegate::GetSessionStorageIfNeeded() const { ...@@ -223,21 +223,21 @@ bool IOSChromeSyncedTabDelegate::GetSessionStorageIfNeeded() const {
// is displayed. Before restoration, the session storage must be used. // is displayed. Before restoration, the session storage must be used.
bool should_use_storage = bool should_use_storage =
web_state_->GetNavigationManager()->IsRestoreSessionInProgress(); web_state_->GetNavigationManager()->IsRestoreSessionInProgress();
bool storage_has_tabs = false; bool storage_has_navigation_items = false;
if (should_use_storage) { if (should_use_storage) {
if (!session_storage_) { if (!session_storage_) {
session_storage_ = web_state_->BuildSessionStorage(); session_storage_ = web_state_->BuildSessionStorage();
} }
storage_has_tabs = session_storage_.itemStorages.count; storage_has_navigation_items = session_storage_.itemStorages.count;
#if DCHECK_IS_ON() #if DCHECK_IS_ON()
if (storage_has_tabs) { if (storage_has_navigation_items) {
DCHECK_GE(session_storage_.lastCommittedItemIndex, 0); DCHECK_GE(session_storage_.lastCommittedItemIndex, 0);
DCHECK_LT(session_storage_.lastCommittedItemIndex, DCHECK_LT(session_storage_.lastCommittedItemIndex,
static_cast<int>(session_storage_.itemStorages.count)); static_cast<int>(session_storage_.itemStorages.count));
} }
#endif #endif
} }
return should_use_storage && storage_has_tabs; return should_use_storage && storage_has_navigation_items;
} }
WEB_STATE_USER_DATA_KEY_IMPL(IOSChromeSyncedTabDelegate) WEB_STATE_USER_DATA_KEY_IMPL(IOSChromeSyncedTabDelegate)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment