summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/aura/desktop.cc5
-rw-r--r--ui/aura/desktop.h10
-rw-r--r--ui/aura/test/aura_test_base.cc7
-rw-r--r--ui/aura/test/test_suite.cc1
-rw-r--r--ui/aura_shell/test_suite.cc5
-rw-r--r--ui/gfx/compositor/compositor.cc3
-rw-r--r--ui/gfx/compositor/compositor.gyp22
-rw-r--r--ui/gfx/compositor/compositor.h16
-rw-r--r--ui/gfx/compositor/compositor_test_support.cc20
-rw-r--r--ui/gfx/compositor/compositor_test_support.h5
-rw-r--r--ui/gfx/compositor/layer_unittest.cc2
-rw-r--r--ui/gfx/compositor/test_compositor.cc12
-rw-r--r--ui/gfx/compositor/test_compositor.h5
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;