diff options
author | backer@chromium.org <backer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-25 12:48:03 +0000 |
---|---|---|
committer | backer@chromium.org <backer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-25 12:48:03 +0000 |
commit | c6933fcf7d7d3d13a0b9fb7ee2c6c59406d60003 (patch) | |
tree | be2d4459fc9e0c3fa8ba1c222494991af2424592 /ui | |
parent | d251633833d12a8fa5030df91261a015f1812b5a (diff) | |
download | chromium_src-c6933fcf7d7d3d13a0b9fb7ee2c6c59406d60003.zip chromium_src-c6933fcf7d7d3d13a0b9fb7ee2c6c59406d60003.tar.gz chromium_src-c6933fcf7d7d3d13a0b9fb7ee2c6c59406d60003.tar.bz2 |
ui::TestCompositor::TestCompositor() constructor has been changed to take a a CompositorDelegate* as a parameter. It can be NULL to get the same behaviour as before. But some tests actually require ScheduleDraw() to cause a draw to happen, in order to test that their real delegate is doing its job. Also, we move the compositor_factory from views::Widget and aura::Desktop to ui::Compositor.
BUG=101091
TEST=bots stay green
Review URL: http://codereview.chromium.org/8240006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107103 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/aura/desktop.cc | 5 | ||||
-rw-r--r-- | ui/aura/desktop.h | 10 | ||||
-rw-r--r-- | ui/aura/test/aura_test_base.cc | 7 | ||||
-rw-r--r-- | ui/aura/test/test_suite.cc | 1 | ||||
-rw-r--r-- | ui/aura_shell/test_suite.cc | 5 | ||||
-rw-r--r-- | ui/gfx/compositor/compositor.cc | 3 | ||||
-rw-r--r-- | ui/gfx/compositor/compositor.gyp | 22 | ||||
-rw-r--r-- | ui/gfx/compositor/compositor.h | 16 | ||||
-rw-r--r-- | ui/gfx/compositor/compositor_test_support.cc | 20 | ||||
-rw-r--r-- | ui/gfx/compositor/compositor_test_support.h | 5 | ||||
-rw-r--r-- | ui/gfx/compositor/layer_unittest.cc | 2 | ||||
-rw-r--r-- | ui/gfx/compositor/test_compositor.cc | 12 | ||||
-rw-r--r-- | ui/gfx/compositor/test_compositor.h | 5 |
13 files changed, 80 insertions, 33 deletions
diff --git a/ui/aura/desktop.cc b/ui/aura/desktop.cc index bbc6e2a..d8a9c0a 100644 --- a/ui/aura/desktop.cc +++ b/ui/aura/desktop.cc @@ -42,7 +42,6 @@ static const int kDefaultHostWindowHeight = 1024; } // namespace Desktop* Desktop::instance_ = NULL; -ui::Compositor*(*Desktop::compositor_factory_)() = NULL; bool Desktop::use_fullscreen_host_window_ = false; Desktop::Desktop() @@ -62,8 +61,8 @@ Desktop::Desktop() host_->SetDesktop(this); last_mouse_location_ = host_->QueryMouseLocation(); - if (compositor_factory_) { - compositor_ = (*Desktop::compositor_factory())(); + if (ui::Compositor::compositor_factory()) { + compositor_ = (*ui::Compositor::compositor_factory())(this); } else { compositor_ = ui::Compositor::Create(this, host_->GetAcceleratedWidget(), host_->GetSize()); diff --git a/ui/aura/desktop.h b/ui/aura/desktop.h index e6b6c97..ffeed27 100644 --- a/ui/aura/desktop.h +++ b/ui/aura/desktop.h @@ -49,13 +49,6 @@ class AURA_EXPORT Desktop : public ui::CompositorDelegate, static Desktop* GetInstance(); static void DeleteInstanceForTesting(); - static void set_compositor_factory_for_testing(ui::Compositor*(*factory)()) { - compositor_factory_ = factory; - } - static ui::Compositor* (*compositor_factory())() { - return compositor_factory_; - } - static void set_use_fullscreen_host_window(bool use_fullscreen) { use_fullscreen_host_window_ = use_fullscreen; } @@ -171,9 +164,6 @@ class AURA_EXPORT Desktop : public ui::CompositorDelegate, static Desktop* instance_; - // Factory used to create Compositors. Settable by tests. - static ui::Compositor*(*compositor_factory_)(); - // If set before the Desktop is created, the host window will cover the entire // screen. Note that this can still be overridden via the // switches::kAuraHostWindowSize flag. diff --git a/ui/aura/test/aura_test_base.cc b/ui/aura/test/aura_test_base.cc index c2cff110..61ffed4 100644 --- a/ui/aura/test/aura_test_base.cc +++ b/ui/aura/test/aura_test_base.cc @@ -10,15 +10,10 @@ #include "ui/aura/desktop.h" #include "ui/aura/test/test_desktop_delegate.h" -#include "ui/gfx/compositor/test_compositor.h" namespace aura { namespace test { -static ui::Compositor* TestCreateCompositor() { - return new ui::TestCompositor(); -} - AuraTestBase::AuraTestBase() : setup_called_(false), teardown_called_(false) { @@ -26,7 +21,6 @@ AuraTestBase::AuraTestBase() OleInitialize(NULL); #endif - aura::Desktop::set_compositor_factory_for_testing(&TestCreateCompositor); // TestDesktopDelegate is owned by the desktop. new TestDesktopDelegate(); Desktop::GetInstance()->Show(); @@ -50,7 +44,6 @@ AuraTestBase::~AuraTestBase() { // Ensure that we don't use the previously-allocated static Desktop object // later -- on Linux, it holds a reference to our message loop's X connection. aura::Desktop::DeleteInstanceForTesting(); - aura::Desktop::set_compositor_factory_for_testing(NULL); } void AuraTestBase::SetUp() { diff --git a/ui/aura/test/test_suite.cc b/ui/aura/test/test_suite.cc index 11e0f3b..4c4faa6 100644 --- a/ui/aura/test/test_suite.cc +++ b/ui/aura/test/test_suite.cc @@ -29,6 +29,7 @@ void AuraTestSuite::Initialize() { // output, it'll pass regardless of the system language. ui::ResourceBundle::InitSharedInstance("en-US"); ui::CompositorTestSupport::Initialize(); + ui::CompositorTestSupport::SetupMockCompositor(); } void AuraTestSuite::Shutdown() { diff --git a/ui/aura_shell/test_suite.cc b/ui/aura_shell/test_suite.cc index 5ccb18f..07fcddc 100644 --- a/ui/aura_shell/test_suite.cc +++ b/ui/aura_shell/test_suite.cc @@ -11,15 +11,11 @@ #include "ui/base/ui_base_paths.h" #include "ui/gfx/compositor/compositor_test_support.h" #include "ui/gfx/gfx_paths.h" -#include "ui/gfx/gl/gl_implementation.h" AuraShellTestSuite::AuraShellTestSuite(int argc, char** argv) : TestSuite(argc, argv) {} void AuraShellTestSuite::Initialize() { -#if defined(OS_LINUX) - gfx::InitializeGLBindings(gfx::kGLImplementationOSMesaGL); -#endif base::TestSuite::Initialize(); gfx::RegisterPathProvider(); @@ -29,6 +25,7 @@ void AuraShellTestSuite::Initialize() { // output, it'll pass regardless of the system language. ui::ResourceBundle::InitSharedInstance("en-US"); ui::CompositorTestSupport::Initialize(); + ui::CompositorTestSupport::SetupMockCompositor(); } void AuraShellTestSuite::Shutdown() { diff --git a/ui/gfx/compositor/compositor.cc b/ui/gfx/compositor/compositor.cc index 87aa06e..388d7d9 100644 --- a/ui/gfx/compositor/compositor.cc +++ b/ui/gfx/compositor/compositor.cc @@ -16,6 +16,9 @@ TextureDrawParams::TextureDrawParams() vertically_flipped(false) { } +// static +Compositor*(*Compositor::compositor_factory_)(CompositorDelegate*) = NULL; + Compositor::Compositor(CompositorDelegate* delegate, const gfx::Size& size) : delegate_(delegate), size_(size), diff --git a/ui/gfx/compositor/compositor.gyp b/ui/gfx/compositor/compositor.gyp index 02368cf..d4ce8d5 100644 --- a/ui/gfx/compositor/compositor.gyp +++ b/ui/gfx/compositor/compositor.gyp @@ -106,8 +106,8 @@ 'target_name': 'compositor_test_support', 'type': 'static_library', 'dependencies': [ - '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_support', - '<(DEPTH)/third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', + '<(DEPTH)/base/base.gyp:base', + '<(DEPTH)/skia/skia.gyp:skia', ], 'sources': [ 'compositor_test_support.cc', @@ -117,8 +117,24 @@ ['use_webkit_compositor == 1', { 'dependencies': [ '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_support', + '<(DEPTH)/third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', ], }], + ['views_compositor==1', { + 'sources': [ + 'compositor.cc', + 'compositor.h', + 'layer.cc', + 'layer.h', + 'layer_animator.cc', + 'layer_animator.h', + 'layer_animator_delegate.h', + 'test_compositor.cc', + 'test_compositor.h', + 'test_texture.cc', + 'test_texture.h', + ], + }], ], }, { @@ -142,8 +158,6 @@ 'layer_animator_unittest.cc', 'layer_unittest.cc', 'run_all_unittests.cc', - 'test_compositor.cc', - 'test_compositor.h', 'test_compositor_host.h', 'test_compositor_host_linux.cc', 'test_compositor_host_win.cc', diff --git a/ui/gfx/compositor/compositor.h b/ui/gfx/compositor/compositor.h index 574fed8..4ec89da 100644 --- a/ui/gfx/compositor/compositor.h +++ b/ui/gfx/compositor/compositor.h @@ -137,6 +137,16 @@ class COMPOSITOR_EXPORT Compositor : public base::RefCounted<Compositor> { void RemoveObserver(CompositorObserver* observer); bool HasObserver(CompositorObserver* observer); + static void set_compositor_factory_for_testing( + ui::Compositor*(*factory)(ui::CompositorDelegate* owner)) { + compositor_factory_ = factory; + } + + static ui::Compositor* (*compositor_factory())( + ui::CompositorDelegate* owner) { + return compositor_factory_; + } + protected: Compositor(CompositorDelegate* delegate, const gfx::Size& size); virtual ~Compositor(); @@ -169,6 +179,12 @@ class COMPOSITOR_EXPORT Compositor : public base::RefCounted<Compositor> { ObserverList<CompositorObserver> observer_list_; + // Factory used to create Compositors. Settable by tests. + // The delegate can be NULL if you don't wish to catch the ScheduleDraw() + // calls to it. + static ui::Compositor*(*compositor_factory_)( + ui::CompositorDelegate* delegate); + friend class base::RefCounted<Compositor>; }; diff --git a/ui/gfx/compositor/compositor_test_support.cc b/ui/gfx/compositor/compositor_test_support.cc index e72bd0c..d9e88e2 100644 --- a/ui/gfx/compositor/compositor_test_support.cc +++ b/ui/gfx/compositor/compositor_test_support.cc @@ -9,6 +9,11 @@ #include "webkit/glue/webkitplatformsupport_impl.h" #endif +#if defined(VIEWS_COMPOSITOR) +#include "ui/gfx/compositor/compositor.h" +#include "ui/gfx/compositor/test_compositor.h" +#endif + namespace ui { #if defined(USE_WEBKIT_COMPOSITOR) @@ -32,4 +37,19 @@ void CompositorTestSupport::Terminate() { #endif } +void CompositorTestSupport::SetupMockCompositor() { +#if defined(USE_WEBKIT_COMPOSITOR) + // TODO(backer): We've got dependencies in Layer that require + // WebKit support even though we're mocking the Compositor. We + // would ideally mock out these unnecessary dependencies as well. + DCHECK(g_webkit_support); +#endif + +#if defined(VIEWS_COMPOSITOR) + // Use a mock compositor that noops draws. + ui::Compositor::set_compositor_factory_for_testing( + ui::TestCompositor::Create); +#endif +} + } // namespace ui diff --git a/ui/gfx/compositor/compositor_test_support.h b/ui/gfx/compositor/compositor_test_support.h index de520a0..cd7ea2e 100644 --- a/ui/gfx/compositor/compositor_test_support.h +++ b/ui/gfx/compositor/compositor_test_support.h @@ -10,8 +10,13 @@ namespace ui { class CompositorTestSupport { public: + // Called by programs that want to use a real compositor, + // but skip the typical initialization of browser_main.cc. static void Initialize(); static void Terminate(); + + // Called by tests that want to use a mocked compositor. + static void SetupMockCompositor(); }; } // namespace ui diff --git a/ui/gfx/compositor/layer_unittest.cc b/ui/gfx/compositor/layer_unittest.cc index aa230f9..33ecee9 100644 --- a/ui/gfx/compositor/layer_unittest.cc +++ b/ui/gfx/compositor/layer_unittest.cc @@ -238,7 +238,7 @@ class LayerWithDelegateTest : public testing::Test { // Overridden from testing::Test: virtual void SetUp() OVERRIDE { - compositor_ = new TestCompositor(); + compositor_ = new TestCompositor(NULL); } virtual void TearDown() OVERRIDE { diff --git a/ui/gfx/compositor/test_compositor.cc b/ui/gfx/compositor/test_compositor.cc index f34021e..4bc6faa 100644 --- a/ui/gfx/compositor/test_compositor.cc +++ b/ui/gfx/compositor/test_compositor.cc @@ -19,9 +19,11 @@ class TestCompositorDelegate : public ui::CompositorDelegate { DISALLOW_COPY_AND_ASSIGN(TestCompositorDelegate); }; -TestCompositor::TestCompositor() - : Compositor(new TestCompositorDelegate, gfx::Size(100, 100)) { - owned_delegate_.reset(static_cast<TestCompositorDelegate*>(delegate())); +TestCompositor::TestCompositor(CompositorDelegate *owner) + : Compositor((owner ? owner : new TestCompositorDelegate), + gfx::Size(100, 100)) { + if (!owner) + owned_delegate_.reset(static_cast<TestCompositorDelegate*>(delegate())); } TestCompositor::~TestCompositor() { @@ -46,6 +48,10 @@ void TestCompositor::DrawTree() { #endif } +ui::Compositor* TestCompositor::Create(ui::CompositorDelegate* owner) { + return new ui::TestCompositor(owner); +} + void TestCompositor::OnWidgetSizeChanged() { } diff --git a/ui/gfx/compositor/test_compositor.h b/ui/gfx/compositor/test_compositor.h index 6af5a94..6472496 100644 --- a/ui/gfx/compositor/test_compositor.h +++ b/ui/gfx/compositor/test_compositor.h @@ -18,7 +18,7 @@ class TestCompositorDelegate; // Trivial Compositor implementation that creates Textures of type TestTexture. class TestCompositor : public ui::Compositor { public: - TestCompositor(); + explicit TestCompositor(CompositorDelegate* owner); virtual ~TestCompositor(); // ui::Compositor: @@ -28,6 +28,9 @@ class TestCompositor : public ui::Compositor { virtual void Blur(const gfx::Rect& bounds) OVERRIDE; virtual void DrawTree() OVERRIDE; + // A simple factory that creates a test compositor with a given delegate + static ui::Compositor* Create(ui::CompositorDelegate* owner); + protected: virtual void OnWidgetSizeChanged() OVERRIDE; |