| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/automation/ui_controls.h" | 5 #include "chrome/browser/automation/ui_controls.h" |
| 6 | 6 |
| 7 #include <gdk/gdkkeysyms.h> | 7 #include <gdk/gdkkeysyms.h> |
| 8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 new EventWaiter(task, wait_type, 1); | 240 new EventWaiter(task, wait_type, 1); |
| 241 return rv; | 241 return rv; |
| 242 } | 242 } |
| 243 | 243 |
| 244 bool SendMouseClick(MouseButton type) { | 244 bool SendMouseClick(MouseButton type) { |
| 245 return SendMouseEvents(type, UP | DOWN); | 245 return SendMouseEvents(type, UP | DOWN); |
| 246 } | 246 } |
| 247 | 247 |
| 248 #if defined(TOOLKIT_VIEWS) | 248 #if defined(TOOLKIT_VIEWS) |
| 249 | 249 |
| 250 #if defined(OS_LINUX) | 250 #if defined(OS_LINUX) && !defined(USE_AURA) |
| 251 void OnConfigure(GtkWidget* gtk_widget, GdkEvent* event, gpointer data) { | 251 void OnConfigure(GtkWidget* gtk_widget, GdkEvent* event, gpointer data) { |
| 252 views::Widget* widget = static_cast<views::Widget*>(data); | 252 views::Widget* widget = static_cast<views::Widget*>(data); |
| 253 gfx::Rect actual = widget->GetWindowScreenBounds(); | 253 gfx::Rect actual = widget->GetWindowScreenBounds(); |
| 254 gfx::Rect desired = widget->GetRootView()->bounds(); | 254 gfx::Rect desired = widget->GetRootView()->bounds(); |
| 255 if (actual.size() == desired.size()) | 255 if (actual.size() == desired.size()) |
| 256 MessageLoop::current()->Quit(); | 256 MessageLoop::current()->Quit(); |
| 257 } | 257 } |
| 258 | 258 |
| 259 void SynchronizeWidgetSize(views::Widget* widget) { | 259 void SynchronizeWidgetSize(views::Widget* widget) { |
| 260 // If the actual window size and desired window size | 260 // If the actual window size and desired window size |
| 261 // are different, wait until the window is resized | 261 // are different, wait until the window is resized |
| 262 // to desired size. | 262 // to desired size. |
| 263 gfx::Rect actual = widget->GetWindowScreenBounds(); | 263 gfx::Rect actual = widget->GetWindowScreenBounds(); |
| 264 gfx::Rect desired = widget->GetRootView()->bounds(); | 264 gfx::Rect desired = widget->GetRootView()->bounds(); |
| 265 if (actual.size() != desired.size()) { | 265 if (actual.size() != desired.size()) { |
| 266 // Listen to configure-event that is emitted when an window gets | 266 // Listen to configure-event that is emitted when an window gets |
| 267 // resized. | 267 // resized. |
| 268 GtkWidget* gtk_widget = widget->GetNativeView(); | 268 GtkWidget* gtk_widget = widget->GetNativeView(); |
| 269 g_signal_connect(gtk_widget, "configure-event", | 269 g_signal_connect(gtk_widget, "configure-event", |
| 270 G_CALLBACK(&OnConfigure), widget); | 270 G_CALLBACK(&OnConfigure), widget); |
| 271 MessageLoop::current()->Run(); | 271 MessageLoop::current()->Run(); |
| 272 } | 272 } |
| 273 } | 273 } |
| 274 #endif | 274 #endif |
| 275 | 275 |
| 276 void MoveMouseToCenterAndPress(views::View* view, MouseButton button, | 276 void MoveMouseToCenterAndPress(views::View* view, MouseButton button, |
| 277 int state, Task* task) { | 277 int state, Task* task) { |
| 278 #if defined(OS_LINUX) | 278 #if defined(OS_LINUX) && !defined(USE_AURA) |
| 279 // X is asynchronous and we need to wait until the window gets | 279 // X is asynchronous and we need to wait until the window gets |
| 280 // resized to desired size. | 280 // resized to desired size. |
| 281 SynchronizeWidgetSize(view->GetWidget()); | 281 SynchronizeWidgetSize(view->GetWidget()); |
| 282 #endif | 282 #endif |
| 283 | 283 |
| 284 gfx::Point view_center(view->width() / 2, view->height() / 2); | 284 gfx::Point view_center(view->width() / 2, view->height() / 2); |
| 285 views::View::ConvertPointToScreen(view, &view_center); | 285 views::View::ConvertPointToScreen(view, &view_center); |
| 286 SendMouseMoveNotifyWhenDone(view_center.x(), view_center.y(), | 286 SendMouseMoveNotifyWhenDone(view_center.x(), view_center.y(), |
| 287 new ClickTask(button, state, task)); | 287 new ClickTask(button, state, task)); |
| 288 } | 288 } |
| 289 #else | 289 #else |
| 290 void MoveMouseToCenterAndPress(GtkWidget* widget, | 290 void MoveMouseToCenterAndPress(GtkWidget* widget, |
| 291 MouseButton button, | 291 MouseButton button, |
| 292 int state, | 292 int state, |
| 293 Task* task) { | 293 Task* task) { |
| 294 gfx::Rect bounds = gtk_util::GetWidgetScreenBounds(widget); | 294 gfx::Rect bounds = gtk_util::GetWidgetScreenBounds(widget); |
| 295 SendMouseMoveNotifyWhenDone(bounds.x() + bounds.width() / 2, | 295 SendMouseMoveNotifyWhenDone(bounds.x() + bounds.width() / 2, |
| 296 bounds.y() + bounds.height() / 2, | 296 bounds.y() + bounds.height() / 2, |
| 297 new ClickTask(button, state, task)); | 297 new ClickTask(button, state, task)); |
| 298 } | 298 } |
| 299 #endif | 299 #endif |
| 300 | 300 |
| 301 } // namespace ui_controls | 301 } // namespace ui_controls |
| OLD | NEW |