1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <map>
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/basictypes.h"
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/automation/automation_tab_helper.h"
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/automation/mock_tab_event_observer.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/browser/tab_contents/tab_contents.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/browser/tab_contents/test_tab_contents.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "testing/gmock/include/gmock/gmock.h"
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "testing/gtest/include/gtest/gtest.h"
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenusing testing::_;
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass AutomationTabHelperTest : public TabContentsWrapperTestHarness {
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetUp() {
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    TabContentsWrapperTestHarness::SetUp();
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    mock_observer_.StartObserving(tab_helper());
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen protected:
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // These are here so that we don't have to add each test as a
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // |AutomationTabHelper| friend.
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void StartLoading() {
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    tab_helper()->DidStartLoading();
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void StopLoading() {
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    tab_helper()->DidStopLoading();
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void TabContentsDestroyed() {
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    tab_helper()->TabContentsDestroyed(contents_wrapper()->tab_contents());
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void WillPerformClientRedirect(int64 frame_id) {
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    tab_helper()->OnWillPerformClientRedirect(frame_id, 0);
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void CompleteOrCancelClientRedirect(int64 frame_id) {
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    tab_helper()->OnDidCompleteOrCancelClientRedirect(frame_id);
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  AutomationTabHelper* tab_helper() {
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    return contents_wrapper()->automation_tab_helper();
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockTabEventObserver mock_observer_;
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenACTION_P2(CheckHasPendingLoads, tab_helper, has_pending_loads) {
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(has_pending_loads, tab_helper->has_pending_loads());
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, AddAndRemoveObserver) {
61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    testing::InSequence expect_in_sequence;
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    EXPECT_CALL(mock_observer_, OnFirstPendingLoad(_));
66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    EXPECT_CALL(check, Call());
67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  check.Call();
71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  tab_helper()->RemoveObserver(&mock_observer_);
72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, StartStopLoading) {
76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()))
80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      .WillOnce(CheckHasPendingLoads(tab_helper(), true));
81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(check, Call());
82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()))
83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      .WillOnce(CheckHasPendingLoads(tab_helper(), false));
84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(tab_helper()->has_pending_loads());
88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  check.Call();
89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StopLoading();
90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, DuplicateLoads) {
94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StopLoading();
101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StopLoading();
102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, ClientRedirect) {
105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()))
109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      .WillOnce(CheckHasPendingLoads(tab_helper(), true));
110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(check, Call());
111ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()))
112ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      .WillOnce(CheckHasPendingLoads(tab_helper(), false));
113ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
115ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(tab_helper()->has_pending_loads());
116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  check.Call();
117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
121ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, DiscardExtraClientRedirects) {
122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
124ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
125ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
128ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
129ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(2);
131ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, StartStopLoadingWithClientRedirect) {
134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
135ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
136ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
140ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
141ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
142ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
143ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StopLoading();
144ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
145ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
146ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, ClientRedirectBeforeLoad) {
147ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
148ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(check, Call());
152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(tab_helper()->has_pending_loads());
158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  check.Call();
159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StopLoading();
160ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
162ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, ClientRedirectAfterLoad) {
163ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
164ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
165ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
166ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
167ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(check, Call());
168ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
169ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
170ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
171ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
172ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StopLoading();
173ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(tab_helper()->has_pending_loads());
174ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  check.Call();
175ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
176ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
177ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
178ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
179ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, AllFramesMustFinishRedirects) {
180ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
181ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
182ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
183ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
184ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(check, Call());
185ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
186ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
187ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
188ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(2);
189ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(1);
190ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  check.Call();
191ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(tab_helper()->has_pending_loads());
192ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  CompleteOrCancelClientRedirect(2);
193ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
194ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
195ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
196ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(AutomationTabHelperTest, DestroyedTabStopsLoading) {
197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::MockFunction<void()> check;
198ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
199ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  testing::InSequence expect_in_sequence;
200ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnFirstPendingLoad(contents()));
201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(mock_observer_, OnNoMorePendingLoads(contents()));
202ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
203ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  StartLoading();
204ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  WillPerformClientRedirect(1);
205ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  TabContentsDestroyed();
206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(tab_helper()->has_pending_loads());
207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
208