| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/automation/testing_automation_provider.h" |
| |
| #include <gtk/gtk.h> |
| |
| #include "base/logging.h" |
| #include "base/utf_string_conversions.h" |
| #include "chrome/browser/automation/automation_window_tracker.h" |
| #include "chrome/browser/ui/gtk/gtk_util.h" |
| #include "chrome/browser/ui/gtk/view_id_util.h" |
| |
| void TestingAutomationProvider::ActivateWindow(int handle) { |
| NOTIMPLEMENTED(); |
| } |
| |
| void TestingAutomationProvider::IsWindowMaximized(int handle, |
| bool* is_maximized, |
| bool* success) { |
| *success = false; |
| NOTIMPLEMENTED(); |
| } |
| |
| void TestingAutomationProvider::TerminateSession(int handle, bool* success) { |
| *success = false; |
| NOTIMPLEMENTED(); |
| } |
| |
| #if !defined(TOOLKIT_VIEWS) |
| void TestingAutomationProvider::WindowGetViewBounds(int handle, |
| int view_id, |
| bool screen_coordinates, |
| bool* success, |
| gfx::Rect* bounds) { |
| *success = false; |
| |
| GtkWindow* window = window_tracker_->GetResource(handle); |
| if (window) { |
| GtkWidget* widget = ViewIDUtil::GetWidget(GTK_WIDGET(window), |
| static_cast<ViewID>(view_id)); |
| if (!widget) |
| return; |
| *success = true; |
| *bounds = gfx::Rect(widget->allocation.width, widget->allocation.height); |
| gint x, y; |
| if (screen_coordinates) { |
| gfx::Point point = gtk_util::GetWidgetScreenPosition(widget); |
| x = point.x(); |
| y = point.y(); |
| } else { |
| gtk_widget_translate_coordinates(widget, GTK_WIDGET(window), |
| 0, 0, &x, &y); |
| } |
| bounds->set_origin(gfx::Point(x, y)); |
| } |
| } |
| #endif |
| |
| void TestingAutomationProvider::GetWindowBounds(int handle, |
| gfx::Rect* bounds, |
| bool* result) { |
| *result = false; |
| NOTIMPLEMENTED(); |
| } |
| |
| void TestingAutomationProvider::SetWindowBounds(int handle, |
| const gfx::Rect& bounds, |
| bool* success) { |
| *success = false; |
| GtkWindow* window = window_tracker_->GetResource(handle); |
| if (window) { |
| gtk_window_move(window, bounds.x(), bounds.height()); |
| gtk_window_resize(window, bounds.width(), bounds.height()); |
| *success = true; |
| } |
| } |
| |
| void TestingAutomationProvider::SetWindowVisible(int handle, |
| bool visible, |
| bool* result) { |
| *result = false; |
| GtkWindow* window = window_tracker_->GetResource(handle); |
| if (window) { |
| if (visible) { |
| gtk_window_present(window); |
| } else { |
| gtk_widget_hide(GTK_WIDGET(window)); |
| } |
| *result = true; |
| } |
| } |
| |
| void TestingAutomationProvider::GetWindowTitle(int handle, string16* text) { |
| gfx::NativeWindow window = window_tracker_->GetResource(handle); |
| const gchar* title = gtk_window_get_title(window); |
| text->assign(UTF8ToUTF16(title)); |
| } |