test_compositor_host_ozone.cc revision f2477e01787aa58f445919b809d89e252beef54f
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 virtual ~TestCompositorHostOzone(); 23 24 private: 25 // Overridden from TestCompositorHost: 26 virtual void Show() OVERRIDE; 27 virtual ui::Compositor* GetCompositor() OVERRIDE; 28 29 void Draw(); 30 31 gfx::Rect bounds_; 32 33 scoped_ptr<ui::Compositor> compositor_; 34 35 DISALLOW_COPY_AND_ASSIGN(TestCompositorHostOzone); 36}; 37 38TestCompositorHostOzone::TestCompositorHostOzone(const gfx::Rect& bounds) 39 : bounds_(bounds) {} 40 41TestCompositorHostOzone::~TestCompositorHostOzone() {} 42 43void TestCompositorHostOzone::Show() { 44 // Ozone should rightly have a backing native framebuffer 45 // An in-memory array draw into by OSMesa is a reasonble 46 // fascimile of a dumb framebuffer at present. 47 // GLSurface will allocate the array so long as it is provided 48 // with a non-0 widget. 49 // TODO(rjkroege): Use a "real" ozone widget when it is 50 // available: http://crbug.com/255128 51 compositor_.reset(new ui::Compositor(1)); 52 compositor_->SetScaleAndSize(1.0f, bounds_.size()); 53} 54 55ui::Compositor* TestCompositorHostOzone::GetCompositor() { 56 return compositor_.get(); 57} 58 59void TestCompositorHostOzone::Draw() { 60 if (compositor_.get()) 61 compositor_->Draw(); 62} 63 64// static 65TestCompositorHost* TestCompositorHost::Create(const gfx::Rect& bounds) { 66 return new TestCompositorHostOzone(bounds); 67} 68 69} // namespace ui 70