summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser_focus_uitest.cc
diff options
context:
space:
mode:
authorfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-14 09:47:03 +0000
committerfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-14 09:47:03 +0000
commita711df1011fa2236f7c3e4749e6bae293ee36cd7 (patch)
tree79179b1c2d9145a670dc8b86ba62201c4e07c2ec /chrome/browser/browser_focus_uitest.cc
parentf1212bdd5b485d5ee20f9f1ed428f036fba54611 (diff)
downloadchromium_src-a711df1011fa2236f7c3e4749e6bae293ee36cd7.zip
chromium_src-a711df1011fa2236f7c3e4749e6bae293ee36cd7.tar.gz
chromium_src-a711df1011fa2236f7c3e4749e6bae293ee36cd7.tar.bz2
PrepopulateRespectBlank working, lets check the other test that was disabled
at the same time. I am removing traces from two tests since I think the problem with those tests have been fixed. By suppressing the crash server window on the try servers and ensuring Chrome is in the foreground it looks like the test now works. I went back in time through pages of try server logs and it seems to work. I am also enabling my other test that was disabled at the same time, since I think that test will probably work now. I moved the window caption check to that file, so we can see if we still have the same problem when it fails. BUG=62936, 62937 TEST=This CL is all about tests. Review URL: http://codereview.chromium.org/5769003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69112 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser_focus_uitest.cc')
-rw-r--r--chrome/browser/browser_focus_uitest.cc54
1 files changed, 52 insertions, 2 deletions
diff --git a/chrome/browser/browser_focus_uitest.cc b/chrome/browser/browser_focus_uitest.cc
index 7d81feb..836b335 100644
--- a/chrome/browser/browser_focus_uitest.cc
+++ b/chrome/browser/browser_focus_uitest.cc
@@ -8,6 +8,7 @@
#include "base/format_macros.h"
#include "base/message_loop.h"
#include "base/path_service.h"
+#include "base/string_number_conversions.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_window.h"
@@ -41,6 +42,11 @@
#include "chrome/browser/gtk/view_id_util.h"
#endif
+#if defined(OS_WIN)
+#include <windows.h>
+#include <Psapi.h>
+#endif
+
#if defined(OS_LINUX)
#define MAYBE_FocusTraversal FocusTraversal
#define MAYBE_FocusTraversalOnInterstitial FocusTraversalOnInterstitial
@@ -72,6 +78,49 @@ const char kStealFocusPage[] = "files/focus/page_steals_focus.html";
const char kTypicalPage[] = "files/focus/typical_page.html";
const char kTypicalPageName[] = "typical_page.html";
+// Test to make sure Chrome is in the foreground as we start testing. This is
+// required for tests that synthesize input to the Chrome window.
+bool ChromeInForeground() {
+#if defined(OS_WIN)
+ HWND window = ::GetForegroundWindow();
+ std::wstring caption;
+ std::wstring filename;
+ int len = ::GetWindowTextLength(window) + 1;
+ ::GetWindowText(window, WriteInto(&caption, len), len);
+ bool chrome_window_in_foreground =
+ EndsWith(caption, L" - Google Chrome", true) ||
+ EndsWith(caption, L" - Chromium", true);
+ if (!chrome_window_in_foreground) {
+ DWORD process_id;
+ int thread_id = ::GetWindowThreadProcessId(window, &process_id);
+
+ base::ProcessHandle process;
+ if (base::OpenProcessHandleWithAccess(process_id,
+ PROCESS_QUERY_LIMITED_INFORMATION,
+ &process)) {
+ len = MAX_PATH;
+ if (!GetProcessImageFileName(process, WriteInto(&filename, len), len)) {
+ int error = GetLastError();
+ filename = std::wstring(L"Unable to read filename for process id '" +
+ base::IntToString16(process_id) +
+ L"' (error ") +
+ base::IntToString16(error) + L")";
+ }
+ base::CloseProcessHandle(process);
+ }
+ }
+ EXPECT_TRUE(chrome_window_in_foreground)
+ << "Chrome must be in the foreground when running interactive tests\n"
+ << "Process in foreground: " << filename.c_str() << "\n"
+ << "Window: " << window << "\n"
+ << "Caption: " << caption.c_str();
+ return chrome_window_in_foreground;
+#else
+ // Windows only at the moment.
+ return true;
+#endif
+}
+
class BrowserFocusTest : public InProcessBrowserTest {
public:
BrowserFocusTest() {
@@ -652,8 +701,7 @@ IN_PROC_BROWSER_TEST_F(BrowserFocusTest, InterstitialFocus) {
}
// Make sure Find box can request focus, even when it is already open.
-// Disabled, http://crbug.com/62936.
-IN_PROC_BROWSER_TEST_F(BrowserFocusTest, DISABLED_FindFocusTest) {
+IN_PROC_BROWSER_TEST_F(BrowserFocusTest, FindFocusTest) {
ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
ASSERT_TRUE(test_server()->Start());
@@ -661,6 +709,8 @@ IN_PROC_BROWSER_TEST_F(BrowserFocusTest, DISABLED_FindFocusTest) {
GURL url = test_server()->GetURL(kTypicalPage);
ui_test_utils::NavigateToURL(browser(), url);
+ EXPECT_TRUE(ChromeInForeground());
+
#if defined(OS_MACOSX)
// Press Cmd+F, which will make the Find box open and request focus.
ASSERT_TRUE(ui_test_utils::SendKeyPressSync(