Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / ui / ozone / platform / dri / test / mock_dri_surface.cc
1 // Copyright 2014 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/ozone/platform/dri/test/mock_dri_surface.h"
6
7 #include "third_party/skia/include/core/SkCanvas.h"
8 #include "ui/ozone/platform/dri/dri_buffer.h"
9 #include "ui/ozone/platform/dri/dri_wrapper.h"
10
11 namespace ui {
12
13 namespace {
14
15 class MockDriBuffer : public DriBuffer {
16  public:
17   MockDriBuffer(DriWrapper* dri, bool initialize_expectation)
18       : DriBuffer(dri), initialize_expectation_(initialize_expectation) {}
19   virtual ~MockDriBuffer() { surface_.clear(); }
20
21   virtual bool Initialize(const SkImageInfo& info) OVERRIDE {
22     if (!initialize_expectation_)
23       return false;
24
25     dri_->AddFramebuffer(
26         info.width(), info.height(), 24, 32, stride_, handle_, &framebuffer_);
27     surface_ = skia::AdoptRef(SkSurface::NewRaster(info));
28     surface_->getCanvas()->clear(SK_ColorBLACK);
29
30     return true;
31   }
32
33  private:
34   bool initialize_expectation_;
35
36   DISALLOW_COPY_AND_ASSIGN(MockDriBuffer);
37 };
38
39 }  // namespace
40
41 MockDriSurface::MockDriSurface(DriWrapper* dri, const gfx::Size& size)
42     : DriSurface(dri, size), dri_(dri), initialize_expectation_(true) {}
43
44 MockDriSurface::~MockDriSurface() {}
45
46 DriBuffer* MockDriSurface::CreateBuffer() {
47   MockDriBuffer* bitmap = new MockDriBuffer(dri_, initialize_expectation_);
48   bitmaps_.push_back(bitmap);
49
50   return bitmap;
51 }
52
53 }  // namespace ui