Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ui / compositor / test / test_compositor_host_ozone.cc
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/thread_task_runner_handle.h"
14 #include "ui/compositor/compositor.h"
15 #include "ui/gfx/rect.h"
16
17 namespace ui {
18
19 class 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
41 TestCompositorHostOzone::TestCompositorHostOzone(
42     const gfx::Rect& bounds,
43     ui::ContextFactory* context_factory)
44     : bounds_(bounds),
45       context_factory_(context_factory) {}
46
47 TestCompositorHostOzone::~TestCompositorHostOzone() {}
48
49 void 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::ThreadTaskRunnerHandle::Get()));
60   compositor_->SetScaleAndSize(1.0f, bounds_.size());
61 }
62
63 ui::Compositor* TestCompositorHostOzone::GetCompositor() {
64   return compositor_.get();
65 }
66
67 void TestCompositorHostOzone::Draw() {
68   if (compositor_.get())
69     compositor_->Draw();
70 }
71
72 // static
73 TestCompositorHost* TestCompositorHost::Create(
74     const gfx::Rect& bounds,
75     ui::ContextFactory* context_factory) {
76   return new TestCompositorHostOzone(bounds, context_factory);
77 }
78
79 }  // namespace ui