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

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

Issue 2775623002: [ios] WebStateList owns all WebState it manages. (Closed)
Patch Set: Fix ios_chrome_unittests. 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.h
diff --git a/ios/shared/chrome/browser/tabs/web_state_list.h b/ios/shared/chrome/browser/tabs/web_state_list.h
index e7f9fe7bb7f47b016a1484e8e46450c492c6576c..4038cd76465ca4c50c4ee39e45d545296b302663 100644
--- a/ios/shared/chrome/browser/tabs/web_state_list.h
+++ b/ios/shared/chrome/browser/tabs/web_state_list.h
@@ -22,17 +22,10 @@ namespace web {
class WebState;
}
-// Manages a list of WebStates. May owns the WebState depending on the ownership
-// setting (initialised during construction, should eventually always be "owned"
-// once ownership of Tab is sane, see http://crbug.com/546222 for progress).
+// Manages a list of WebStates.
class WebStateList {
public:
- enum WebStateOwnership {
- WebStateBorrowed,
- WebStateOwned,
- };
-
- WebStateList(WebStateListDelegate* delegate, WebStateOwnership ownership);
+ explicit WebStateList(WebStateListDelegate* delegate);
~WebStateList();
// Returns whether the model is empty or not.
@@ -85,13 +78,13 @@ class WebStateList {
bool use_group) const;
// Inserts the specified WebState at the specified index.
- void InsertWebState(int index, web::WebState* web_state);
+ void InsertWebState(int index, std::unique_ptr<web::WebState> web_state);
// Inserts the specified WebState at the best position in the WebStateList
// given the specified transition, opener, etc. It defaults to inserting the
// WebState at the end of the list.
void AppendWebState(ui::PageTransition transition,
- web::WebState* web_state,
+ std::unique_ptr<web::WebState> web_state,
WebStateOpener opener);
// Moves the WebState at the specified index to another index.
@@ -100,12 +93,19 @@ class WebStateList {
// Replaces the WebState at the specified index with new WebState. Returns
// the old WebState at that index to the caller (abandon ownership of the
// returned WebState).
- web::WebState* ReplaceWebStateAt(int index,
- web::WebState* web_state) WARN_UNUSED_RESULT;
+ std::unique_ptr<web::WebState> ReplaceWebStateAt(
+ int index,
+ std::unique_ptr<web::WebState> web_state);
// Detaches the WebState at the specified index. Returns the detached WebState
// to the caller (abandon ownership of the returned WebState).
- web::WebState* DetachWebStateAt(int index) WARN_UNUSED_RESULT;
+ std::unique_ptr<web::WebState> DetachWebStateAt(int index);
+
+ // Closes and destroys the WebState at the specified index.
+ void CloseWebStateAt(int index);
+
+ // Closes and destroys all WebStates.
+ void CloseAllWebStates();
// Makes the WebState at the specified index the active WebState.
void ActivateWebStateAt(int index);
@@ -143,10 +143,6 @@ class WebStateList {
// The WebStateList delegate.
WebStateListDelegate* delegate_;
- // Whether this WebStateList owns the WebState it hosts.
- // TODO(crbug.com/546222): remove once this is always "owned".
- const WebStateOwnership web_state_ownership_;
-
// Wrappers to the WebStates hosted by the WebStateList.
std::vector<std::unique_ptr<WebStateWrapper>> web_state_wrappers_;

Powered by Google App Engine
This is Rietveld 408576698