• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/automation/testing_automation_provider.h"
6 
7 #include <gtk/gtk.h>
8 
9 #include "base/logging.h"
10 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/automation/automation_window_tracker.h"
12 #include "chrome/browser/ui/gtk/gtk_util.h"
13 #include "chrome/browser/ui/gtk/view_id_util.h"
14 
ActivateWindow(int handle)15 void TestingAutomationProvider::ActivateWindow(int handle) {
16   NOTIMPLEMENTED();
17 }
18 
IsWindowMaximized(int handle,bool * is_maximized,bool * success)19 void TestingAutomationProvider::IsWindowMaximized(int handle,
20                                                   bool* is_maximized,
21                                                   bool* success) {
22   *success = false;
23   NOTIMPLEMENTED();
24 }
25 
TerminateSession(int handle,bool * success)26 void TestingAutomationProvider::TerminateSession(int handle, bool* success) {
27   *success = false;
28   NOTIMPLEMENTED();
29 }
30 
31 #if !defined(TOOLKIT_VIEWS)
WindowGetViewBounds(int handle,int view_id,bool screen_coordinates,bool * success,gfx::Rect * bounds)32 void TestingAutomationProvider::WindowGetViewBounds(int handle,
33                                                     int view_id,
34                                                     bool screen_coordinates,
35                                                     bool* success,
36                                                     gfx::Rect* bounds) {
37   *success = false;
38 
39   GtkWindow* window = window_tracker_->GetResource(handle);
40   if (window) {
41     GtkWidget* widget = ViewIDUtil::GetWidget(GTK_WIDGET(window),
42                                               static_cast<ViewID>(view_id));
43     if (!widget)
44       return;
45     *success = true;
46     *bounds = gfx::Rect(widget->allocation.width, widget->allocation.height);
47     gint x, y;
48     if (screen_coordinates) {
49       gfx::Point point = gtk_util::GetWidgetScreenPosition(widget);
50       x = point.x();
51       y = point.y();
52     } else {
53       gtk_widget_translate_coordinates(widget, GTK_WIDGET(window),
54                                        0, 0, &x, &y);
55     }
56     bounds->set_origin(gfx::Point(x, y));
57   }
58 }
59 #endif
60 
GetWindowBounds(int handle,gfx::Rect * bounds,bool * result)61 void TestingAutomationProvider::GetWindowBounds(int handle,
62                                                 gfx::Rect* bounds,
63                                                 bool* result) {
64   *result = false;
65   NOTIMPLEMENTED();
66 }
67 
SetWindowBounds(int handle,const gfx::Rect & bounds,bool * success)68 void TestingAutomationProvider::SetWindowBounds(int handle,
69                                                 const gfx::Rect& bounds,
70                                                 bool* success) {
71   *success = false;
72   GtkWindow* window = window_tracker_->GetResource(handle);
73   if (window) {
74     gtk_window_move(window, bounds.x(), bounds.height());
75     gtk_window_resize(window, bounds.width(), bounds.height());
76     *success = true;
77   }
78 }
79 
SetWindowVisible(int handle,bool visible,bool * result)80 void TestingAutomationProvider::SetWindowVisible(int handle,
81                                                  bool visible,
82                                                  bool* result) {
83   *result = false;
84   GtkWindow* window = window_tracker_->GetResource(handle);
85   if (window) {
86     if (visible) {
87       gtk_window_present(window);
88     } else {
89       gtk_widget_hide(GTK_WIDGET(window));
90     }
91     *result = true;
92   }
93 }
94 
GetWindowTitle(int handle,string16 * text)95 void TestingAutomationProvider::GetWindowTitle(int handle, string16* text) {
96   gfx::NativeWindow window = window_tracker_->GetResource(handle);
97   const gchar* title = gtk_window_get_title(window);
98   text->assign(UTF8ToUTF16(title));
99 }
100