test_compositor_host_ozone.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/compositor/test/test_compositor_host.h" 6 7#include "base/basictypes.h" 8#include "base/bind.h" 9#include "base/compiler_specific.h" 10#include "base/logging.h" 11#include "base/memory/scoped_ptr.h" 12#include "base/memory/weak_ptr.h" 13#include "base/message_loop/message_loop.h" 14#include "ui/compositor/compositor.h" 15#include "ui/gfx/rect.h" 16 17namespace ui { 18 19class TestCompositorHostOzone : public TestCompositorHost { 20 public: 21 TestCompositorHostOzone(const gfx::Rect& bounds, 22 ui::ContextFactory* context_factory); 23 virtual ~TestCompositorHostOzone(); 24 25 private: 26 // Overridden from TestCompositorHost: 27 virtual void Show() OVERRIDE; 28 virtual ui::Compositor* GetCompositor() OVERRIDE; 29 30 void Draw(); 31 32 gfx::Rect bounds_; 33 34 ui::ContextFactory* context_factory_; 35 36 scoped_ptr<ui::Compositor> compositor_; 37 38 DISALLOW_COPY_AND_ASSIGN(TestCompositorHostOzone); 39}; 40 41TestCompositorHostOzone::TestCompositorHostOzone( 42 const gfx::Rect& bounds, 43 ui::ContextFactory* context_factory) 44 : bounds_(bounds), 45 context_factory_(context_factory) {} 46 47TestCompositorHostOzone::~TestCompositorHostOzone() {} 48 49void TestCompositorHostOzone::Show() { 50 // Ozone should rightly have a backing native framebuffer 51 // An in-memory array draw into by OSMesa is a reasonble 52 // fascimile of a dumb framebuffer at present. 53 // GLSurface will allocate the array so long as it is provided 54 // with a non-0 widget. 55 // TODO(rjkroege): Use a "real" ozone widget when it is 56 // available: http://crbug.com/255128 57 compositor_.reset(new ui::Compositor(1, 58 context_factory_, 59 base::MessageLoopProxy::current())); 60 compositor_->SetScaleAndSize(1.0f, bounds_.size()); 61} 62 63ui::Compositor* TestCompositorHostOzone::GetCompositor() { 64 return compositor_.get(); 65} 66 67void TestCompositorHostOzone::Draw() { 68 if (compositor_.get()) 69 compositor_->Draw(); 70} 71 72// static 73TestCompositorHost* TestCompositorHost::Create( 74 const gfx::Rect& bounds, 75 ui::ContextFactory* context_factory) { 76 return new TestCompositorHostOzone(bounds, context_factory); 77} 78 79} // namespace ui 80