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

Unified Diff: chrome/browser/automation/ui_controls_win.cc

Issue 5451002: Revert 67849 - Figure out error in test PrepopulateRespectBlank.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 1 month 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 | « no previous file | chrome/browser/ui/views/find_bar_host_interactive_uitest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/automation/ui_controls_win.cc
===================================================================
--- chrome/browser/automation/ui_controls_win.cc (revision 67850)
+++ chrome/browser/automation/ui_controls_win.cc (working copy)
@@ -8,6 +8,7 @@
#include "app/keyboard_codes.h"
#include "base/logging.h"
#include "base/message_loop.h"
+#include "base/string_util.h"
#include "base/win_util.h"
#include "base/ref_counted.h"
#include "base/task.h"
@@ -17,6 +18,12 @@
namespace {
+void Checkpoint(const char* message, const base::TimeTicks& start_time) {
+ LOG(INFO) << message << " : "
+ << (base::TimeTicks::Now() - start_time).InMilliseconds()
+ << " ms" << std::flush;
+}
+
// InputDispatcher ------------------------------------------------------------
// InputDispatcher is used to listen for a mouse/keyboard event. When the
@@ -38,7 +45,7 @@
~InputDispatcher();
- // Notifies the task and release this (which should delete it).
+ // Notifies the task and release this (which should delete it).
void NotifyTask();
// The task we notify.
@@ -71,14 +78,25 @@
// Callback from hook when a key message is received.
LRESULT CALLBACK KeyHook(int n_code, WPARAM w_param, LPARAM l_param) {
+ base::TimeTicks start_time = base::TimeTicks::Now();
+ char msg[512];
+ base::snprintf(msg, 512, "KeyHook starts: %d", n_code);
+ Checkpoint(msg, start_time);
+
HHOOK next_hook = next_hook_;
+ base::snprintf(msg, 512, "n_code == HC_ACTION: %d, %d",
+ l_param, !!(l_param & (1 << 30)));
+ Checkpoint(msg, start_time);
if (n_code == HC_ACTION) {
DCHECK(current_dispatcher_);
- if (l_param & (1 << 30)) {
- // Only send on key up.
+ if (l_param & (1 << 30)) { // Only send on key up.
+ Checkpoint("MatchingMessageFound", start_time);
current_dispatcher_->MatchingMessageFound();
+ } else {
+ Checkpoint("Not key up", start_time);
}
}
+ Checkpoint("KeyHook ends, calling next hook.", start_time);
return CallNextHookEx(next_hook, n_code, w_param, l_param);
}
@@ -166,77 +184,99 @@
bool SendKeyPressImpl(app::KeyboardCode key,
bool control, bool shift, bool alt,
Task* task) {
+ base::TimeTicks start_time = base::TimeTicks::Now();
+ Checkpoint("SendKeyPressImpl starts", start_time);
+
scoped_refptr<InputDispatcher> dispatcher(
task ? new InputDispatcher(task, WM_KEYUP) : NULL);
// If a pop-up menu is open, it won't receive events sent using SendInput.
// Check for a pop-up menu using its window class (#32768) and if one
// exists, send the key event directly there.
+ Checkpoint("FindWindow", start_time);
HWND popup_menu = ::FindWindow(L"#32768", 0);
if (popup_menu != NULL && popup_menu == ::GetTopWindow(NULL)) {
+ Checkpoint("Found popup window", start_time);
WPARAM w_param = app::WindowsKeyCodeForKeyboardCode(key);
LPARAM l_param = 0;
+ Checkpoint("Send WM_KEYDOWN", start_time);
::SendMessage(popup_menu, WM_KEYDOWN, w_param, l_param);
+ Checkpoint("Send WM_KEYUP", start_time);
::SendMessage(popup_menu, WM_KEYUP, w_param, l_param);
+ Checkpoint("Send Done", start_time);
if (dispatcher.get())
dispatcher->AddRef();
return true;
}
- INPUT input[8] = { 0 }; // 8, assuming all the modifiers are activated.
+ Checkpoint("Found no popup window", start_time);
+ INPUT input[8] = { 0 }; // 8, assuming all the modifiers are activated
+
UINT i = 0;
if (control) {
+ Checkpoint("FillKeyboardInput Control", start_time);
if (!FillKeyboardInput(app::VKEY_CONTROL, &input[i], false))
return false;
i++;
}
if (shift) {
+ Checkpoint("FillKeyboardInput Shift", start_time);
if (!FillKeyboardInput(app::VKEY_SHIFT, &input[i], false))
return false;
i++;
}
if (alt) {
+ Checkpoint("FillKeyboardInput Alt", start_time);
if (!FillKeyboardInput(app::VKEY_MENU, &input[i], false))
return false;
i++;
}
+ Checkpoint("FillKeyboardInput 1", start_time);
if (!FillKeyboardInput(key, &input[i], false))
return false;
i++;
+ Checkpoint("FillKeyboardInput 2", start_time);
if (!FillKeyboardInput(key, &input[i], true))
return false;
i++;
if (alt) {
+ Checkpoint("FillKeyboardInput Alt2", start_time);
if (!FillKeyboardInput(app::VKEY_MENU, &input[i], true))
return false;
i++;
}
if (shift) {
+ Checkpoint("FillKeyboardInput Shift2", start_time);
if (!FillKeyboardInput(app::VKEY_SHIFT, &input[i], true))
return false;
i++;
}
if (control) {
+ Checkpoint("FillKeyboardInput Ctrl2", start_time);
if (!FillKeyboardInput(app::VKEY_CONTROL, &input[i], true))
return false;
i++;
}
+ Checkpoint("SendInput called", start_time);
if (::SendInput(i, input, sizeof(INPUT)) != i)
return false;
+ Checkpoint("SendInput done", start_time);
+
if (dispatcher.get())
dispatcher->AddRef();
+ Checkpoint("Test done", start_time);
return true;
}
« no previous file with comments | « no previous file | chrome/browser/ui/views/find_bar_host_interactive_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698