summaryrefslogtreecommitdiffstats
path: root/chrome_frame/test/no_interference_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome_frame/test/no_interference_test.cc')
-rw-r--r--chrome_frame/test/no_interference_test.cc70
1 files changed, 61 insertions, 9 deletions
diff --git a/chrome_frame/test/no_interference_test.cc b/chrome_frame/test/no_interference_test.cc
index e90dfe5..5e68c6f 100644
--- a/chrome_frame/test/no_interference_test.cc
+++ b/chrome_frame/test/no_interference_test.cc
@@ -143,13 +143,48 @@ TEST_F(NoInterferenceTest, FLAKY_JavascriptWindowOpen) {
DelaySendMouseClickToIE(&mock_, &loop_, 0, 100, 100,
simulate_input::LEFT)));
- mock_.ExpectNewWindowWithIE(empty_page_url(), &new_window_mock);
- EXPECT_CALL(new_window_mock, OnIELoad(testing::StrCaseEq(empty_page_url())))
+ EXPECT_CALL(mock_, OnNewWindow3(_, _, _, _, _));
+
+ EXPECT_CALL(mock_, OnNewBrowserWindow(_, _))
+ .WillOnce(testing::WithArgs<0>(testing::Invoke(CreateFunctor(
+ &new_window_mock, &MockWebBrowserEventSink::Attach))));
+
+ EXPECT_CALL(new_window_mock, OnBeforeNavigate2(_,
+ testing::Field(&VARIANT::bstrVal,
+ testing::StrCaseEq(empty_page_url())),
+ _, _, _, _, _));
+
+ EXPECT_CALL(new_window_mock, OnFileDownload(VARIANT_TRUE, _))
+ .Times(testing::AnyNumber());
+
+ EXPECT_CALL(new_window_mock, OnNavigateComplete2(_,
+ testing::Field(&VARIANT::bstrVal,
+ testing::StrCaseEq(empty_page_url()))))
.WillOnce(testing::DoAll(
- VerifyAddressBarUrl(&new_window_mock),
- CloseBrowserMock(&new_window_mock)));
+ testing::InvokeWithoutArgs(CreateFunctor(&new_window_mock,
+ &chrome_frame_test::MockWebBrowserEventSink::ExpectAddressBarUrl,
+ empty_page_url())),
+ DelayCloseBrowserMock(&loop_, 2000, &new_window_mock)));
+
+ if (chrome_frame_test::GetInstalledIEVersion() == IE_7) {
+ // On IE7 the DocumentComplete fires twice for new windows. Hack to account
+ // for that.
+ testing::InSequence seq;
+ EXPECT_CALL(new_window_mock,
+ OnIELoad(testing::StrCaseEq(empty_page_url())))
+ .Times(1);
+
+ EXPECT_CALL(new_window_mock,
+ OnIELoad(testing::StrCaseEq(empty_page_url())))
+ .Times(1);
+ } else {
+ EXPECT_CALL(new_window_mock,
+ OnIELoad(testing::StrCaseEq(empty_page_url())))
+ .Times(1);
+ }
+
EXPECT_CALL(new_window_mock, OnQuit())
- .WillOnce(CloseBrowserMock(&mock_));
+ .WillOnce(DelayCloseBrowserMock(&loop_, 2000, &mock_));
LaunchIEAndNavigate(kWindowOpenUrl);
}
@@ -228,10 +263,27 @@ TEST_F(NoInterferenceTest, FLAKY_SelectContextMenuOpenInNewWindow) {
SelectItem(&loop_, 1500, open_new_window_index)));
mock_.ExpectNewWindowWithIE(empty_page_url(), &new_window_mock);
- // TODO(kkania): Verifying the address bar is flaky with this, at least
- // on XP ie6. Fix.
- EXPECT_CALL(new_window_mock, OnIELoad(testing::StrCaseEq(empty_page_url())))
- .WillOnce(CloseBrowserMock(&new_window_mock));
+ if (chrome_frame_test::GetInstalledIEVersion() == IE_7) {
+ // On IE7 the DocumentComplete fires twice for new windows. Hack to account
+ // for that.
+ testing::InSequence seq;
+ EXPECT_CALL(new_window_mock,
+ OnIELoad(testing::StrCaseEq(empty_page_url())))
+ .Times(1);
+
+ // TODO(kkania): Verifying the address bar is flaky with this, at least
+ // on XP ie6. Fix.
+ EXPECT_CALL(new_window_mock,
+ OnIELoad(testing::StrCaseEq(empty_page_url())))
+ .WillOnce(DelayCloseBrowserMock(&loop_, 2000, &new_window_mock));
+ } else {
+ // TODO(kkania): Verifying the address bar is flaky with this, at least
+ // on XP ie6. Fix.
+ EXPECT_CALL(new_window_mock,
+ OnIELoad(testing::StrCaseEq(empty_page_url())))
+ .WillOnce(DelayCloseBrowserMock(&loop_, 2000, &new_window_mock));
+ }
+
EXPECT_CALL(new_window_mock, OnQuit()).WillOnce(CloseBrowserMock(&mock_));
LaunchIEAndNavigate(link_page_url());