// Copyright (c) 2012 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/base/interactive_test_utils.h" #include "base/logging.h" #include "base/message_loop.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/test/base/ui_controls.h" #include "ui/views/focus/focus_manager.h" namespace ui_test_utils { bool IsViewFocused(const Browser* browser, ViewID vid) { BrowserWindow* browser_window = browser->window(); DCHECK(browser_window); gfx::NativeWindow window = browser_window->GetNativeWindow(); DCHECK(window); const views::Widget* widget = views::Widget::GetTopLevelWidgetForNativeView(window); DCHECK(widget); const views::FocusManager* focus_manager = widget->GetFocusManager(); DCHECK(focus_manager); DCHECK(focus_manager->GetFocusedView()); return focus_manager->GetFocusedView()->id() == vid; } void ClickOnView(const Browser* browser, ViewID vid) { views::View* view = BrowserView::GetBrowserViewForBrowser(browser)->GetViewByID(vid); DCHECK(view); MoveMouseToCenterAndPress( view, ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, MessageLoop::QuitClosure()); content::RunMessageLoop(); } void MoveMouseToCenterAndPress(views::View* view, ui_controls::MouseButton button, int state, const base::Closure& closure) { DCHECK(view); DCHECK(view->GetWidget()); gfx::Point view_center(view->width() / 2, view->height() / 2); views::View::ConvertPointToScreen(view, &view_center); ui_controls::SendMouseMoveNotifyWhenDone( view_center.x(), view_center.y(), base::Bind(&internal::ClickTask, button, state, closure)); } } // namespace ui_test_utils