OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <mshtmcid.h> | 5 #include <mshtmcid.h> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/test/test_file_util.h" | 8 #include "base/test/test_file_util.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "base/win/scoped_bstr.h" | 10 #include "base/win/scoped_bstr.h" |
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 .WillOnce(CloseBrowserMock(&ie_mock_)); | 861 .WillOnce(CloseBrowserMock(&ie_mock_)); |
862 | 862 |
863 LaunchIEAndNavigate(context_menu_page_url + L"?action=selectall"); | 863 LaunchIEAndNavigate(context_menu_page_url + L"?action=selectall"); |
864 } | 864 } |
865 | 865 |
866 // Test CF text field context menu - undo. | 866 // Test CF text field context menu - undo. |
867 TEST_F(ContextMenuTest, CFTxtFieldUndo) { | 867 TEST_F(ContextMenuTest, CFTxtFieldUndo) { |
868 server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag()); | 868 server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag()); |
869 AccObjectMatcher txtfield_matcher(L"", L"editable text"); | 869 AccObjectMatcher txtfield_matcher(L"", L"editable text"); |
870 | 870 |
871 // Change the value of text field to 'A', then invoke 'Undo' context menu item | 871 // Change the value of text field to 'A'. |
872 // of text field. | |
873 EXPECT_CALL(acc_observer_, | 872 EXPECT_CALL(acc_observer_, |
874 OnAccDocLoad(TabContentsTitleEq(context_menu_page_title))) | 873 OnAccDocLoad(TabContentsTitleEq(context_menu_page_title))) |
875 .WillOnce(testing::DoAll( | 874 .WillOnce(testing::DoAll( |
876 AccSendCharMessage(txtfield_matcher, L'A'), | 875 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), |
877 AccRightClick(txtfield_matcher))); | 876 AccSendCharMessage(txtfield_matcher, L'A'))); |
| 877 // Bring up the context menu once the value has changed. |
| 878 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A"))) |
| 879 .WillOnce(AccRightClick(txtfield_matcher)); |
| 880 // Then select "Undo". |
878 EXPECT_CALL(acc_observer_, OnMenuPopup(_)) | 881 EXPECT_CALL(acc_observer_, OnMenuPopup(_)) |
879 .WillOnce(testing::DoAll( | 882 .WillOnce(testing::DoAll( |
880 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), | 883 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), |
881 AccLeftClick(AccObjectMatcher(L"Undo*")))); | 884 AccLeftClick(AccObjectMatcher(L"Undo*")))); |
882 | 885 |
883 // Verify that value has been reset to initial value after undo operation. | 886 // Verify that value has been reset to initial value after undo operation. |
884 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue))) | 887 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue))) |
885 .WillOnce(CloseBrowserMock(&ie_mock_)); | 888 .WillOnce(CloseBrowserMock(&ie_mock_)); |
886 | 889 |
887 LaunchIEAndNavigate(context_menu_page_url); | 890 LaunchIEAndNavigate(context_menu_page_url); |
888 } | 891 } |
889 | 892 |
890 // Test CF text field context menu - redo. | 893 // Test CF text field context menu - redo. |
891 TEST_F(ContextMenuTest, CFTxtFieldRedo) { | 894 TEST_F(ContextMenuTest, CFTxtFieldRedo) { |
892 server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag()); | 895 server_mock_.ExpectAndServeAnyRequests(CFInvocation::MetaTag()); |
893 AccObjectMatcher txtfield_matcher(L"", L"editable text"); | 896 AccObjectMatcher txtfield_matcher(L"", L"editable text"); |
894 InSequence expect_in_sequence_for_scope; | 897 InSequence expect_in_sequence_for_scope; |
895 | 898 |
896 // Change text field value to 'A', then undo it. | 899 // Change text field from its initial value to 'A'. |
897 EXPECT_CALL(acc_observer_, | 900 EXPECT_CALL(acc_observer_, |
898 OnAccDocLoad(TabContentsTitleEq(context_menu_page_title))) | 901 OnAccDocLoad(TabContentsTitleEq(context_menu_page_title))) |
899 .WillOnce(testing::DoAll( | 902 .WillOnce(testing::DoAll( |
900 AccSendCharMessage(txtfield_matcher, L'A'), | 903 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), |
901 AccRightClick(txtfield_matcher))); | 904 AccSendCharMessage(txtfield_matcher, L'A'))); |
| 905 // Bring up the context menu. |
| 906 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A"))) |
| 907 .WillOnce(AccRightClick(txtfield_matcher)); |
| 908 // Select "Undo" |
902 EXPECT_CALL(acc_observer_, OnMenuPopup(_)) | 909 EXPECT_CALL(acc_observer_, OnMenuPopup(_)) |
903 .WillOnce(testing::DoAll( | 910 .WillOnce(testing::DoAll( |
904 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), | 911 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), |
905 AccLeftClick(AccObjectMatcher(L"Undo*")))); | 912 AccLeftClick(AccObjectMatcher(L"Undo*")))); |
906 | 913 |
907 // After undo operation is done, invoke 'Redo' context menu item. | 914 // After undo operation is done, bring up the context menu again. |
908 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue))) | 915 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(kTextFieldInitValue))) |
| 916 .WillOnce(AccRightClick(txtfield_matcher)); |
| 917 // Select "Redo" |
| 918 EXPECT_CALL(acc_observer_, OnMenuPopup(_)) |
909 .WillOnce(testing::DoAll( | 919 .WillOnce(testing::DoAll( |
910 AccRightClick(txtfield_matcher), | 920 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher), |
911 AccWatchForOneValueChange(&acc_observer_, txtfield_matcher))); | 921 AccLeftClick(AccObjectMatcher(L"Redo*")))); |
912 EXPECT_CALL(acc_observer_, OnMenuPopup(_)) | |
913 .WillOnce(AccLeftClick(AccObjectMatcher(L"Redo*"))); | |
914 | 922 |
915 // After redo operation is done, verify that text field value is reset to its | 923 // Verify that text field value is reset to its changed value 'A' and exit. |
916 // changed value 'A'. | |
917 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A"))) | 924 EXPECT_CALL(acc_observer_, OnAccValueChange(_, _, StrEq(L"A"))) |
918 .WillOnce(CloseBrowserMock(&ie_mock_)); | 925 .WillOnce(CloseBrowserMock(&ie_mock_)); |
919 | 926 |
920 LaunchIEAndNavigate(context_menu_page_url); | 927 LaunchIEAndNavigate(context_menu_page_url); |
921 } | 928 } |
922 | 929 |
923 TEST_F(ContextMenuTest, CFBackForward) { | 930 TEST_F(ContextMenuTest, CFBackForward) { |
924 std::wstring page1 = GetLinkPageUrl(); | 931 std::wstring page1 = GetLinkPageUrl(); |
925 std::wstring title1 = GetLinkPageTitle(); | 932 std::wstring title1 = GetLinkPageTitle(); |
926 std::wstring page2 = GetSimplePageUrl(); | 933 std::wstring page2 = GetSimplePageUrl(); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 .WillOnce(AccLeftClick(AccObjectMatcher(L"Forward"))); | 995 .WillOnce(AccLeftClick(AccObjectMatcher(L"Forward"))); |
989 | 996 |
990 EXPECT_CALL(ie_mock_, OnLoad(IN_CF, StrEq(page3))) | 997 EXPECT_CALL(ie_mock_, OnLoad(IN_CF, StrEq(page3))) |
991 .WillOnce(CloseBrowserMock(&ie_mock_)); | 998 .WillOnce(CloseBrowserMock(&ie_mock_)); |
992 | 999 |
993 LaunchIENavigateAndLoop(page1, | 1000 LaunchIENavigateAndLoop(page1, |
994 kChromeFrameVeryLongNavigationTimeoutInSeconds); | 1001 kChromeFrameVeryLongNavigationTimeoutInSeconds); |
995 } | 1002 } |
996 | 1003 |
997 } // namespace chrome_frame_test | 1004 } // namespace chrome_frame_test |
OLD | NEW |