Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Side by Side Diff: ui/ozone/platform/dri/dri_surface_unittest.cc

Issue 469343003: [Ozone-GBM] Pumb DriWindowDelegate throughout the platform (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unittest && rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "third_party/skia/include/core/SkCanvas.h" 7 #include "third_party/skia/include/core/SkCanvas.h"
8 #include "third_party/skia/include/core/SkColor.h" 8 #include "third_party/skia/include/core/SkColor.h"
9 #include "third_party/skia/include/core/SkDevice.h" 9 #include "third_party/skia/include/core/SkDevice.h"
10 #include "ui/ozone/platform/dri/crtc_state.h" 10 #include "ui/ozone/platform/dri/crtc_state.h"
11 #include "ui/ozone/platform/dri/dri_buffer.h" 11 #include "ui/ozone/platform/dri/dri_buffer.h"
12 #include "ui/ozone/platform/dri/dri_surface.h" 12 #include "ui/ozone/platform/dri/dri_surface.h"
13 #include "ui/ozone/platform/dri/dri_window_delegate.h"
13 #include "ui/ozone/platform/dri/hardware_display_controller.h" 14 #include "ui/ozone/platform/dri/hardware_display_controller.h"
14 #include "ui/ozone/platform/dri/test/mock_dri_wrapper.h" 15 #include "ui/ozone/platform/dri/test/mock_dri_wrapper.h"
15 16
16 namespace { 17 namespace {
17 18
18 // Create a basic mode for a 6x4 screen. 19 // Create a basic mode for a 6x4 screen.
19 const drmModeModeInfo kDefaultMode = 20 const drmModeModeInfo kDefaultMode =
20 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; 21 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}};
21 22
22 const uint32_t kDefaultCrtc = 1; 23 const uint32_t kDefaultCrtc = 1;
23 const uint32_t kDefaultConnector = 2; 24 const uint32_t kDefaultConnector = 2;
24 25
26 class MockDriWindowDelegate : public ui::DriWindowDelegate {
27 public:
28 MockDriWindowDelegate(ui::DriWrapper* drm) {
29 controller_.reset(new ui::HardwareDisplayController(
30 drm,
31 make_scoped_ptr(
32 new ui::CrtcState(drm, kDefaultCrtc, kDefaultConnector))));
33 scoped_refptr<ui::DriBuffer> buffer(new ui::DriBuffer(drm));
34 SkImageInfo info = SkImageInfo::MakeN32Premul(kDefaultMode.hdisplay,
35 kDefaultMode.vdisplay);
36 EXPECT_TRUE(buffer->Initialize(info));
37 EXPECT_TRUE(controller_->Modeset(ui::OverlayPlane(buffer), kDefaultMode));
38 }
39 virtual ~MockDriWindowDelegate() {}
40
41 // DriWindowDelegate:
42 virtual void Initialize() OVERRIDE {}
43 virtual void Shutdown() OVERRIDE {}
44 virtual gfx::AcceleratedWidget GetAcceleratedWidget() OVERRIDE { return 1; }
45 virtual ui::HardwareDisplayController* GetController() OVERRIDE {
46 return controller_.get();
47 }
48 virtual void OnBoundsChanged(const gfx::Rect& bounds) OVERRIDE {}
49
50 private:
51 scoped_ptr<ui::HardwareDisplayController> controller_;
52
53 DISALLOW_COPY_AND_ASSIGN(MockDriWindowDelegate);
54 };
55
25 } // namespace 56 } // namespace
26 57
27 class DriSurfaceTest : public testing::Test { 58 class DriSurfaceTest : public testing::Test {
28 public: 59 public:
29 DriSurfaceTest() {} 60 DriSurfaceTest() {}
30 61
31 virtual void SetUp() OVERRIDE; 62 virtual void SetUp() OVERRIDE;
32 virtual void TearDown() OVERRIDE; 63 virtual void TearDown() OVERRIDE;
33 64
34 protected: 65 protected:
35 scoped_ptr<base::MessageLoop> message_loop_; 66 scoped_ptr<base::MessageLoop> message_loop_;
36 scoped_ptr<ui::MockDriWrapper> drm_; 67 scoped_ptr<ui::MockDriWrapper> drm_;
37 scoped_ptr<ui::HardwareDisplayController> controller_; 68 scoped_ptr<MockDriWindowDelegate> window_delegate_;
38 scoped_ptr<ui::DriSurface> surface_; 69 scoped_ptr<ui::DriSurface> surface_;
39 70
40 private: 71 private:
41 DISALLOW_COPY_AND_ASSIGN(DriSurfaceTest); 72 DISALLOW_COPY_AND_ASSIGN(DriSurfaceTest);
42 }; 73 };
43 74
44 void DriSurfaceTest::SetUp() { 75 void DriSurfaceTest::SetUp() {
45 message_loop_.reset(new base::MessageLoopForUI); 76 message_loop_.reset(new base::MessageLoopForUI);
46 drm_.reset(new ui::MockDriWrapper(3)); 77 drm_.reset(new ui::MockDriWrapper(3));
47 78 window_delegate_.reset(new MockDriWindowDelegate(drm_.get()));
48 controller_.reset(new ui::HardwareDisplayController( 79 surface_.reset(new ui::DriSurface(window_delegate_.get(), drm_.get()));
49 drm_.get(),
50 scoped_ptr<ui::CrtcState>(
51 new ui::CrtcState(drm_.get(), kDefaultCrtc, kDefaultConnector))));
52 scoped_refptr<ui::DriBuffer> buffer(new ui::DriBuffer(drm_.get()));
53 SkImageInfo info = SkImageInfo::MakeN32Premul(kDefaultMode.hdisplay,
54 kDefaultMode.vdisplay);
55 EXPECT_TRUE(buffer->Initialize(info));
56 EXPECT_TRUE(controller_->Modeset(ui::OverlayPlane(buffer), kDefaultMode));
57
58 surface_.reset(new ui::DriSurface(drm_.get(), controller_->AsWeakPtr()));
59 surface_->ResizeCanvas(gfx::Size(kDefaultMode.hdisplay, 80 surface_->ResizeCanvas(gfx::Size(kDefaultMode.hdisplay,
60 kDefaultMode.vdisplay)); 81 kDefaultMode.vdisplay));
61 } 82 }
62 83
63 void DriSurfaceTest::TearDown() { 84 void DriSurfaceTest::TearDown() {
64 surface_.reset(); 85 surface_.reset();
65 controller_.reset(); 86 window_delegate_.reset();
66 drm_.reset(); 87 drm_.reset();
67 message_loop_.reset(); 88 message_loop_.reset();
68 } 89 }
69 90
70 TEST_F(DriSurfaceTest, CheckFBIDOnSwap) { 91 TEST_F(DriSurfaceTest, CheckFBIDOnSwap) {
71 surface_->PresentCanvas(gfx::Rect()); 92 surface_->PresentCanvas(gfx::Rect());
72 // Framebuffer ID 1 is allocated in SetUp for the buffer used to modeset. 93 // Framebuffer ID 1 is allocated in SetUp for the buffer used to modeset.
73 EXPECT_EQ(3u, drm_->current_framebuffer()); 94 EXPECT_EQ(3u, drm_->current_framebuffer());
74 surface_->PresentCanvas(gfx::Rect()); 95 surface_->PresentCanvas(gfx::Rect());
75 EXPECT_EQ(2u, drm_->current_framebuffer()); 96 EXPECT_EQ(2u, drm_->current_framebuffer());
(...skipping 22 matching lines...) Expand all
98 // Make sure the updates are correctly propagated to the native surface. 119 // Make sure the updates are correctly propagated to the native surface.
99 for (int i = 0; i < image.height(); ++i) { 120 for (int i = 0; i < image.height(); ++i) {
100 for (int j = 0; j < image.width(); ++j) { 121 for (int j = 0; j < image.width(); ++j) {
101 if (j < kDefaultMode.hdisplay / 2 && i < kDefaultMode.vdisplay / 2) 122 if (j < kDefaultMode.hdisplay / 2 && i < kDefaultMode.vdisplay / 2)
102 EXPECT_EQ(SK_ColorWHITE, image.getColor(j, i)); 123 EXPECT_EQ(SK_ColorWHITE, image.getColor(j, i));
103 else 124 else
104 EXPECT_EQ(SK_ColorBLACK, image.getColor(j, i)); 125 EXPECT_EQ(SK_ColorBLACK, image.getColor(j, i));
105 } 126 }
106 } 127 }
107 } 128 }
OLDNEW
« no previous file with comments | « ui/ozone/platform/dri/dri_surface_factory_unittest.cc ('k') | ui/ozone/platform/dri/dri_vsync_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698