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

Unified Diff: chrome_frame/test/ui_test.cc

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 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
« no previous file with comments | « chrome_frame/test/test_with_web_server.cc ('k') | chrome_frame/test/urlmon_moniker_integration_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/test/ui_test.cc
diff --git a/chrome_frame/test/ui_test.cc b/chrome_frame/test/ui_test.cc
deleted file mode 100644
index f23cacdf94ce07921c0afda52bfb375877500f58..0000000000000000000000000000000000000000
--- a/chrome_frame/test/ui_test.cc
+++ /dev/null
@@ -1,1113 +0,0 @@
-// Copyright (c) 2012 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.
-
-#include <mshtmcid.h>
-#include <string>
-
-#include "base/file_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/test_file_util.h"
-#include "base/win/scoped_bstr.h"
-#include "base/win/scoped_variant.h"
-#include "base/win/windows_version.h"
-#include "chrome/common/url_constants.h"
-#include "chrome_frame/test/chrome_frame_test_utils.h"
-#include "chrome_frame/test/chrome_frame_ui_test_utils.h"
-#include "chrome_frame/test/mock_ie_event_sink_actions.h"
-#include "chrome_frame/test/mock_ie_event_sink_test.h"
-#include "chrome_frame/test/simulate_input.h"
-
-#include "testing/gmock_mutant.h"
-
-using testing::_;
-using testing::InSequence;
-using testing::StrCaseEq;
-using testing::StrEq;
-
-namespace chrome_frame_test {
-
-// This parameterized test fixture uses the MockIEEventSink and is used by
-// UI-related tests.
-class FullTabUITest : public MockIEEventSinkTest,
- public testing::TestWithParam<CFInvocation> {
- public:
- FullTabUITest() {}
-
- virtual void SetUp() {
- ResetKeyState();
-
- // These are UI-related tests, so we do not care about the exact requests
- // and navigations that occur.
- server_mock_.ExpectAndServeAnyRequests(GetParam());
- ie_mock_.ExpectAnyNavigations();
- }
-
- virtual void TearDown() {
- ResetKeyState();
- }
-
- void ResetKeyState() {
- // Call this to reset the state of any current keyboard modifiers, as it has
- // been observed that these tests can leave the desktop in an invalid state
- // (e.g. thinking that the Ctrl key is held down). Send F23 as that is
- // particularly unlikely to be used by any real application.
- simulate_input::SendMnemonic(
- VK_F23,
- simulate_input::CONTROL | simulate_input::SHIFT | simulate_input::ALT,
- false,
- false,
- simulate_input::KEY_UP);
- }
-};
-
-// Instantiate each test case for the IE case and for CF meta tag case.
-// It does not seem too useful to also run the CF http header case since these
-// are UI, not navigation tests.
-INSTANTIATE_TEST_CASE_P(IE, FullTabUITest,
- testing::Values(CFInvocation::None()));
-INSTANTIATE_TEST_CASE_P(CF, FullTabUITest,
- testing::Values(CFInvocation::MetaTag()));
-
-// Tests keyboard input.
-TEST_P(FullTabUITest, KeyboardInput) {
- if (!GetParam().invokes_cf()) {
- LOG(ERROR) << "Test not implemented for this configuration.";
- return;
- }
- std::wstring key_event_url = GetTestUrl(L"keyevent.html");
-
- static const char input[] = "chrome";
- EXPECT_CALL(ie_mock_, OnLoad(GetParam().invokes_cf(), StrEq(key_event_url)))
- .WillOnce(PostKeyMessagesToRenderer(&ie_mock_, input));
-
- EXPECT_CALL(ie_mock_, OnMessage(StrCaseEq(base::UTF8ToWide(input)), _, _))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(key_event_url);
-}
-
-// Tests keyboard shortcuts for back and forward.
-// http://code.google.com/p/chromium/issues/detail?id=114058
-TEST_P(FullTabUITest, DISABLED_KeyboardBackForward) {
- if (IsWorkstationLocked()) {
- LOG(ERROR) << "This test cannot be run in a locked workstation.";
- return;
- }
-
- std::wstring page1 = GetSimplePageUrl();
- std::wstring page2 = GetLinkPageUrl();
- bool in_cf = GetParam().invokes_cf();
- InSequence expect_in_sequence_for_scope;
-
- // This test performs the following steps.
- // 1. Launches IE and navigates to page1
- // 2. It then navigates to page2
- // 3. Sends the VK_BACK keystroke to IE, which should navigate back to
- // page 1
- // 4. Sends the Shift + VK_BACK keystroke to IE which should navigate
- // forward to page2
- EXPECT_CALL(ie_mock_, OnLoad(in_cf, StrEq(page1)))
- .WillOnce(Navigate(&ie_mock_, page2));
-
- short bkspace = VkKeyScanA(VK_BACK); // NOLINT
- EXPECT_CALL(ie_mock_, OnLoad(in_cf, StrEq(page2)))
- .WillOnce(testing::DoAll(
- SetFocusToRenderer(&ie_mock_),
- DelaySendScanCode(&loop_,
- base::TimeDelta::FromSeconds(1),
- bkspace,
- simulate_input::NONE)));
-
- EXPECT_CALL(ie_mock_, OnLoad(in_cf, StrEq(page1)))
- .WillOnce(testing::DoAll(
- SetFocusToRenderer(&ie_mock_),
- DelaySendScanCode(&loop_,
- base::TimeDelta::FromSeconds(1),
- bkspace,
- simulate_input::SHIFT)));
-
- EXPECT_CALL(ie_mock_, OnLoad(in_cf, StrEq(page2)))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIENavigateAndLoop(page1, kChromeFrameVeryLongNavigationTimeout);
-}
-
-// Tests new window behavior with ctrl+N.
-TEST_P(FullTabUITest, CtrlN) {
- if (IsWorkstationLocked()) {
- LOG(ERROR) << "This test cannot be run in a locked workstation.";
- return;
- }
-
- bool is_cf = GetParam().invokes_cf();
- if (!is_cf) {
- LOG(ERROR) << "Test not implemented for this configuration.";
- return;
- }
- // Ideally we want to use a ie_mock_ to watch for finer grained
- // events for New Window, but for Crl+N we don't get any
- // OnNewWindowX notifications. :(
- MockWindowObserver win_observer_mock;
-
- const char* kNewWindowTitlePattern = "*Internet Explorer*";
- EXPECT_CALL(ie_mock_, OnLoad(is_cf, StrEq(GetSimplePageUrl())))
- .WillOnce(testing::DoAll(
- WatchWindow(&win_observer_mock, kNewWindowTitlePattern, ""),
- SetFocusToRenderer(&ie_mock_),
- DelaySendChar(&loop_,
- base::TimeDelta::FromSeconds(1),
- 'n',
- simulate_input::CONTROL)));
-
- // Watch for new window. It appears that the window close message cannot be
- // reliably delivered immediately upon receipt of the window open event.
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .Times(testing::AtMost(2))
- .WillOnce(CloseBrowserMock(&ie_mock_))
- .WillOnce(testing::Return());
-
- EXPECT_CALL(win_observer_mock, OnWindowClose(_))
- .Times(testing::AtMost(2));
-
- LaunchIENavigateAndLoop(GetSimplePageUrl(),
- kChromeFrameVeryLongNavigationTimeout);
-}
-
-// Test that Ctrl+F opens the Find dialog.
-TEST_P(FullTabUITest, CtrlF) {
- if (IsWorkstationLocked()) {
- LOG(ERROR) << "This test cannot be run in a locked workstation.";
- return;
- }
-
- bool is_cf = GetParam().invokes_cf();
- if (!is_cf) {
- LOG(ERROR) << "Test not implemented for this configuration.";
- return;
- }
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- MockWindowObserver win_observer_mock;
- InSequence expect_in_sequence_for_scope;
-
- const char* kFindDialogCaption = "Find";
- EXPECT_CALL(ie_mock_, OnLoad(IN_CF, StrEq(GetSimplePageUrl())))
- .WillOnce(testing::DoAll(
- WatchWindow(&win_observer_mock, kFindDialogCaption, ""),
- SetFocusToRenderer(&ie_mock_),
- DelaySendChar(&loop_,
- base::TimeDelta::FromMilliseconds(1500),
- 'f',
- simulate_input::CONTROL)));
-
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIENavigateAndLoop(GetSimplePageUrl(),
- kChromeFrameVeryLongNavigationTimeout);
-}
-
-// Test that ctrl+r does cause a refresh.
-TEST_P(FullTabUITest, CtrlR) {
- if (IsWorkstationLocked()) {
- LOG(ERROR) << "This test cannot be run in a locked workstation.";
- return;
- }
-
- EXPECT_CALL(server_mock_, Get(_, UrlPathEq(GetSimplePageUrl()), _))
- .Times(testing::AtMost(2))
- .WillRepeatedly(SendResponse(&server_mock_, GetParam()));
-
- EXPECT_CALL(ie_mock_, OnLoad(GetParam().invokes_cf(),
- StrEq(GetSimplePageUrl())))
- .Times(testing::AtMost(2))
- .WillOnce(testing::DoAll(
- SetFocusToRenderer(&ie_mock_),
- DelaySendChar(&loop_,
- base::TimeDelta::FromSeconds(1),
- 'r',
- simulate_input::CONTROL),
- DelayCloseBrowserMock(
- &loop_, base::TimeDelta::FromSeconds(4), &ie_mock_)))
- .WillRepeatedly(testing::Return());
-
- LaunchIENavigateAndLoop(GetSimplePageUrl(),
- kChromeFrameVeryLongNavigationTimeout);
-}
-
-// Test window close with ctrl+w.
-TEST_P(FullTabUITest, CtrlW) {
- if (IsWorkstationLocked()) {
- LOG(ERROR) << "This test cannot be run in a locked workstation.";
- return;
- }
-
- EXPECT_CALL(ie_mock_, OnLoad(GetParam().invokes_cf(),
- StrEq(GetSimplePageUrl())))
- .WillOnce(testing::DoAll(
- SetFocusToRenderer(&ie_mock_),
- DelaySendChar(&loop_,
- base::TimeDelta::FromSeconds(1),
- 'w',
- simulate_input::CONTROL)));
-
- LaunchIENavigateAndLoop(GetSimplePageUrl(),
- kChromeFrameVeryLongNavigationTimeout);
-}
-
-// Test address bar navigation with Alt+d and URL.
-// Flaky due to TypeUrlInAddressBar; see http://crbug.com/124244.
-TEST_P(FullTabUITest, DISABLED_AltD) {
- if (IsWorkstationLocked()) {
- LOG(ERROR) << "This test cannot be run in a locked workstation.";
- return;
- }
-
- EXPECT_CALL(ie_mock_, OnLoad(GetParam().invokes_cf(),
- StrEq(GetSimplePageUrl())))
- .WillOnce(testing::DoAll(
- SetFocusToRenderer(&ie_mock_),
- TypeUrlInAddressBar(&loop_,
- GetLinkPageUrl(),
- base::TimeDelta::FromMilliseconds(1500))));
-
- EXPECT_CALL(ie_mock_, OnLoad(GetParam().invokes_cf(),
- StrEq(GetLinkPageUrl())))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIENavigateAndLoop(GetSimplePageUrl(),
- kChromeFrameVeryLongNavigationTimeout);
-}
-
-// Tests that the renderer has focus after navigation.
-// Flaky, see http://crbug.com/90791 .
-TEST_P(FullTabUITest, DISABLED_RendererHasFocus) {
- EXPECT_CALL(ie_mock_, OnLoad(GetParam().invokes_cf(),
- StrEq(GetSimplePageUrl())))
- .WillOnce(testing::DoAll(
- ExpectRendererHasFocus(&ie_mock_),
- CloseBrowserMock(&ie_mock_)));
-
- LaunchIEAndNavigate(GetSimplePageUrl());
-}
-
-// Tests that view source works.
-TEST_P(FullTabUITest, ViewSource) {
- // Please see http://code.google.com/p/chromium/issues/detail?id=60987
- // for more information on why this test is disabled for Vista with IE7.
- if (base::win::GetVersion() == base::win::VERSION_VISTA &&
- GetInstalledIEVersion() == IE_7) {
- LOG(INFO) << "Not running test on Vista with IE7";
- return;
- }
-
- bool in_cf = GetParam().invokes_cf();
- if (!in_cf) {
- LOG(ERROR) << "Test not implemented for this configuration.";
- return;
- }
- MockIEEventSink view_source_mock;
- view_source_mock.ExpectAnyNavigations();
- InSequence expect_in_sequence_for_scope;
-
- // After navigation invoke view soruce action using IWebBrowser2::ExecWB
- VARIANT empty = base::win::ScopedVariant::kEmptyVariant;
- EXPECT_CALL(ie_mock_, OnLoad(in_cf,
- StrEq(GetSimplePageUrl())))
- .WillOnce(DelayExecCommand(
- &ie_mock_, &loop_, base::TimeDelta(), &CGID_MSHTML,
- static_cast<OLECMDID>(IDM_VIEWSOURCE),
- OLECMDEXECOPT_DONTPROMPTUSER, &empty, &empty));
-
- // Expect notification for view-source window, handle new window event
- // and attach a new ie_mock_ to the received web browser
- std::wstring view_source_url;
- view_source_url += base::UTF8ToWide(content::kViewSourceScheme);
- view_source_url += L":";
- view_source_url += GetSimplePageUrl();
- std::wstring url_in_new_window = kChromeProtocolPrefix;
- url_in_new_window += view_source_url;
-
- ie_mock_.ExpectNewWindow(&view_source_mock);
- // For some reason this happens occasionally at least on XP IE7.
- EXPECT_CALL(view_source_mock, OnLoad(IN_IE, StrEq(url_in_new_window)))
- .Times(testing::AtMost(1));
- EXPECT_CALL(view_source_mock, OnLoad(in_cf, StrEq(view_source_url)))
- .WillOnce(testing::DoAll(
- VerifyAddressBarUrlWithGcf(&view_source_mock),
- CloseBrowserMock(&view_source_mock)));
-
- EXPECT_CALL(view_source_mock, OnQuit())
- .Times(testing::AtMost(1))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(GetSimplePageUrl());
-}
-
-void NavigateToCurrentUrl(MockIEEventSink* mock) {
- IWebBrowser2* browser = mock->event_sink()->web_browser2();
- DCHECK(browser);
- base::win::ScopedBstr bstr;
- HRESULT hr = browser->get_LocationURL(bstr.Receive());
- EXPECT_HRESULT_SUCCEEDED(hr);
- if (SUCCEEDED(hr)) {
- DCHECK(bstr.Length());
- VARIANT empty = base::win::ScopedVariant::kEmptyVariant;
- hr = browser->Navigate(bstr, &empty, &empty, &empty, &empty);
- EXPECT_HRESULT_SUCCEEDED(hr);
- }
-}
-
-// Tests that Chrome gets re-instantiated after crash if we reload via
-// the address bar or via a new navigation.
-// Flaky on ie7, http://crbug.com/277406.
-TEST_P(FullTabUITest, DISABLED_TabCrashReload) {
- using testing::DoAll;
-
- if (!GetParam().invokes_cf()) {
- LOG(ERROR) << "Test needs CF.";
- return;
- }
-
- MockPropertyNotifySinkListener prop_listener;
- InSequence expect_in_sequence_for_scope;
-
- EXPECT_CALL(ie_mock_, OnLoad(_, StrEq(GetSimplePageUrl())))
- .WillOnce(DoAll(
- ExpectRendererHasFocus(&ie_mock_),
- ExpectDocumentReadystate(&ie_mock_, READYSTATE_COMPLETE),
- ConnectDocPropNotifySink(&ie_mock_, &prop_listener),
- KillChromeFrameProcesses()));
-
- EXPECT_CALL(prop_listener, OnChanged(DISPID_READYSTATE))
- .WillOnce(DoAll(
- ExpectDocumentReadystate(&ie_mock_, READYSTATE_UNINITIALIZED),
- DelayNavigateToCurrentUrl(
- &ie_mock_, &loop_, base::TimeDelta::FromMilliseconds(10))));
-
- EXPECT_CALL(ie_mock_, OnLoad(_, StrEq(GetSimplePageUrl())))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(GetSimplePageUrl());
-}
-
-// Tests if Chrome gets restarted after a crash by just refreshing the document.
-// DISABLED as per bug http://crbug.com/99317 (one of the failures is a
-// timeout, which marking as FLAKY or FAILS won't mask).
-TEST_P(FullTabUITest, DISABLED_TabCrashRefresh) {
- using testing::DoAll;
-
- if (!GetParam().invokes_cf()) {
- LOG(ERROR) << "Test needs CF.";
- return;
- }
-
- MockPropertyNotifySinkListener prop_listener;
- InSequence expect_in_sequence_for_scope;
-
- EXPECT_CALL(ie_mock_, OnLoad(_, StrEq(GetSimplePageUrl())))
- .WillOnce(DoAll(
- ExpectRendererHasFocus(&ie_mock_),
- ExpectDocumentReadystate(&ie_mock_, READYSTATE_COMPLETE),
- ConnectDocPropNotifySink(&ie_mock_, &prop_listener),
- KillChromeFrameProcesses()));
-
- VARIANT empty = base::win::ScopedVariant::kEmptyVariant;
- EXPECT_CALL(prop_listener, OnChanged(/*DISPID_READYSTATE*/_))
- .WillOnce(DoAll(
- DisconnectDocPropNotifySink(&prop_listener),
- ExpectDocumentReadystate(&ie_mock_, READYSTATE_UNINITIALIZED),
- DelayExecCommand(
- &ie_mock_, &loop_, base::TimeDelta::FromMilliseconds(10),
- static_cast<GUID*>(NULL), OLECMDID_REFRESH, 0, &empty, &empty)));
-
- EXPECT_CALL(ie_mock_, OnLoad(_, StrEq(GetSimplePageUrl())))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(GetSimplePageUrl());
-}
-
-// Test that window.print() on a page results in the native Windows print dialog
-// appearing rather than Chrome's in-page print preview.
-TEST_P(FullTabUITest, WindowPrintOpensNativePrintDialog) {
- std::wstring window_print_url(GetTestUrl(L"window_print.html"));
- std::wstring window_print_title(L"window.print");
-
- const bool is_cf = GetParam().invokes_cf();
- MockWindowObserver win_observer_mock;
-
- // When the page is loaded, start watching for the Print dialog to appear.
- EXPECT_CALL(ie_mock_, OnLoad(is_cf, StrEq(window_print_url)))
- .WillOnce(WatchWindow(&win_observer_mock, "Print", ""));
-
- // When the print dialog opens, close it.
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .WillOnce(DoCloseWindow());
-
- // When the print dialog closes, close the browser.
- EXPECT_CALL(win_observer_mock, OnWindowClose(_))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- // Launch IE and navigate to the window_print.html page, which will
- // window.print() immediately after loading.
- LaunchIEAndNavigate(window_print_url);
-}
-
-// Test fixture for tests related to the context menu UI. Since the context
-// menus for CF and IE are different, these tests are not parameterized.
-class ContextMenuTest : public MockIEEventSinkTest, public testing::Test {
- public:
- ContextMenuTest(): kTextFieldInitValue(L"SomeInitializedTextValue") {}
-
- virtual void SetUp() {
- context_menu_page_url = GetTestUrl(L"context_menu.html");
- context_menu_page_title = L"context menu";
- // Clear clipboard to make sure there is no effect from previous tests.
- SetClipboardText(L"");
- // These are UI-related tests, so we do not care about the exact
- // navigations that occur.
- ie_mock_.ExpectAnyNavigations();
- EXPECT_CALL(ie_mock_, OnLoad(_, _)).Times(testing::AnyNumber());
- EXPECT_CALL(acc_observer_, OnAccDocLoad(_)).Times(testing::AnyNumber());
- }
-
- virtual void TearDown() {
- // Destroy the clipboard here because it is not destroyed automatically.
- DestroyClipboard();
- }
-
- // Common helper function for "Save xxx As" tests.
- void DoSaveAsTest(const wchar_t* role, const wchar_t* menu_item_name,
- const wchar_t* file_ext) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- MockWindowObserver win_observer_mock;
- InSequence expect_in_sequence_for_scope;
-
- // Open 'Save As' dialog.
- base::string16 initial_url(GetTestUrl(L"save_as_context_menu.html"));
- const char* kSaveDlgCaption = "Save As";
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url,
- L"Save As download test")))
- .WillOnce(testing::DoAll(
- WatchWindow(&win_observer_mock, kSaveDlgCaption, ""),
- AccRightClick(AccObjectMatcher(L"", role))));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(menu_item_name)));
-
- // Get safe download name using temporary file.
- base::FilePath temp_file_path;
- ASSERT_TRUE(base::CreateTemporaryFile(&temp_file_path));
- ASSERT_TRUE(file_util::DieFileDie(temp_file_path, false));
- temp_file_path = temp_file_path.ReplaceExtension(file_ext);
-
- AccObjectMatcher file_name_box(L"File name:", L"editable text");
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .WillOnce(testing::DoAll(
- AccSendCharMessage(file_name_box, L'a'),
- AccSetValue(file_name_box, temp_file_path.value()),
- AccDoDefaultAction(AccObjectMatcher(L"Save", L"push button"))));
-
- EXPECT_CALL(win_observer_mock, OnWindowClose(_))
- .WillOnce(CloseWhenFileSaved(&ie_mock_, temp_file_path, 8000));
-
- LaunchIENavigateAndLoop(initial_url,
- kChromeFrameVeryLongNavigationTimeout);
- ASSERT_TRUE(file_util::DieFileDie(temp_file_path, false));
- }
-
- protected:
- // Html page that holds a text field for context menu testing.
- std::wstring context_menu_page_url;
- // Title of said html page.
- std::wstring context_menu_page_title;
- // This is the text value used to test cut/copy/paste etc.
- const std::wstring kTextFieldInitValue;
-
- testing::NiceMock<MockAccEventObserver> acc_observer_;
-};
-
-// Test reloading from the context menu.
-TEST_F(ContextMenuTest, CFReload) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- InSequence expect_in_sequence_for_scope;
-
- base::string16 initial_url(GetSimplePageUrl());
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url,
- GetSimplePageTitle())))
- .WillOnce(OpenContextMenuAsync());
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Reload")));
-
- EXPECT_CALL(ie_mock_, OnLoad(IN_CF, StrEq(initial_url)))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-// Test view source from the context menu.
-TEST_F(ContextMenuTest, CFViewSource) {
- // Please see http://code.google.com/p/chromium/issues/detail?id=60987
- // for more information on why this test is disabled for Vista with IE7.
- if (base::win::GetVersion() == base::win::VERSION_VISTA &&
- GetInstalledIEVersion() == IE_7) {
- LOG(INFO) << "Not running test on Vista with IE7";
- return;
- }
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- MockIEEventSink view_source_mock;
- view_source_mock.ExpectAnyNavigations();
- InSequence expect_in_sequence_for_scope;
- base::string16 initial_url(GetSimplePageUrl());
-
- // View the page source.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url,
- GetSimplePageTitle())))
- .WillOnce(OpenContextMenuAsync());
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"View page source")));
-
- // Expect notification for view-source window, handle new window event
- // and attach a new ie_mock_ to the received web browser
- std::wstring view_source_url;
- view_source_url += base::UTF8ToWide(content::kViewSourceScheme);
- view_source_url += L":";
- view_source_url += initial_url;
- std::wstring url_in_new_window = kChromeProtocolPrefix;
- url_in_new_window += view_source_url;
-
- ie_mock_.ExpectNewWindow(&view_source_mock);
- // For some reason this happens occasionally at least on XP IE7 and Win7 IE8.
- EXPECT_CALL(view_source_mock, OnLoad(IN_IE, StrEq(url_in_new_window)))
- .Times(testing::AtMost(1));
- EXPECT_CALL(view_source_mock, OnLoad(IN_CF, StrEq(view_source_url)))
- .WillOnce(testing::DoAll(
- VerifyAddressBarUrlWithGcf(&view_source_mock),
- CloseBrowserMock(&view_source_mock)));
- EXPECT_CALL(view_source_mock, OnQuit())
- .Times(testing::AtMost(1))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-TEST_F(ContextMenuTest, DISABLED_CFPageInfo) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- MockWindowObserver win_observer_mock;
- InSequence expect_in_sequence_for_scope;
- base::string16 initial_url(GetSimplePageUrl());
-
- // View page information.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url,
- GetSimplePageTitle())))
- .WillOnce(testing::DoAll(
- WatchWindow(&win_observer_mock, "", "Chrome_WidgetWin_*"),
- OpenContextMenuAsync()));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"View page info")));
-
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_)).Times(1);
- // Expect page info dialog to pop up. Dismiss the dialog with 'Esc' key
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .WillOnce(DoCloseWindow());
-
- EXPECT_CALL(win_observer_mock, OnWindowClose(_)).Times(1);
- EXPECT_CALL(win_observer_mock, OnWindowClose(_))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-TEST_F(ContextMenuTest, CFInspector) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- MockWindowObserver win_observer_mock;
- InSequence expect_in_sequence_for_scope;
-
- // Open developer tools.
- // Devtools begins life with "Untitled" caption and it changes
- // later to the 'Developer Tools - <url> form.
- const char* kPageInfoCaptionPattern = "Untitled*";
- base::string16 initial_url(GetSimplePageUrl());
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url,
- GetSimplePageTitle())))
- .WillOnce(testing::DoAll(
- WatchWindow(&win_observer_mock, kPageInfoCaptionPattern, ""),
- OpenContextMenuAsync()));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Inspect element")));
-
- EXPECT_CALL(win_observer_mock, OnWindowOpen(_))
- .WillOnce(DelayDoCloseWindow(5000)); // wait to catch possible crash
- EXPECT_CALL(win_observer_mock, OnWindowClose(_))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIENavigateAndLoop(initial_url,
- kChromeFrameVeryLongNavigationTimeout);
-}
-
-// http://code.google.com/p/chromium/issues/detail?id=83114
-TEST_F(ContextMenuTest, DISABLED_CFSavePageAs) {
- // Please see http://code.google.com/p/chromium/issues/detail?id=60987
- // for more information on why this test is disabled for Vista with IE7.
- if (base::win::GetVersion() == base::win::VERSION_VISTA &&
- GetInstalledIEVersion() == IE_7) {
- LOG(INFO) << "Not running test on Vista with IE7";
- return;
- }
- ASSERT_NO_FATAL_FAILURE(DoSaveAsTest(L"", L"Save as...", L".html"));
-}
-
-// http://code.google.com/p/chromium/issues/detail?id=83114
-TEST_F(ContextMenuTest, DISABLED_CFSaveLinkAs) {
- // Please see http://code.google.com/p/chromium/issues/detail?id=60987
- // for more information on why this test is disabled for Vista with IE7.
- if (base::win::GetVersion() == base::win::VERSION_VISTA &&
- GetInstalledIEVersion() == IE_7) {
- LOG(INFO) << "Not running test on Vista with IE7";
- return;
- }
- ASSERT_NO_FATAL_FAILURE(DoSaveAsTest(L"link", L"Save link as...", L".zip"));
-}
-
-// This tests that the about:version page can be opened via the CF context menu.
-TEST_F(ContextMenuTest, CFAboutVersionLoads) {
- // Please see http://code.google.com/p/chromium/issues/detail?id=60987
- // for more information on why this test is disabled for Vista with IE7.
- if (base::win::GetVersion() == base::win::VERSION_VISTA &&
- GetInstalledIEVersion() == IE_7) {
- LOG(INFO) << "Not running test on Vista with IE7";
- return;
- }
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- const wchar_t* kAboutVersionUrl = L"gcf:about:version";
- const wchar_t* kAboutVersionWithoutProtoUrl = L"about:version";
- MockIEEventSink new_window_mock;
- new_window_mock.ExpectAnyNavigations();
- InSequence expect_in_sequence_for_scope;
- base::string16 initial_url(GetSimplePageUrl());
-
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url,
- GetSimplePageTitle())))
- .WillOnce(OpenContextMenuAsync());
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"About*")));
-
- ie_mock_.ExpectNewWindow(&new_window_mock);
- // For some reason this happens occasionally at least on Win7 IE8.
- EXPECT_CALL(new_window_mock, OnLoad(IN_IE, StrEq(kAboutVersionUrl)))
- .Times(testing::AtMost(1));
- EXPECT_CALL(new_window_mock,
- OnLoad(IN_CF, StrEq(kAboutVersionWithoutProtoUrl)))
- .WillOnce(testing::DoAll(
- VerifyAddressBarUrlWithGcf(&new_window_mock),
- CloseBrowserMock(&new_window_mock)));
-
- EXPECT_CALL(new_window_mock, OnQuit())
- .Times(testing::AtMost(1))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-TEST_F(ContextMenuTest, IEOpen) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::None());
- InSequence expect_in_sequence_for_scope;
- base::string16 initial_url(GetLinkPageUrl());
-
- // Open the link through the context menu.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url, GetLinkPageTitle())))
- .WillOnce(AccRightClick(AccObjectMatcher(L"", L"link")));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Open")));
-
- EXPECT_CALL(ie_mock_, OnLoad(IN_IE, StrEq(GetSimplePageUrl())))
- .WillOnce(testing::DoAll(
- VerifyAddressBarUrl(&ie_mock_),
- CloseBrowserMock(&ie_mock_)));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-TEST_F(ContextMenuTest, IEOpenInNewWindow) {
- // See crbug.com/64794.
- if (GetInstalledIEVersion() == IE_7) {
- LOG(INFO) << "Not running test with IE7";
- return;
- }
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::None());
- MockIEEventSink new_window_mock;
- new_window_mock.ExpectAnyNavigations();
- InSequence expect_in_sequence_for_scope;
- base::string16 initial_url(GetLinkPageUrl());
-
- // Open the link in a new window.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url, GetLinkPageTitle())))
- .WillOnce(AccRightClick(AccObjectMatcher(L"", L"link")));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Open in New Window")));
-
- ie_mock_.ExpectNewWindow(&new_window_mock);
- EXPECT_CALL(new_window_mock, OnLoad(IN_IE, StrEq(GetSimplePageUrl())))
- // TODO(kkania): Verifying the address bar is flaky with this, at least
- // on XP ie6. Fix.
- .WillOnce(CloseBrowserMock(&new_window_mock));
-
- EXPECT_CALL(new_window_mock, OnQuit())
- .Times(testing::AtMost(1))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-// Test Back/Forward from context menu.
-TEST_F(ContextMenuTest, IEBackForward) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::None());
- std::wstring page1 = GetLinkPageUrl();
- std::wstring title1 = GetLinkPageTitle();
- std::wstring page2 = GetSimplePageUrl();
- std::wstring title2 = GetSimplePageTitle();
- InSequence expect_in_sequence_for_scope;
-
- // Navigate to second page.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page1, title1)))
- .WillOnce(Navigate(&ie_mock_, page2));
-
- // Go back.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page2, title2)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_IE, page2),
- OpenContextMenuAsync()));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Back")));
-
- // Go forward.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page1, title1)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_IE, page1),
- OpenContextMenuAsync()));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Forward")));
-
- EXPECT_CALL(ie_mock_, OnLoad(IN_IE, StrEq(page2)))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(page1);
-}
-
-// Test CF link context menu - Open link in new window.
-// Failing intermittently on IE6/7. See crbug.com/64794.
-TEST_F(ContextMenuTest, DISABLED_CFOpenLinkInNewWindow) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- MockIEEventSink new_window_mock;
- new_window_mock.ExpectAnyNavigations();
- base::string16 initial_url(GetLinkPageUrl());
-
- // Invoke 'Open link in new window' context menu item.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url, GetLinkPageTitle())))
- .Times(testing::AtMost(2))
- .WillOnce(AccRightClick(AccObjectMatcher(L"", L"link")))
- .WillOnce(testing::Return());
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Open link in new window*")));
-
- ie_mock_.ExpectNewWindow(&new_window_mock);
- EXPECT_CALL(new_window_mock, OnLoad(IN_CF, StrEq(GetSimplePageUrl())))
- .WillOnce(CloseBrowserMock(&new_window_mock));
- EXPECT_CALL(new_window_mock, OnQuit())
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(initial_url);
-}
-
-// Test CF link context menu - Copy link address.
-TEST_F(ContextMenuTest, CFCopyLinkAddress) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- base::string16 initial_url(GetLinkPageUrl());
-
- // Invoke 'Copy link address' context menu item.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(initial_url, GetLinkPageTitle())))
- .WillOnce(AccRightClick(AccObjectMatcher(L"", L"link")));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(testing::DoAll(
- AccLeftClick(AccObjectMatcher(L"Copy link address*")),
- CloseBrowserMock(&ie_mock_)));
-
- LaunchIEAndNavigate(initial_url);
-
- EXPECT_STREQ(GetSimplePageUrl().c_str(), GetClipboardText().c_str());
-}
-
-// Test CF text field context menu - cut.
-// Times out sporadically http://crbug.com/119660.
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldCut) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- AccObjectMatcher txtfield_matcher(L"", L"editable text");
-
- // Invoke "Cut" context menu item of text field.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(testing::DoAll(
- AccRightClick(txtfield_matcher),
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher)));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Cut*")));
-
- // Verify that text field is empty after cut operation.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"")))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(context_menu_page_url);
- // Verify that the text value has been cut to clipboard.
- EXPECT_STREQ(kTextFieldInitValue.c_str(), GetClipboardText().c_str());
-}
-
-// Test CF text field context menu - copy.
-// Times out sporadically http://crbug.com/119660.
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldCopy) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- AccObjectMatcher txtfield_matcher(L"", L"editable text");
-
- // Invoke "Copy" context menu item of text field.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(testing::DoAll(
- AccRightClick(txtfield_matcher),
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher)));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(testing::DoAll(
- AccLeftClick(AccObjectMatcher(L"Copy*")),
- CloseBrowserMock(&ie_mock_)));
-
- // Verify that there is no change on text field value after copy operation.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, _))
- .Times(testing::AtMost(0));
-
- LaunchIEAndNavigate(context_menu_page_url);
- // Verify that the text value has been copied to clipboard.
- EXPECT_STREQ(kTextFieldInitValue.c_str(), GetClipboardText().c_str());
-}
-
-// Test CF text field context menu - paste.
-// Times out sporadically http://crbug.com/119660.
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldPaste) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- AccObjectMatcher txtfield_matcher(L"", L"editable text");
-
- // Invoke "Paste" context menu item of text field.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(testing::DoAll(
- AccRightClick(txtfield_matcher),
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher)));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Paste*")));
- // Verify that value has been pasted to text field.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue)))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- // Set some text value to clipboard, this is to emulate the 'copy' action.
- SetClipboardText(kTextFieldInitValue);
-
- LaunchIEAndNavigate(context_menu_page_url);
-}
-
-// Test CF text field context menu - delete.
-// Times out sporadically http://crbug.com/119660.
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldDelete) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- AccObjectMatcher txtfield_matcher(L"", L"editable text");
-
- // Invoke 'Delete' context menu item of text field.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(testing::DoAll(
- AccRightClick(txtfield_matcher),
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher)));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Delete*")));
- // Verify that value has been deleted from text field.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"")))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(context_menu_page_url);
-}
-
-// Test CF text field context menu - select all.
-// Flaky: http://crbug.com/144664
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldSelectAll) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
-
- // Invoke 'Select all' context menu item of text field.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(AccRightClick(AccObjectMatcher(L"", L"editable text")));
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(testing::DoAll(
- AccLeftClick(AccObjectMatcher(L"Select all*")),
- PostMessageToCF(&ie_mock_, L"selectall")));
- // Client side script verifies that the text field value has been selected,
- // then send 'OK' message.
- EXPECT_CALL(ie_mock_, OnMessage(testing::StrCaseEq(L"OK"), _, _))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(context_menu_page_url + L"?action=selectall");
-}
-
-// Test CF text field context menu - undo.
-// Times out sporadically http://crbug.com/119660.
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldUndo) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- AccObjectMatcher txtfield_matcher(L"", L"editable text");
-
- // Change the value of text field to 'A'.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(testing::DoAll(
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher),
- AccSendCharMessage(txtfield_matcher, L'A')));
- // Bring up the context menu once the value has changed.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A")))
- .WillOnce(AccRightClick(txtfield_matcher));
- // Then select "Undo".
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(testing::DoAll(
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher),
- AccLeftClick(AccObjectMatcher(L"Undo*"))));
-
- // Verify that value has been reset to initial value after undo operation.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue)))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(context_menu_page_url);
-}
-
-// Test CF text field context menu - redo.
-// Times out sporadically http://crbug.com/119660.
-TEST_F(ContextMenuTest, DISABLED_CFTxtFieldRedo) {
- server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag());
- AccObjectMatcher txtfield_matcher(L"", L"editable text");
- InSequence expect_in_sequence_for_scope;
-
- // Change text field from its initial value to 'A'.
- EXPECT_CALL(acc_observer_,
- OnAccDocLoad(TabContentsTitleEq(context_menu_page_url,
- context_menu_page_title)))
- .WillOnce(testing::DoAll(
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher),
- AccSendCharMessage(txtfield_matcher, L'A')));
- // Bring up the context menu.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A")))
- .WillOnce(AccRightClick(txtfield_matcher));
- // Select "Undo"
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(testing::DoAll(
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher),
- AccLeftClick(AccObjectMatcher(L"Undo*"))));
-
- // After undo operation is done, bring up the context menu again.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue)))
- .WillOnce(AccRightClick(txtfield_matcher));
- // Select "Redo"
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(testing::DoAll(
- AccWatchForOneValueChange(&acc_observer_, txtfield_matcher),
- AccLeftClick(AccObjectMatcher(L"Redo*"))));
-
- // Verify that text field value is reset to its changed value 'A' and exit.
- EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A")))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIEAndNavigate(context_menu_page_url);
-}
-
-// Disabled because it seems to hang, causing the test process to timeout and
-// be killed; see http://crbug.com/121097.
-TEST_F(ContextMenuTest, DISABLED_CFBackForward) {
- std::wstring page1 = GetLinkPageUrl();
- std::wstring title1 = GetLinkPageTitle();
- std::wstring page2 = GetSimplePageUrl();
- std::wstring title2 = GetSimplePageTitle();
- std::wstring page3 = GetTestUrl(L"anchor.html");
- std::wstring title3 = GetAnchorPageTitle();
-
- server_mock_.ExpectAndServeRequestWithCardinality(
- CFInvocation::MetaTag(), page1, testing::Exactly(2));
-
- server_mock_.ExpectAndServeRequestWithCardinality(
- CFInvocation::None(), page2, testing::Exactly(3));
-
- server_mock_.ExpectAndServeRequestWithCardinality(
- CFInvocation::MetaTag(), page3, testing::Exactly(2));
-
- InSequence expect_in_sequence_for_scope;
-
- // Navigate to second page.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page1, title1)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_CF, page1),
- Navigate(&ie_mock_, page2)));
-
- // Navigate to third page.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page2, title2)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_IE, page2),
- Navigate(&ie_mock_, page3)));
-
- // Go back.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page3, title3)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_CF, page3),
- OpenContextMenuAsync()));
-
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Back")));
-
- // Go back
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page2, title2)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_IE, page2),
- OpenContextMenuAsync()));
-
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Back")));
-
- // Go forward.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page1, title1)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_CF, page1),
- OpenContextMenuAsync()));
-
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Forward")));
-
- // Go forward.
- EXPECT_CALL(acc_observer_, OnAccDocLoad(TabContentsTitleEq(page2, title2)))
- .WillOnce(testing::DoAll(
- VerifyPageLoad(&ie_mock_, IN_IE, page2),
- OpenContextMenuAsync()));
-
- EXPECT_CALL(acc_observer_, OnMenuPopup(_))
- .WillOnce(AccLeftClick(AccObjectMatcher(L"Forward")));
-
- EXPECT_CALL(ie_mock_, OnLoad(IN_CF, StrEq(page3)))
- .WillOnce(CloseBrowserMock(&ie_mock_));
-
- LaunchIENavigateAndLoop(page1, kChromeFrameVeryLongNavigationTimeout);
-}
-
-} // namespace chrome_frame_test
« no previous file with comments | « chrome_frame/test/test_with_web_server.cc ('k') | chrome_frame/test/urlmon_moniker_integration_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698