Index: ios/shared/chrome/browser/tabs/web_state_list_delegate.h |
diff --git a/ios/shared/chrome/browser/tabs/web_state_list_delegate.h b/ios/shared/chrome/browser/tabs/web_state_list_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a2fc458ecdd36b1776c792e3d9d08d982beeeb98 |
--- /dev/null |
+++ b/ios/shared/chrome/browser/tabs/web_state_list_delegate.h |
@@ -0,0 +1,35 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef IOS_SHARED_CHROME_BROWSER_TABS_WEB_STATE_LIST_DELEGATE_H_ |
+#define IOS_SHARED_CHROME_BROWSER_TABS_WEB_STATE_LIST_DELEGATE_H_ |
+ |
+#include "base/macros.h" |
+ |
+namespace web { |
+class WebState; |
+} |
+ |
+// A delegate interface that the WebStateList uses to perform work that it |
+// cannot do itself such as attaching tab helpers, ... |
+class WebStateListDelegate { |
+ public: |
+ WebStateListDelegate() = default; |
+ virtual ~WebStateListDelegate() = default; |
+ |
+ // Notifies the delegate that the specified WebState will be added to the |
+ // WebStateList (via insertion/appending/replacing existing) and allows it |
+ // to do any preparation that it deems necessary. |
+ virtual void WillAddWebState(web::WebState* web_state) = 0; |
+ |
+ // Notifies the delegate that the specified WebState has been detached from |
+ // the WebStateList (via detaching/closing/replacing existing) and allows it |
+ // to do any clean up that it deems necessary. |
+ virtual void WebStateDetached(web::WebState* web_state) = 0; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(WebStateListDelegate); |
+}; |
+ |
+#endif // IOS_SHARED_CHROME_BROWSER_TABS_WEB_STATE_LIST_DELEGATE_H_ |