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

Side by Side Diff: ios/shared/chrome/browser/tabs/web_state_list_unittest.mm

Issue 2799723002: [ios] Move WebStateList to ios/chrome/browser/web_state_list. (Closed)
Patch Set: Rebase. 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/shared/chrome/browser/tabs/web_state_list.h"
6
7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h"
9 #include "base/supports_user_data.h"
10 #import "ios/shared/chrome/browser/tabs/fake_web_state_list_delegate.h"
11 #import "ios/shared/chrome/browser/tabs/web_state_list_observer.h"
12 #import "ios/shared/chrome/browser/tabs/web_state_opener.h"
13 #import "ios/web/public/test/fakes/test_navigation_manager.h"
14 #import "ios/web/public/test/fakes/test_web_state.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "testing/platform_test.h"
17
18 #if !defined(__has_feature) || !__has_feature(objc_arc)
19 #error "This file requires ARC support."
20 #endif
21
22 namespace {
23 const char kURL0[] = "https://chromium.org/0";
24 const char kURL1[] = "https://chromium.org/1";
25 const char kURL2[] = "https://chromium.org/2";
26
27 // WebStateList observer that records which events have been called by the
28 // WebStateList.
29 class WebStateListTestObserver : public WebStateListObserver {
30 public:
31 WebStateListTestObserver() = default;
32
33 // Reset statistics whether events have been called.
34 void ResetStatistics() {
35 web_state_inserted_called_ = false;
36 web_state_moved_called_ = false;
37 web_state_replaced_called_ = false;
38 web_state_detached_called_ = false;
39 }
40
41 // Returns whether WebStateInsertedAt was invoked.
42 bool web_state_inserted_called() const { return web_state_inserted_called_; }
43
44 // Returns whether WebStateMoved was invoked.
45 bool web_state_moved_called() const { return web_state_moved_called_; }
46
47 // Returns whether WebStateReplacedAt was invoked.
48 bool web_state_replaced_called() const { return web_state_replaced_called_; }
49
50 // Returns whether WebStateDetachedAt was invoked.
51 bool web_state_detached_called() const { return web_state_detached_called_; }
52
53 // WebStateListObserver implementation.
54 void WebStateInsertedAt(WebStateList* web_state_list,
55 web::WebState* web_state,
56 int index) override {
57 web_state_inserted_called_ = true;
58 }
59
60 void WebStateMoved(WebStateList* web_state_list,
61 web::WebState* web_state,
62 int from_index,
63 int to_index) override {
64 web_state_moved_called_ = true;
65 }
66
67 void WebStateReplacedAt(WebStateList* web_state_list,
68 web::WebState* old_web_state,
69 web::WebState* new_web_state,
70 int index) override {
71 web_state_replaced_called_ = true;
72 }
73
74 void WebStateDetachedAt(WebStateList* web_state_list,
75 web::WebState* web_state,
76 int index) override {
77 web_state_detached_called_ = true;
78 }
79
80 private:
81 bool web_state_inserted_called_ = false;
82 bool web_state_moved_called_ = false;
83 bool web_state_replaced_called_ = false;
84 bool web_state_detached_called_ = false;
85
86 DISALLOW_COPY_AND_ASSIGN(WebStateListTestObserver);
87 };
88
89 // A fake NavigationManager used to test opener-opened relationship in the
90 // WebStateList.
91 class FakeNavigationManager : public web::TestNavigationManager {
92 public:
93 FakeNavigationManager() = default;
94
95 // web::NavigationManager implementation.
96 int GetLastCommittedItemIndex() const override {
97 return last_committed_item_index;
98 }
99
100 bool CanGoBack() const override { return last_committed_item_index > 0; }
101
102 bool CanGoForward() const override {
103 return last_committed_item_index < INT_MAX;
104 }
105
106 void GoBack() override {
107 DCHECK(CanGoBack());
108 --last_committed_item_index;
109 }
110
111 void GoForward() override {
112 DCHECK(CanGoForward());
113 ++last_committed_item_index;
114 }
115
116 void GoToIndex(int index) override { last_committed_item_index = index; }
117
118 int last_committed_item_index = 0;
119
120 DISALLOW_COPY_AND_ASSIGN(FakeNavigationManager);
121 };
122
123 } // namespace
124
125 class WebStateListTest : public PlatformTest {
126 public:
127 WebStateListTest() : web_state_list_(&web_state_list_delegate_) {
128 web_state_list_.AddObserver(&observer_);
129 }
130
131 ~WebStateListTest() override { web_state_list_.RemoveObserver(&observer_); }
132
133 protected:
134 FakeWebStateListDelegate web_state_list_delegate_;
135 WebStateList web_state_list_;
136 WebStateListTestObserver observer_;
137
138 std::unique_ptr<web::WebState> CreateWebState(const char* url) {
139 auto test_web_state = base::MakeUnique<web::TestWebState>();
140 test_web_state->SetCurrentURL(GURL(url));
141 test_web_state->SetNavigationManager(
142 base::MakeUnique<FakeNavigationManager>());
143 // TODO(crbug.com/703565): remove std::move() once Xcode 9.0+ is required.
144 return std::move(test_web_state);
145 }
146
147 private:
148 DISALLOW_COPY_AND_ASSIGN(WebStateListTest);
149 };
150
151 TEST_F(WebStateListTest, IsEmpty) {
152 EXPECT_EQ(0, web_state_list_.count());
153 EXPECT_TRUE(web_state_list_.empty());
154
155 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
156
157 EXPECT_TRUE(observer_.web_state_inserted_called());
158 EXPECT_EQ(1, web_state_list_.count());
159 EXPECT_FALSE(web_state_list_.empty());
160 }
161
162 TEST_F(WebStateListTest, InsertUrlSingle) {
163 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
164
165 EXPECT_TRUE(observer_.web_state_inserted_called());
166 EXPECT_EQ(1, web_state_list_.count());
167 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
168 }
169
170 TEST_F(WebStateListTest, InsertUrlMultiple) {
171 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
172 web_state_list_.InsertWebState(0, CreateWebState(kURL1));
173 web_state_list_.InsertWebState(1, CreateWebState(kURL2));
174
175 EXPECT_TRUE(observer_.web_state_inserted_called());
176 EXPECT_EQ(3, web_state_list_.count());
177 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
178 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
179 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
180 }
181
182 TEST_F(WebStateListTest, MoveWebStateAtRightByOne) {
183 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
184 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
185 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
186
187 // Sanity check before closing WebState.
188 EXPECT_EQ(3, web_state_list_.count());
189 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
190 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
191 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
192
193 observer_.ResetStatistics();
194 web_state_list_.MoveWebStateAt(0, 1);
195
196 EXPECT_TRUE(observer_.web_state_moved_called());
197 EXPECT_EQ(3, web_state_list_.count());
198 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
199 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
200 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
201 }
202
203 TEST_F(WebStateListTest, MoveWebStateAtRightByMoreThanOne) {
204 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
205 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
206 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
207
208 // Sanity check before closing WebState.
209 EXPECT_EQ(3, web_state_list_.count());
210 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
211 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
212 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
213
214 observer_.ResetStatistics();
215 web_state_list_.MoveWebStateAt(0, 2);
216
217 EXPECT_TRUE(observer_.web_state_moved_called());
218 EXPECT_EQ(3, web_state_list_.count());
219 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
220 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
221 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
222 }
223
224 TEST_F(WebStateListTest, MoveWebStateAtLeftByOne) {
225 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
226 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
227 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
228
229 // Sanity check before closing WebState.
230 EXPECT_EQ(3, web_state_list_.count());
231 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
232 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
233 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
234
235 observer_.ResetStatistics();
236 web_state_list_.MoveWebStateAt(2, 1);
237
238 EXPECT_TRUE(observer_.web_state_moved_called());
239 EXPECT_EQ(3, web_state_list_.count());
240 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
241 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
242 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
243 }
244
245 TEST_F(WebStateListTest, MoveWebStateAtLeftByMoreThanOne) {
246 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
247 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
248 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
249
250 // Sanity check before closing WebState.
251 EXPECT_EQ(3, web_state_list_.count());
252 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
253 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
254 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
255
256 observer_.ResetStatistics();
257 web_state_list_.MoveWebStateAt(2, 0);
258
259 EXPECT_TRUE(observer_.web_state_moved_called());
260 EXPECT_EQ(3, web_state_list_.count());
261 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
262 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
263 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
264 }
265
266 TEST_F(WebStateListTest, MoveWebStateAtSameIndex) {
267 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
268 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
269 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
270
271 // Sanity check before closing WebState.
272 EXPECT_EQ(3, web_state_list_.count());
273 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
274 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
275 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
276
277 observer_.ResetStatistics();
278 web_state_list_.MoveWebStateAt(2, 2);
279
280 EXPECT_FALSE(observer_.web_state_moved_called());
281 EXPECT_EQ(3, web_state_list_.count());
282 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
283 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
284 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
285 }
286
287 TEST_F(WebStateListTest, ReplaceWebStateAt) {
288 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
289 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
290
291 // Sanity check before replacing WebState.
292 EXPECT_EQ(2, web_state_list_.count());
293 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
294 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
295
296 observer_.ResetStatistics();
297 std::unique_ptr<web::WebState> old_web_state(
298 web_state_list_.ReplaceWebStateAt(1, CreateWebState(kURL2)));
299
300 EXPECT_TRUE(observer_.web_state_replaced_called());
301 EXPECT_EQ(2, web_state_list_.count());
302 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
303 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
304 EXPECT_EQ(kURL1, old_web_state->GetVisibleURL().spec());
305 }
306
307 TEST_F(WebStateListTest, DetachWebStateAtIndexBegining) {
308 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
309 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
310 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
311
312 // Sanity check before closing WebState.
313 EXPECT_EQ(3, web_state_list_.count());
314 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
315 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
316 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
317
318 observer_.ResetStatistics();
319 web_state_list_.DetachWebStateAt(0);
320
321 EXPECT_TRUE(observer_.web_state_detached_called());
322 EXPECT_EQ(2, web_state_list_.count());
323 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
324 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
325 }
326
327 TEST_F(WebStateListTest, DetachWebStateAtIndexMiddle) {
328 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
329 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
330 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
331
332 // Sanity check before closing WebState.
333 EXPECT_EQ(3, web_state_list_.count());
334 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
335 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
336 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
337
338 observer_.ResetStatistics();
339 web_state_list_.DetachWebStateAt(1);
340
341 EXPECT_TRUE(observer_.web_state_detached_called());
342 EXPECT_EQ(2, web_state_list_.count());
343 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
344 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
345 }
346
347 TEST_F(WebStateListTest, DetachWebStateAtIndexLast) {
348 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
349 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
350 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
351
352 // Sanity check before closing WebState.
353 EXPECT_EQ(3, web_state_list_.count());
354 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
355 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
356 EXPECT_EQ(kURL2, web_state_list_.GetWebStateAt(2)->GetVisibleURL().spec());
357
358 observer_.ResetStatistics();
359 web_state_list_.DetachWebStateAt(2);
360
361 EXPECT_TRUE(observer_.web_state_detached_called());
362 EXPECT_EQ(2, web_state_list_.count());
363 EXPECT_EQ(kURL0, web_state_list_.GetWebStateAt(0)->GetVisibleURL().spec());
364 EXPECT_EQ(kURL1, web_state_list_.GetWebStateAt(1)->GetVisibleURL().spec());
365 }
366
367 TEST_F(WebStateListTest, OpenersEmptyList) {
368 EXPECT_TRUE(web_state_list_.empty());
369
370 EXPECT_EQ(WebStateList::kInvalidIndex,
371 web_state_list_.GetIndexOfNextWebStateOpenedBy(
372 nullptr, WebStateList::kInvalidIndex, false));
373 EXPECT_EQ(WebStateList::kInvalidIndex,
374 web_state_list_.GetIndexOfLastWebStateOpenedBy(
375 nullptr, WebStateList::kInvalidIndex, false));
376
377 EXPECT_EQ(WebStateList::kInvalidIndex,
378 web_state_list_.GetIndexOfNextWebStateOpenedBy(
379 nullptr, WebStateList::kInvalidIndex, true));
380 EXPECT_EQ(WebStateList::kInvalidIndex,
381 web_state_list_.GetIndexOfLastWebStateOpenedBy(
382 nullptr, WebStateList::kInvalidIndex, true));
383 }
384
385 TEST_F(WebStateListTest, OpenersNothingOpened) {
386 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
387 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
388 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
389
390 for (int index = 0; index < web_state_list_.count(); ++index) {
391 web::WebState* opener = web_state_list_.GetWebStateAt(index);
392 EXPECT_EQ(
393 WebStateList::kInvalidIndex,
394 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, false));
395 EXPECT_EQ(
396 WebStateList::kInvalidIndex,
397 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, false));
398
399 EXPECT_EQ(
400 WebStateList::kInvalidIndex,
401 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, index, true));
402 EXPECT_EQ(
403 WebStateList::kInvalidIndex,
404 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, index, true));
405 }
406 }
407
408 TEST_F(WebStateListTest, OpenersChildsAfterOpener) {
409 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
410 web::WebState* opener = web_state_list_.GetWebStateAt(0);
411
412 web_state_list_.InsertWebState(1, CreateWebState(kURL1));
413 web_state_list_.SetOpenerOfWebStateAt(1, WebStateOpener(opener));
414
415 web_state_list_.InsertWebState(2, CreateWebState(kURL2));
416 web_state_list_.SetOpenerOfWebStateAt(2, WebStateOpener(opener));
417
418 const int start_index = web_state_list_.GetIndexOfWebState(opener);
419 EXPECT_EQ(1,
420 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
421 false));
422 EXPECT_EQ(2,
423 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
424 false));
425
426 EXPECT_EQ(1,
427 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
428 true));
429 EXPECT_EQ(2,
430 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
431 true));
432
433 // Simulate a navigation on the opener, results should not change if not
434 // using groups, but should now be kInvalidIndex otherwise.
435 opener->GetNavigationManager()->GoForward();
436
437 EXPECT_EQ(1,
438 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
439 false));
440 EXPECT_EQ(2,
441 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
442 false));
443
444 EXPECT_EQ(WebStateList::kInvalidIndex,
445 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
446 true));
447 EXPECT_EQ(WebStateList::kInvalidIndex,
448 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
449 true));
450
451 // Add a new WebState with the same opener. It should be considered the next
452 // WebState if groups are considered and the last independently on whether
453 // groups are used or not.
454 web_state_list_.InsertWebState(3, CreateWebState(kURL2));
455 web_state_list_.SetOpenerOfWebStateAt(3, WebStateOpener(opener));
456
457 EXPECT_EQ(1,
458 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
459 false));
460 EXPECT_EQ(3,
461 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
462 false));
463
464 EXPECT_EQ(3,
465 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
466 true));
467 EXPECT_EQ(3,
468 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
469 true));
470 }
471
472 TEST_F(WebStateListTest, OpenersChildsBeforeOpener) {
473 web_state_list_.InsertWebState(0, CreateWebState(kURL0));
474 web::WebState* opener = web_state_list_.GetWebStateAt(0);
475
476 web_state_list_.InsertWebState(0, CreateWebState(kURL1));
477 web_state_list_.SetOpenerOfWebStateAt(0, WebStateOpener(opener));
478
479 web_state_list_.InsertWebState(1, CreateWebState(kURL2));
480 web_state_list_.SetOpenerOfWebStateAt(1, WebStateOpener(opener));
481
482 const int start_index = web_state_list_.GetIndexOfWebState(opener);
483 EXPECT_EQ(WebStateList::kInvalidIndex,
484 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
485 false));
486 EXPECT_EQ(WebStateList::kInvalidIndex,
487 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
488 false));
489
490 EXPECT_EQ(WebStateList::kInvalidIndex,
491 web_state_list_.GetIndexOfNextWebStateOpenedBy(opener, start_index,
492 true));
493 EXPECT_EQ(WebStateList::kInvalidIndex,
494 web_state_list_.GetIndexOfLastWebStateOpenedBy(opener, start_index,
495 true));
496 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698