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 |