// Copyright (c) 2006-2008 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/test/automation/window_proxy.h" #include #include #include "base/logging.h" #include "chrome/common/automation_constants.h" #include "chrome/common/automation_messages.h" #include "chrome/test/automation/automation_proxy.h" #include "chrome/test/automation/browser_proxy.h" #include "chrome/test/automation/tab_proxy.h" #include "googleurl/src/gurl.h" #include "ui/gfx/rect.h" bool WindowProxy::SimulateOSClick(const gfx::Point& click, int flags) { if (!is_valid()) return false; return sender_->Send(new AutomationMsg_WindowClick(handle_, click, flags)); } bool WindowProxy::SimulateOSMouseMove(const gfx::Point& location) { if (!is_valid()) return false; return sender_->Send( new AutomationMsg_WindowMouseMove(handle_, location)); } bool WindowProxy::GetWindowTitle(string16* text) { if (!is_valid()) return false; if (!text) { NOTREACHED(); return false; } return sender_->Send(new AutomationMsg_WindowTitle(handle_, text)); } bool WindowProxy::SimulateOSKeyPress(ui::KeyboardCode key, int flags) { if (!is_valid()) return false; return sender_->Send( new AutomationMsg_WindowKeyPress(handle_, key, flags)); } bool WindowProxy::SetVisible(bool visible) { if (!is_valid()) return false; bool result = false; sender_->Send(new AutomationMsg_SetWindowVisible(handle_, visible, &result)); return result; } bool WindowProxy::IsActive(bool* active) { if (!is_valid()) return false; bool result = false; sender_->Send(new AutomationMsg_IsWindowActive(handle_, &result, active)); return result; } bool WindowProxy::Activate() { if (!is_valid()) return false; return sender_->Send(new AutomationMsg_ActivateWindow(handle_)); } bool WindowProxy::GetViewBounds(int view_id, gfx::Rect* bounds, bool screen_coordinates) { if (!is_valid()) return false; if (!bounds) { NOTREACHED(); return false; } bool result = false; if (!sender_->Send(new AutomationMsg_WindowViewBounds( handle_, view_id, screen_coordinates, &result, bounds))) { return false; } return result; } bool WindowProxy::GetBounds(gfx::Rect* bounds) { if (!is_valid()) return false; bool result = false; sender_->Send(new AutomationMsg_GetWindowBounds(handle_, bounds, &result)); return result; } bool WindowProxy::SetBounds(const gfx::Rect& bounds) { if (!is_valid()) return false; bool result = false; sender_->Send(new AutomationMsg_SetWindowBounds(handle_, bounds, &result)); return result; } bool WindowProxy::GetFocusedViewID(int* view_id) { if (!is_valid()) return false; if (!view_id) { NOTREACHED(); return false; } return sender_->Send(new AutomationMsg_GetFocusedViewID(handle_, view_id)); } bool WindowProxy::WaitForFocusedViewIDToChange( int old_view_id, int* new_view_id) { bool result = false; if (!sender_->Send(new AutomationMsg_WaitForFocusedViewIDToChange( handle_, old_view_id, &result, new_view_id))) return false; return result; } scoped_refptr WindowProxy::GetBrowser() { return GetBrowserWithTimeout(base::kNoTimeout, NULL); } scoped_refptr WindowProxy::GetBrowserWithTimeout( uint32 timeout_ms, bool* is_timeout) { if (!is_valid()) return NULL; bool handle_ok = false; int browser_handle = 0; sender_->Send(new AutomationMsg_BrowserForWindow(handle_, &handle_ok, &browser_handle)); if (!handle_ok) return NULL; BrowserProxy* browser = static_cast(tracker_->GetResource(browser_handle)); if (!browser) { browser = new BrowserProxy(sender_, tracker_, browser_handle); browser->AddRef(); } // Since there is no scoped_refptr::attach. scoped_refptr result; result.swap(&browser); return result; } bool WindowProxy::IsMaximized(bool* maximized) { if (!is_valid()) return false; bool result = false; sender_->Send(new AutomationMsg_IsWindowMaximized(handle_, maximized, &result)); return result; }