Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10029)

Unified Diff: chrome/test/interactive_ui/view_event_test_base.h

Issue 7568002: Move more files from chrome/test to chrome/test/base, part #6 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/interactive_ui/view_event_test_base.h
===================================================================
--- chrome/test/interactive_ui/view_event_test_base.h (revision 95314)
+++ chrome/test/interactive_ui/view_event_test_base.h (working copy)
@@ -1,152 +0,0 @@
-// 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.
-
-#ifndef CHROME_TEST_INTERACTIVE_UI_VIEW_EVENT_TEST_BASE_H_
-#define CHROME_TEST_INTERACTIVE_UI_VIEW_EVENT_TEST_BASE_H_
-#pragma once
-
-// We only want to use ViewEventTestBase in test targets which properly
-// isolate each test case by running each test in a separate process.
-// This way if a test hangs the test launcher can reliably terminate it.
-#if defined(HAS_OUT_OF_PROC_TEST_RUNNER)
-
-#include "base/message_loop.h"
-#include "base/task.h"
-#include "base/threading/thread.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "views/widget/widget_delegate.h"
-
-class Task;
-
-namespace gfx {
-class Size;
-}
-
-// Base class for Views based tests that dispatch events.
-//
-// As views based event test involves waiting for events to be processed,
-// writing a views based test is slightly different than that of writing
-// other unit tests. In particular when the test fails or is done you need
-// to stop the message loop. This can be done by way of invoking the Done
-// method.
-//
-// Any delayed callbacks should be done by way of CreateEventTask.
-// CreateEventTask checks to see if ASSERT_XXX has been invoked after invoking
-// the task. If there was a failure Done is invoked and the test stops.
-//
-// ViewEventTestBase creates a Window with the View returned from
-// CreateContentsView. The preferred size for the view can be customized by
-// overriding GetPreferredSize. If you do not override GetPreferredSize the
-// preferred size of the view returned from CreateContentsView is used.
-//
-// Subclasses of ViewEventTestBase must implement two methods:
-// . DoTestOnMessageLoop: invoked when the message loop is running. Run your
-// test here, invoke Done when done.
-// . CreateContentsView: returns the view to place in the window.
-//
-// Once you have created a ViewEventTestBase use the macro VIEW_TEST to define
-// the fixture.
-//
-// I encountered weird timing problems in initiating dragging and drop that
-// necessitated ugly hacks. In particular when the hook installed by
-// ui_controls received the mouse event and posted a task that task was not
-// processed. To work around this use the following pattern when initiating
-// dnd:
-// // Schedule the mouse move at a location slightly different from where
-// // you really want to move to.
-// ui_controls::SendMouseMoveNotifyWhenDone(loc.x + 10, loc.y,
-// NewRunnableMethod(this, YYY));
-// // Then use this to schedule another mouse move.
-// ScheduleMouseMoveInBackground(loc.x, loc.y);
-
-class ViewEventTestBase : public views::WidgetDelegate,
- public testing::Test {
- public:
- ViewEventTestBase();
-
- // Invoke when done either because of failure or success. Quits the message
- // loop.
- void Done();
-
- // Creates a window.
- virtual void SetUp();
-
- // Destroys the window.
- virtual void TearDown();
-
- // Overridden from views::WidgetDelegate:
- virtual bool CanResize() const OVERRIDE;
- virtual views::View* GetContentsView() OVERRIDE;
- virtual const views::Widget* GetWidget() const OVERRIDE;
- virtual views::Widget* GetWidget() OVERRIDE;
-
- // Overriden to do nothing so that this class can be used in runnable tasks.
- void AddRef() {}
- void Release() {}
- static bool ImplementsThreadSafeReferenceCounting() { return false; }
-
- protected:
- virtual ~ViewEventTestBase();
-
- // Returns the view that is added to the window.
- virtual views::View* CreateContentsView() = 0;
-
- // Called once the message loop is running.
- virtual void DoTestOnMessageLoop() = 0;
-
- // Invoke from test main. Shows the window, starts the message loop and
- // schedules a task that invokes DoTestOnMessageLoop.
- void StartMessageLoopAndRunTest();
-
- // Returns an empty Size. Subclasses that want a preferred size other than
- // that of the View returned by CreateContentsView should override this
- // appropriately.
- virtual gfx::Size GetPreferredSize();
-
- // Creates a task that calls the specified method back. The specified
- // method is called in such a way that if there are any test failures
- // Done is invoked.
- template <class T, class Method>
- Task* CreateEventTask(T* target, Method method) {
- return NewRunnableMethod(this, &ViewEventTestBase::RunTestMethod,
- NewRunnableMethod(target, method));
- }
-
- // Spawns a new thread posts a MouseMove in the background.
- void ScheduleMouseMoveInBackground(int x, int y);
-
- views::Widget* window_;
-
- private:
- // Stops the thread started by ScheduleMouseMoveInBackground.
- void StopBackgroundThread();
-
- // Callback from CreateEventTask. Stops the background thread, runs the
- // supplied task and if there are failures invokes Done.
- void RunTestMethod(Task* task);
-
- // The content of the Window.
- views::View* content_view_;
-
- // Thread for posting background MouseMoves.
- scoped_ptr<base::Thread> dnd_thread_;
-
- MessageLoopForUI message_loop_;
-
- // Method factory used for time-outs.
- ScopedRunnableMethodFactory<ViewEventTestBase> method_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(ViewEventTestBase);
-};
-
-// Convenience macro for defining a ViewEventTestBase. See class description
-// of ViewEventTestBase for details.
-#define VIEW_TEST(test_class, name) \
- TEST_F(test_class, name) {\
- StartMessageLoopAndRunTest();\
- }
-
-#endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER)
-
-#endif // CHROME_TEST_INTERACTIVE_UI_VIEW_EVENT_TEST_BASE_H_
« no previous file with comments | « chrome/test/interactive_ui/npapi_interactive_test.cc ('k') | chrome/test/interactive_ui/view_event_test_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698