| Index: chrome/test/interactive_ui/view_event_test_base.cc
|
| ===================================================================
|
| --- chrome/test/interactive_ui/view_event_test_base.cc (revision 95314)
|
| +++ chrome/test/interactive_ui/view_event_test_base.cc (working copy)
|
| @@ -1,171 +0,0 @@
|
| -// 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/test/interactive_ui/view_event_test_base.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#include <ole2.h>
|
| -#endif
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/string_number_conversions.h"
|
| -#include "chrome/browser/automation/ui_controls.h"
|
| -#include "chrome/test/base/ui_test_utils.h"
|
| -#include "views/view.h"
|
| -#include "views/widget/widget.h"
|
| -
|
| -namespace {
|
| -
|
| -// View subclass that allows you to specify the preferred size.
|
| -class TestView : public views::View {
|
| - public:
|
| - TestView() {}
|
| -
|
| - void SetPreferredSize(const gfx::Size& size) {
|
| - preferred_size_ = size;
|
| - PreferredSizeChanged();
|
| - }
|
| -
|
| - gfx::Size GetPreferredSize() {
|
| - if (!preferred_size_.IsEmpty())
|
| - return preferred_size_;
|
| - return View::GetPreferredSize();
|
| - }
|
| -
|
| - virtual void Layout() {
|
| - View* child_view = child_at(0);
|
| - child_view->SetBounds(0, 0, width(), height());
|
| - }
|
| -
|
| - private:
|
| - gfx::Size preferred_size_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestView);
|
| -};
|
| -
|
| -// Delay in background thread before posting mouse move.
|
| -const int kMouseMoveDelayMS = 200;
|
| -
|
| -} // namespace
|
| -
|
| -ViewEventTestBase::ViewEventTestBase()
|
| - : window_(NULL),
|
| - content_view_(NULL),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {
|
| -}
|
| -
|
| -void ViewEventTestBase::Done() {
|
| - // Cancel the pending time-out.
|
| - method_factory_.RevokeAll();
|
| -
|
| - MessageLoop::current()->Quit();
|
| -
|
| -#if defined(OS_WIN)
|
| - // We need to post a message to tickle the Dispatcher getting called and
|
| - // exiting out of the nested loop. Without this the quit never runs.
|
| - PostMessage(window_->GetNativeWindow(), WM_USER, 0, 0);
|
| -#endif
|
| -
|
| - // If we're in a nested message loop, as is the case with menus, we need
|
| - // to quit twice. The second quit does that for us.
|
| - MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
|
| -}
|
| -
|
| -void ViewEventTestBase::SetUp() {
|
| -#if defined(OS_WIN)
|
| - OleInitialize(NULL);
|
| -#endif
|
| - window_ = views::Widget::CreateWindow(this);
|
| -}
|
| -
|
| -void ViewEventTestBase::TearDown() {
|
| - if (window_) {
|
| -#if defined(OS_WIN)
|
| - DestroyWindow(window_->GetNativeWindow());
|
| -#else
|
| - window_->Close();
|
| - MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
|
| - ui_test_utils::RunMessageLoop();
|
| -#endif
|
| - window_ = NULL;
|
| - }
|
| -#if defined(OS_WIN)
|
| - OleUninitialize();
|
| -#endif
|
| -}
|
| -
|
| -bool ViewEventTestBase::CanResize() const {
|
| - return true;
|
| -}
|
| -
|
| -views::View* ViewEventTestBase::GetContentsView() {
|
| - if (!content_view_) {
|
| - // Wrap the real view (as returned by CreateContentsView) in a View so
|
| - // that we can customize the preferred size.
|
| - TestView* test_view = new TestView();
|
| - test_view->SetPreferredSize(GetPreferredSize());
|
| - test_view->AddChildView(CreateContentsView());
|
| - content_view_ = test_view;
|
| - }
|
| - return content_view_;
|
| -}
|
| -
|
| -const views::Widget* ViewEventTestBase::GetWidget() const {
|
| - return content_view_->GetWidget();
|
| -}
|
| -
|
| -views::Widget* ViewEventTestBase::GetWidget() {
|
| - return content_view_->GetWidget();
|
| -}
|
| -
|
| -ViewEventTestBase::~ViewEventTestBase() {
|
| -}
|
| -
|
| -void ViewEventTestBase::StartMessageLoopAndRunTest() {
|
| - window_->Show();
|
| - // Make sure the window is the foreground window, otherwise none of the
|
| - // mouse events are going to be targeted correctly.
|
| -#if defined(OS_WIN)
|
| - SetForegroundWindow(window_->GetNativeWindow());
|
| -#endif
|
| -
|
| - // Flush any pending events to make sure we start with a clean slate.
|
| - MessageLoop::current()->RunAllPending();
|
| -
|
| - // Schedule a task that starts the test. Need to do this as we're going to
|
| - // run the message loop.
|
| - MessageLoop::current()->PostTask(
|
| - FROM_HERE,
|
| - NewRunnableMethod(this, &ViewEventTestBase::DoTestOnMessageLoop));
|
| -
|
| - MessageLoop::current()->Run();
|
| -}
|
| -
|
| -gfx::Size ViewEventTestBase::GetPreferredSize() {
|
| - return gfx::Size();
|
| -}
|
| -
|
| -void ViewEventTestBase::ScheduleMouseMoveInBackground(int x, int y) {
|
| - if (!dnd_thread_.get()) {
|
| - dnd_thread_.reset(new base::Thread("mouse-move-thread"));
|
| - dnd_thread_->Start();
|
| - }
|
| - dnd_thread_->message_loop()->PostDelayedTask(
|
| - FROM_HERE, NewRunnableFunction(&ui_controls::SendMouseMove, x, y),
|
| - kMouseMoveDelayMS);
|
| -}
|
| -
|
| -void ViewEventTestBase::StopBackgroundThread() {
|
| - dnd_thread_.reset(NULL);
|
| -}
|
| -
|
| -void ViewEventTestBase::RunTestMethod(Task* task) {
|
| - StopBackgroundThread();
|
| -
|
| - scoped_ptr<Task> task_deleter(task);
|
| - task->Run();
|
| - if (HasFatalFailure())
|
| - Done();
|
| -}
|
|
|