Index: ios/chrome/browser/ui/tab_switcher/session_changes.h |
diff --git a/ios/chrome/browser/ui/tab_switcher/session_changes.h b/ios/chrome/browser/ui/tab_switcher/session_changes.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a765f4f8874419b96a7212ab1f96c3d2fce316ee |
--- /dev/null |
+++ b/ios/chrome/browser/ui/tab_switcher/session_changes.h |
@@ -0,0 +1,46 @@ |
+// Copyright 2016 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_CHROME_BROWSER_UI_TAB_SWITCHER_SESSION_CHANGES_H_ |
+#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_SESSION_CHANGES_H_ |
+ |
+#include <vector> |
+ |
+namespace ios_internal { |
+ |
+// This structure represents the changes a session undergoes. |
+// It is used to update the UICollectionView showing a set of tabs. |
+class SessionChanges { |
+ public: |
+ SessionChanges(std::vector<size_t> const& tabHashesInInitialState, |
+ std::vector<size_t> const& tabHashesInFinalState); |
+ ~SessionChanges(); |
+ SessionChanges(const SessionChanges& sessionChanges) = delete; |
+ SessionChanges& operator=(const SessionChanges& sessionChanges) = delete; |
+ |
+ std::vector<size_t> const& deletions() const; |
+ std::vector<size_t> const& insertions() const; |
+ std::vector<size_t> const& updates() const; |
+ |
+ bool hasChanges() const; |
+ |
+ private: |
+ // Those vectors contain indexes of tabs. |
+ // The indexes are relative to a tab model snapshot, or a distant session. |
+ // To be in accordance with the UICollectionView's |performBatchUpdates| |
+ // method: |
+ // -the indexes in |updates| are relative to the previous state of the |
+ // session. |
+ // -the indexes in |deletions| are relative to the previous state of the |
+ // session. |
+ // -the indexes in |insertions| are relative to the final state of the |
+ // session. |
+ std::vector<size_t> deletions_; |
+ std::vector<size_t> insertions_; |
+ std::vector<size_t> updates_; |
+}; |
+ |
+} // namespace ios_internal |
+ |
+#endif // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_SESSION_CHANGES_H_ |