| 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_;
 | 
|  
 | 
| 
 |