| OLD | NEW | 
|     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 <stddef.h> |     5 #include <stddef.h> | 
|     6  |     6  | 
|     7 #include <utility> |     7 #include <utility> | 
|     8  |     8  | 
|     9 #include "base/memory/ptr_util.h" |     9 #include "base/memory/ptr_util.h" | 
|    10 #include "cc/base/region.h" |    10 #include "cc/base/region.h" | 
| (...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1227                                          &overlay_list, &ca_layer_list, |  1227                                          &overlay_list, &ca_layer_list, | 
|  1228                                          &damage_rect); |  1228                                          &damage_rect); | 
|  1229   EXPECT_EQ(gfx::Rect(), damage_rect); |  1229   EXPECT_EQ(gfx::Rect(), damage_rect); | 
|  1230   EXPECT_EQ(0U, overlay_list.size()); |  1230   EXPECT_EQ(0U, overlay_list.size()); | 
|  1231   EXPECT_EQ(0U, ca_layer_list.size()); |  1231   EXPECT_EQ(0U, ca_layer_list.size()); | 
|  1232   EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |  1232   EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 
|  1233 } |  1233 } | 
|  1234  |  1234  | 
|  1235 class OverlayInfoRendererGL : public GLRenderer { |  1235 class OverlayInfoRendererGL : public GLRenderer { | 
|  1236  public: |  1236  public: | 
|  1237   OverlayInfoRendererGL(RendererClient* client, |  1237   OverlayInfoRendererGL(const RendererSettings* settings, | 
|  1238                         const RendererSettings* settings, |  | 
|  1239                         OutputSurface* output_surface, |  1238                         OutputSurface* output_surface, | 
|  1240                         ResourceProvider* resource_provider) |  1239                         ResourceProvider* resource_provider) | 
|  1241       : GLRenderer(client, |  1240       : GLRenderer(settings, output_surface, resource_provider, NULL, 0), | 
|  1242                    settings, |  | 
|  1243                    output_surface, |  | 
|  1244                    resource_provider, |  | 
|  1245                    NULL, |  | 
|  1246                    0), |  | 
|  1247         expect_overlays_(false) {} |  1241         expect_overlays_(false) {} | 
|  1248  |  1242  | 
|  1249   MOCK_METHOD3(DoDrawQuad, |  1243   MOCK_METHOD3(DoDrawQuad, | 
|  1250                void(DrawingFrame* frame, |  1244                void(DrawingFrame* frame, | 
|  1251                     const DrawQuad* quad, |  1245                     const DrawQuad* quad, | 
|  1252                     const gfx::QuadF* draw_region)); |  1246                     const gfx::QuadF* draw_region)); | 
|  1253  |  1247  | 
|  1254   using GLRenderer::BeginDrawingFrame; |  1248   using GLRenderer::BeginDrawingFrame; | 
|  1255  |  1249  | 
|  1256   void FinishDrawingFrame(DrawingFrame* frame) override { |  1250   void FinishDrawingFrame(DrawingFrame* frame) override { | 
|  1257     GLRenderer::FinishDrawingFrame(frame); |  1251     GLRenderer::FinishDrawingFrame(frame); | 
|  1258  |  1252  | 
|  1259     if (!expect_overlays_) { |  1253     if (!expect_overlays_) { | 
|  1260       EXPECT_EQ(0U, frame->overlay_list.size()); |  1254       EXPECT_EQ(0U, frame->overlay_list.size()); | 
|  1261       return; |  1255       return; | 
|  1262     } |  1256     } | 
|  1263  |  1257  | 
|  1264     ASSERT_EQ(2U, frame->overlay_list.size()); |  1258     ASSERT_EQ(2U, frame->overlay_list.size()); | 
|  1265     EXPECT_GE(frame->overlay_list.back().resource_id, 0U); |  1259     EXPECT_GE(frame->overlay_list.back().resource_id, 0U); | 
|  1266   } |  1260   } | 
|  1267  |  1261  | 
|  1268   void set_expect_overlays(bool expect_overlays) { |  1262   void set_expect_overlays(bool expect_overlays) { | 
|  1269     expect_overlays_ = expect_overlays; |  1263     expect_overlays_ = expect_overlays; | 
|  1270   } |  1264   } | 
|  1271  |  1265  | 
|  1272  private: |  1266  private: | 
|  1273   bool expect_overlays_; |  1267   bool expect_overlays_; | 
|  1274 }; |  1268 }; | 
|  1275  |  1269  | 
|  1276 class FakeRendererClient : public RendererClient { |  | 
|  1277  public: |  | 
|  1278   // RendererClient methods. |  | 
|  1279   void SetFullRootLayerDamage() override {} |  | 
|  1280 }; |  | 
|  1281  |  | 
|  1282 class MockOverlayScheduler { |  1270 class MockOverlayScheduler { | 
|  1283  public: |  1271  public: | 
|  1284   MOCK_METHOD5(Schedule, |  1272   MOCK_METHOD5(Schedule, | 
|  1285                void(int plane_z_order, |  1273                void(int plane_z_order, | 
|  1286                     gfx::OverlayTransform plane_transform, |  1274                     gfx::OverlayTransform plane_transform, | 
|  1287                     unsigned overlay_texture_id, |  1275                     unsigned overlay_texture_id, | 
|  1288                     const gfx::Rect& display_bounds, |  1276                     const gfx::Rect& display_bounds, | 
|  1289                     const gfx::RectF& uv_rect)); |  1277                     const gfx::RectF& uv_rect)); | 
|  1290 }; |  1278 }; | 
|  1291  |  1279  | 
|  1292 class GLRendererWithOverlaysTest : public testing::Test { |  1280 class GLRendererWithOverlaysTest : public testing::Test { | 
|  1293  protected: |  1281  protected: | 
|  1294   GLRendererWithOverlaysTest() { |  1282   GLRendererWithOverlaysTest() { | 
|  1295     provider_ = TestContextProvider::Create(); |  1283     provider_ = TestContextProvider::Create(); | 
|  1296     output_surface_.reset(new OverlayOutputSurface(provider_)); |  1284     output_surface_.reset(new OverlayOutputSurface(provider_)); | 
|  1297     CHECK(output_surface_->BindToClient(&output_surface_client_)); |  1285     CHECK(output_surface_->BindToClient(&output_surface_client_)); | 
|  1298     resource_provider_ = |  1286     resource_provider_ = | 
|  1299         FakeResourceProvider::Create(output_surface_.get(), nullptr); |  1287         FakeResourceProvider::Create(output_surface_.get(), nullptr); | 
|  1300  |  1288  | 
|  1301     provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( |  1289     provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( | 
|  1302         &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); |  1290         &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); | 
|  1303   } |  1291   } | 
|  1304  |  1292  | 
|  1305   void Init(bool use_validator) { |  1293   void Init(bool use_validator) { | 
|  1306     if (use_validator) |  1294     if (use_validator) | 
|  1307       output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); |  1295       output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); | 
|  1308  |  1296  | 
|  1309     renderer_ = base::WrapUnique(new OverlayInfoRendererGL( |  1297     renderer_ = base::WrapUnique(new OverlayInfoRendererGL( | 
|  1310         &renderer_client_, &settings_, output_surface_.get(), |  1298         &settings_, output_surface_.get(), resource_provider_.get())); | 
|  1311         resource_provider_.get())); |  | 
|  1312     renderer_->SetVisible(true); |  1299     renderer_->SetVisible(true); | 
|  1313   } |  1300   } | 
|  1314  |  1301  | 
|  1315   void DrawFrame(RenderPassList* pass_list, const gfx::Rect& viewport_rect) { |  1302   void DrawFrame(RenderPassList* pass_list, const gfx::Rect& viewport_rect) { | 
|  1316     renderer_->DrawFrame(pass_list, 1.f, gfx::ColorSpace(), viewport_rect, |  1303     renderer_->DrawFrame(pass_list, 1.f, gfx::ColorSpace(), viewport_rect, | 
|  1317                          viewport_rect); |  1304                          viewport_rect); | 
|  1318   } |  1305   } | 
|  1319   void SwapBuffers() { |  1306   void SwapBuffers() { | 
|  1320     renderer_->SwapBuffers(CompositorFrameMetadata()); |  1307     renderer_->SwapBuffers(CompositorFrameMetadata()); | 
|  1321     output_surface_->OnSwapBuffersComplete(); |  1308     output_surface_->OnSwapBuffersComplete(); | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
|  1334     response.texture = lock.texture_id(); |  1321     response.texture = lock.texture_id(); | 
|  1335     response.in_use = false; |  1322     response.in_use = false; | 
|  1336     gpu::TextureInUseResponses responses; |  1323     gpu::TextureInUseResponses responses; | 
|  1337     responses.push_back(response); |  1324     responses.push_back(response); | 
|  1338     renderer_->DidReceiveTextureInUseResponses(responses); |  1325     renderer_->DidReceiveTextureInUseResponses(responses); | 
|  1339   } |  1326   } | 
|  1340  |  1327  | 
|  1341   RendererSettings settings_; |  1328   RendererSettings settings_; | 
|  1342   FakeOutputSurfaceClient output_surface_client_; |  1329   FakeOutputSurfaceClient output_surface_client_; | 
|  1343   std::unique_ptr<OverlayOutputSurface> output_surface_; |  1330   std::unique_ptr<OverlayOutputSurface> output_surface_; | 
|  1344   FakeRendererClient renderer_client_; |  | 
|  1345   std::unique_ptr<ResourceProvider> resource_provider_; |  1331   std::unique_ptr<ResourceProvider> resource_provider_; | 
|  1346   std::unique_ptr<OverlayInfoRendererGL> renderer_; |  1332   std::unique_ptr<OverlayInfoRendererGL> renderer_; | 
|  1347   scoped_refptr<TestContextProvider> provider_; |  1333   scoped_refptr<TestContextProvider> provider_; | 
|  1348   MockOverlayScheduler scheduler_; |  1334   MockOverlayScheduler scheduler_; | 
|  1349 }; |  1335 }; | 
|  1350  |  1336  | 
|  1351 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { |  1337 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { | 
|  1352   bool use_validator = true; |  1338   bool use_validator = true; | 
|  1353   Init(use_validator); |  1339   Init(use_validator); | 
|  1354   renderer_->set_expect_overlays(true); |  1340   renderer_->set_expect_overlays(true); | 
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1858   filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1)); |  1844   filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1)); | 
|  1859   quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, |  1845   quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, | 
|  1860                 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), |  1846                 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), | 
|  1861                 filters_, gfx::Vector2dF(1, 1), background_filters_); |  1847                 filters_, gfx::Vector2dF(1, 1), background_filters_); | 
|  1862   ProcessForOverlays(); |  1848   ProcessForOverlays(); | 
|  1863   EXPECT_EQ(0U, ca_layer_list_.size()); |  1849   EXPECT_EQ(0U, ca_layer_list_.size()); | 
|  1864 } |  1850 } | 
|  1865  |  1851  | 
|  1866 }  // namespace |  1852 }  // namespace | 
|  1867 }  // namespace cc |  1853 }  // namespace cc | 
| OLD | NEW |