From f5d1ea32ea7081621c692e03ae153f74bde105b3 Mon Sep 17 00:00:00 2001 From: "erikwright@chromium.org" Date: Tue, 28 Sep 2010 13:47:13 +0000 Subject: This changelist consists of a test for the Delete Browsing History feature. The feature was never covered by automated tests, and a recent changelist addressed a bug in the feature (http://codereview.chromium.org/3167040). The test validates the following: 1) That cached files are re-retrieved after the user requests their deletion. 2) That saved form data is deleted after the user requests its deletion. 3) That Chrome Frame tabs do not crash when the user deletes browsing history. BUG=56212 TEST= (1) Run "chrome_frame_tests.exe --gclient_filter=DeleteBro*" (should pass) (2) Run the test, and immediately lock your workstation before it starts. It should still pass. (3) Comment out the call to RemoveBrowsingData in DeleteChromeHistory::OnAutomationServerReady (chrome_frame/delete_chrome_history.cc) and run the test. It fails. (4) Revert changes from 3, comment out the check for low integrity level in DeleteChromeHistory::DeleteBrowsingHistory (same file) and run the test. It fails. Review URL: http://codereview.chromium.org/3365010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60779 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome_frame/test/mock_ie_event_sink_actions.h | 67 +++++++++++++++++++------- 1 file changed, 49 insertions(+), 18 deletions(-) (limited to 'chrome_frame/test/mock_ie_event_sink_actions.h') diff --git a/chrome_frame/test/mock_ie_event_sink_actions.h b/chrome_frame/test/mock_ie_event_sink_actions.h index d6d8160..7c9b38b 100644 --- a/chrome_frame/test/mock_ie_event_sink_actions.h +++ b/chrome_frame/test/mock_ie_event_sink_actions.h @@ -6,6 +6,7 @@ #define CHROME_FRAME_TEST_MOCK_IE_EVENT_SINK_ACTIONS_H_ #include +#include #include "base/basictypes.h" #include "base/platform_thread.h" @@ -126,28 +127,35 @@ ACTION_P2(AccSetValue, matcher, value) { } } +namespace { // NOLINT +template R AccInWindow(testing::Action action, HWND hwnd) { + return action.Perform(typename testing::Action::ArgumentTuple(hwnd)); +} +} + +ACTION_P2(AccDoDefaultActionInBrowser, mock, matcher) { + AccInWindow(AccDoDefaultAction(matcher), + mock->event_sink()->GetBrowserWindow()); +} + ACTION_P2(AccDoDefaultActionInRenderer, mock, matcher) { - HWND window = mock->event_sink()->GetRendererWindow(); - scoped_refptr object; - if (FindAccObjectInWindow(window, matcher, &object)) { - EXPECT_TRUE(object->DoDefaultAction()); - } + AccInWindow(AccDoDefaultAction(matcher), + mock->event_sink()->GetRendererWindow()); } ACTION_P2(AccLeftClickInBrowser, mock, matcher) { - HWND window = mock->event_sink()->GetBrowserWindow(); - scoped_refptr object; - if (FindAccObjectInWindow(window, matcher, &object)) { - EXPECT_TRUE(object->LeftClick()); - } + AccInWindow(AccLeftClick(matcher), + mock->event_sink()->GetBrowserWindow()); +} + +ACTION_P2(AccLeftClickInRenderer, mock, matcher) { + AccInWindow(AccLeftClick(matcher), + mock->event_sink()->GetRendererWindow()); } ACTION_P3(AccSetValueInBrowser, mock, matcher, value) { - HWND window = mock->event_sink()->GetBrowserWindow(); - scoped_refptr object; - if (FindAccObjectInWindow(window, matcher, &object)) { - EXPECT_TRUE(object->SetValue(value)); - } + AccInWindow(AccSetValue(matcher, value), + mock->event_sink()->GetBrowserWindow()); } ACTION_P2(AccWatchForOneValueChange, observer, matcher) { @@ -172,8 +180,8 @@ ACTION_P(PostCharMessage, character_code) { } ACTION_P2(PostCharMessageToRenderer, mock, character_code) { - HWND window = mock->event_sink()->GetRendererWindow(); - ::PostMessage(window, WM_CHAR, character_code, 0); + AccInWindow(PostCharMessage(character_code), + mock->event_sink()->GetRendererWindow()); } ACTION_P2(PostCharMessagesToRenderer, mock, character_codes) { @@ -191,7 +199,21 @@ ACTION_P(StopWindowWatching, mock) { mock->StopWatching(); } -namespace { +ACTION_P(WatchWindowProcess, mock_observer) { + mock_observer->WatchProcessForHwnd(arg0); +} + +ACTION_P2(WatchBrowserProcess, mock_observer, mock) { + AccInWindow(WatchWindowProcess(mock_observer), + mock->event_sink()->GetBrowserWindow()); +} + +ACTION_P2(WatchRendererProcess, mock_observer, mock) { + AccInWindow(WatchWindowProcess(mock_observer), + mock->event_sink()->GetRendererWindow()); +} + +namespace { // NOLINT void DoCloseWindowNow(HWND hwnd) { ::PostMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0); @@ -218,6 +240,15 @@ ACTION(KillChromeFrameProcesses) { } // Verifying actions +ACTION_P(AccExpect, matcher) { + scoped_refptr object; + EXPECT_TRUE(FindAccObjectInWindow(arg0, matcher, &object)); +} + +ACTION_P2(AccExpectInRenderer, mock, matcher) { + AccInWindow(AccExpect(matcher), + mock->event_sink()->GetRendererWindow()); +} ACTION_P(ExpectRendererHasFocus, mock) { mock->event_sink()->ExpectRendererWindowHasFocus(); -- cgit v1.1