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

Unified Diff: ios/shared/chrome/browser/tabs/web_state_list.mm

Issue 2748793002: [ios] Add a delegate to WebStateList class. (Closed)
Patch Set: Browser owns the BrowserWebStateListDelegate. Created 3 years, 9 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: ios/shared/chrome/browser/tabs/web_state_list.mm
diff --git a/ios/shared/chrome/browser/tabs/web_state_list.mm b/ios/shared/chrome/browser/tabs/web_state_list.mm
index 6c1434d83abddc10c9b29439710f2b104df25a7b..5da7b0cd66abb6bab602d30ca66da5cf4e42b576 100644
--- a/ios/shared/chrome/browser/tabs/web_state_list.mm
+++ b/ios/shared/chrome/browser/tabs/web_state_list.mm
@@ -9,6 +9,7 @@
#include "base/logging.h"
#include "base/memory/ptr_util.h"
+#import "ios/shared/chrome/browser/tabs/web_state_list_delegate.h"
#import "ios/shared/chrome/browser/tabs/web_state_list_observer.h"
#import "ios/shared/chrome/browser/tabs/web_state_list_order_controller.h"
#import "ios/web/public/navigation_manager.h"
@@ -87,9 +88,13 @@ bool WebStateList::WebStateWrapper::WasOpenedBy(const web::WebState* opener,
return opener_last_committed_index_ == opener_navigation_index;
}
-WebStateList::WebStateList(WebStateOwnership ownership)
- : web_state_ownership_(ownership),
- order_controller_(base::MakeUnique<WebStateListOrderController>(this)) {}
+WebStateList::WebStateList(WebStateListDelegate* delegate,
+ WebStateOwnership ownership)
+ : delegate_(delegate),
+ web_state_ownership_(ownership),
+ order_controller_(base::MakeUnique<WebStateListOrderController>(this)) {
+ DCHECK(delegate_);
+}
WebStateList::~WebStateList() {
// Once WebStateList owns the WebState and has a CloseWebStateAt() method,
@@ -153,6 +158,8 @@ void WebStateList::InsertWebState(int index,
web::WebState* web_state,
web::WebState* opener) {
DCHECK(ContainsIndex(index) || index == count());
+ delegate_->WillAddWebState(web_state);
+
web_state_wrappers_.insert(web_state_wrappers_.begin() + index,
base::MakeUnique<WebStateWrapper>(web_state));
@@ -207,6 +214,8 @@ web::WebState* WebStateList::ReplaceWebStateAt(int index,
web::WebState* web_state,
web::WebState* opener) {
DCHECK(ContainsIndex(index));
+ delegate_->WillAddWebState(web_state);
+
ClearOpenersReferencing(index);
auto& web_state_wrapper = web_state_wrappers_[index];

Powered by Google App Engine
This is Rietveld 408576698