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

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

Issue 2812623002: Revert of [ios] Move WebStateList to ios/chrome/browser/web_state_list. (Closed)
Patch Set: Created 3 years, 8 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_unittest.mm
diff --git a/ios/shared/chrome/browser/tabs/web_state_list_unittest.mm b/ios/shared/chrome/browser/tabs/web_state_list_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..a786270f700803b1e8b7da895dec4de410eb4e05
--- /dev/null
+++ b/ios/shared/chrome/browser/tabs/web_state_list_unittest.mm
@@ -0,0 +1,496 @@
+// 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.
+
+#import "ios/shared/chrome/browser/tabs/web_state_list.h"
+
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+#include "base/supports_user_data.h"
+#import "ios/shared/chrome/browser/tabs/fake_web_state_list_delegate.h"
+#import "ios/shared/chrome/browser/tabs/web_state_list_observer.h"
+#import "ios/shared/chrome/browser/tabs/web_state_opener.h"
+#import "ios/web/public/test/fakes/test_navigation_manager.h"
+#import "ios/web/public/test/fakes/test_web_state.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/platform_test.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+const char kURL0[] = "https://chromium.org/0";
+const char kURL1[] = "https://chromium.org/1";
+const char kURL2[] = "https://chromium.org/2";
+
+// WebStateList observer that records which events have been called by the
+// WebStateList.
+class WebStateListTestObserver : public WebStateListObserver {
+ public:
+ WebStateListTestObserver() = default;
+
+ // Reset statistics whether events have been called.
+ void ResetStatistics() {
+ web_state_inserted_called_ = false;
+ web_state_moved_called_ = false;
+ web_state_replaced_called_ = false;
+ web_state_detached_called_ = false;
+ }
+
+ // Returns whether WebStateInsertedAt was invoked.
+ bool web_state_inserted_called() const { return web_state_inserted_called_; }
+
+ // Returns whether WebStateMoved was invoked.
+ bool web_state_moved_called() const { return web_state_moved_called_; }
+
+ // Returns whether WebStateReplacedAt was invoked.
+ bool web_state_replaced_called() const { return web_state_replaced_called_; }
+
+ // Returns whether WebStateDetachedAt was invoked.
+ bool web_state_detached_called() const { return web_state_detached_called_; }
+
+ // WebStateListObserver implementation.
+ void WebStateInsertedAt(WebStateList* web_state_list,
+ web::WebState* web_state,
+ int index) override {
+ web_state_inserted_called_ = true;
+ }
+
+ void WebStateMoved(WebStateList* web_state_list,
+ web::WebState* web_state,
+ int from_index,
+ int to_index) override {
+ web_state_moved_called_ = true;
+ }
+
+ void WebStateReplacedAt(WebStateList* web_state_list,
+ web::WebState* old_web_state,
+ web::WebState* new_web_state,
+ int index) override {
+ web_state_replaced_called_ = true;
+ }
+
+ void WebStateDetachedAt(WebStateList* web_state_list,
+ web::WebState* web_state,
+ int index) override {
+ web_state_detached_called_ = true;
+ }
+
+ private:
+ bool web_state_inserted_called_ = false;
+ bool web_state_moved_called_ = false;
+ bool web_state_replaced_called_ = false;
+ bool web_state_detached_called_ = false;
+
+ DISALLOW_COPY_AND_ASSIGN(WebStateListTestObserver);
+};
+
+// A fake NavigationManager used to test opener-opened relationship in the
+// WebStateList.
+class FakeNavigationManager : public web::TestNavigationManager {
+ public:
+ FakeNavigationManager() = default;
+
+ // web::NavigationManager implementation.
+ int GetLastCommittedItemIndex() const override {
+ return last_committed_item_index;
+ }
+
+ bool CanGoBack() const override { return last_committed_item_index > 0; }
+
+ bool CanGoForward() const override {
+ return last_committed_item_index < INT_MAX;
+ }
+
+ void GoBack() override {
+ DCHECK(CanGoBack());
+ --last_committed_item_index;
+ }
+
+ void GoForward() override {
+ DCHECK(CanGoForward());
+ ++last_committed_item_index;
+ }
+
+ void GoToIndex(int index) override { last_committed_item_index = index; }
+
+ int last_committed_item_index = 0;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeNavigationManager);
+};
+
+} // namespace
+
+class WebStateListTest : public PlatformTest {
+ public:
+ WebStateListTest() : web_state_list_(&web_state_list_delegate_) {
+ web_state_list_.AddObserver(&observer_);
+ }
+
+ ~WebStateListTest() override { web_state_list_.RemoveObserver(&observer_); }
+
+ protected:
+ FakeWebStateListDelegate web_state_list_delegate_;
+ WebStateList web_state_list_;
+ WebStateListTestObserver observer_;
+
+ std::unique_ptr<web::WebState> CreateWebState(const char* url) {
+ auto test_web_state = base::MakeUnique<web::TestWebState>();
+ test_web_state->SetCurrentURL(GURL(url));
+ test_web_state->SetNavigationManager(
+ base::MakeUnique<FakeNavigationManager>());
+ // TODO(crbug.com/703565): remove std::move() once Xcode 9.0+ is required.
+ return std::move(test_web_state);
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(WebStateListTest);
+};
+
+TEST_F(WebStateListTest, IsEmpty) {
+ EXPECT_EQ(0, web_state_list_.count());
+ EXPECT_TRUE(web_state_list_.empty());
+
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+
+ EXPECT_TRUE(observer_.web_state_inserted_called());
+ EXPECT_EQ(1, web_state_list_.count());
+ EXPECT_FALSE(web_state_list_.empty());
+}
+
+TEST_F(WebStateListTest, InsertUrlSingle) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+
+ EXPECT_TRUE(observer_.web_state_inserted_called());
+ EXPECT_EQ(1, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, InsertUrlMultiple) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(0, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL2));
+
+ EXPECT_TRUE(observer_.web_state_inserted_called());
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, MoveWebStateAtRightByOne) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.MoveWebStateAt(0, 1);
+
+ EXPECT_TRUE(observer_.web_state_moved_called());
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, MoveWebStateAtRightByMoreThanOne) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.MoveWebStateAt(0, 2);
+
+ EXPECT_TRUE(observer_.web_state_moved_called());
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, MoveWebStateAtLeftByOne) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.MoveWebStateAt(2, 1);
+
+ EXPECT_TRUE(observer_.web_state_moved_called());
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, MoveWebStateAtLeftByMoreThanOne) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.MoveWebStateAt(2, 0);
+
+ EXPECT_TRUE(observer_.web_state_moved_called());
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, MoveWebStateAtSameIndex) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.MoveWebStateAt(2, 2);
+
+ EXPECT_FALSE(observer_.web_state_moved_called());
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, ReplaceWebStateAt) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+
+ // Sanity check before replacing WebState.
+ EXPECT_EQ(2, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ std::unique_ptr<web::WebState> old_web_state(
+ web_state_list_.ReplaceWebStateAt(1, CreateWebState(kURL2)));
+
+ EXPECT_TRUE(observer_.web_state_replaced_called());
+ EXPECT_EQ(2, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, old_web_state->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, DetachWebStateAtIndexBegining) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.DetachWebStateAt(0);
+
+ EXPECT_TRUE(observer_.web_state_detached_called());
+ EXPECT_EQ(2, web_state_list_.count());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, DetachWebStateAtIndexMiddle) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.DetachWebStateAt(1);
+
+ EXPECT_TRUE(observer_.web_state_detached_called());
+ EXPECT_EQ(2, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, DetachWebStateAtIndexLast) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ // Sanity check before closing WebState.
+ EXPECT_EQ(3, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
+
+ observer_.ResetStatistics();
+ web_state_list_.DetachWebStateAt(2);
+
+ EXPECT_TRUE(observer_.web_state_detached_called());
+ EXPECT_EQ(2, web_state_list_.count());
+ EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
+ EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
+}
+
+TEST_F(WebStateListTest, OpenersEmptyList) {
+ EXPECT_TRUE(web_state_list_.empty());
+
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(
+ nullptr, WebStateList::kInvalidIndex, false));
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(
+ nullptr, WebStateList::kInvalidIndex, false));
+
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(
+ nullptr, WebStateList::kInvalidIndex, true));
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(
+ nullptr, WebStateList::kInvalidIndex, true));
+}
+
+TEST_F(WebStateListTest, OpenersNothingOpened) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+
+ for (int index = 0; index < web_state_list_.count(); ++index) {
+ web::WebState* opener = web_state_list_.GetWebStateAt(index);
+ EXPECT_EQ(
+ WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, false));
+ EXPECT_EQ(
+ WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, false));
+
+ EXPECT_EQ(
+ WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, true));
+ EXPECT_EQ(
+ WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, true));
+ }
+}
+
+TEST_F(WebStateListTest, OpenersChildsAfterOpener) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web::WebState* opener = web_state_list_.GetWebStateAt(0);
+
+ web_state_list_.InsertWebState(1, CreateWebState(kURL1));
+ web_state_list_.SetOpenerOfWebStateAt(1, WebStateOpener(opener));
+
+ web_state_list_.InsertWebState(2, CreateWebState(kURL2));
+ web_state_list_.SetOpenerOfWebStateAt(2, WebStateOpener(opener));
+
+ const int start_index = web_state_list_.GetIndexOfWebState(opener);
+ EXPECT_EQ(1,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ false));
+ EXPECT_EQ(2,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ false));
+
+ EXPECT_EQ(1,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ true));
+ EXPECT_EQ(2,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ true));
+
+ // Simulate a navigation on the opener, results should not change if not
+ // using groups, but should now be kInvalidIndex otherwise.
+ opener->GetNavigationManager()->GoForward();
+
+ EXPECT_EQ(1,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ false));
+ EXPECT_EQ(2,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ false));
+
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ true));
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ true));
+
+ // Add a new WebState with the same opener. It should be considered the next
+ // WebState if groups are considered and the last independently on whether
+ // groups are used or not.
+ web_state_list_.InsertWebState(3, CreateWebState(kURL2));
+ web_state_list_.SetOpenerOfWebStateAt(3, WebStateOpener(opener));
+
+ EXPECT_EQ(1,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ false));
+ EXPECT_EQ(3,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ false));
+
+ EXPECT_EQ(3,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ true));
+ EXPECT_EQ(3,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ true));
+}
+
+TEST_F(WebStateListTest, OpenersChildsBeforeOpener) {
+ web_state_list_.InsertWebState(0, CreateWebState(kURL0));
+ web::WebState* opener = web_state_list_.GetWebStateAt(0);
+
+ web_state_list_.InsertWebState(0, CreateWebState(kURL1));
+ web_state_list_.SetOpenerOfWebStateAt(0, WebStateOpener(opener));
+
+ web_state_list_.InsertWebState(1, CreateWebState(kURL2));
+ web_state_list_.SetOpenerOfWebStateAt(1, WebStateOpener(opener));
+
+ const int start_index = web_state_list_.GetIndexOfWebState(opener);
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ false));
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ false));
+
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
+ true));
+ EXPECT_EQ(WebStateList::kInvalidIndex,
+ web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
+ true));
+}

Powered by Google App Engine
This is Rietveld 408576698