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

Unified Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 1394263004: android webview: allow cc to fail hardware draw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase + clean ups Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: cc/trees/layer_tree_host_impl_unittest.cc
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index d2aeadec71eac9fb6d2660fb663c3e1ed9c288fe..5a19cbaab661dba42debc5a1e260d2c39995611d 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -120,6 +120,7 @@ class LayerTreeHostImplTest : public testing::Test,
void SetMaxSwapsPendingOnImplThread(int max) override {}
void DidSwapBuffersOnImplThread() override {}
void DidSwapBuffersCompleteOnImplThread() override {}
+ void OnResourcelessSoftareDrawStateChanged(bool resourceless_draw) override {}
void OnCanDrawStateChanged(bool can_draw) override {
on_can_draw_state_changed_called_ = true;
}
@@ -468,7 +469,15 @@ TEST_F(LayerTreeHostImplTest, NotifyIfCanDrawChanged) {
TEST_F(LayerTreeHostImplTest, CanDrawIncompleteFrames) {
CreateHostImpl(DefaultSettings(),
- FakeOutputSurface::CreateAlwaysDrawAndSwap3d());
+ FakeOutputSurface::CreateSoftware(
+ make_scoped_ptr(new SoftwareOutputDevice())));
+ const gfx::Transform external_transform;
+ const gfx::Rect external_viewport;
+ const gfx::Rect external_clip;
+ const bool resourceless_software_draw = true;
+ host_impl_->SetExternalDrawConstraints(
+ external_transform, external_viewport, external_clip, external_viewport,
+ external_transform, resourceless_software_draw);
bool always_draw = true;
CheckNotifyCalledIfCanDrawChanged(always_draw);
@@ -3119,10 +3128,16 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsAndFails) {
TEST_F(LayerTreeHostImplTest,
PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) {
CreateHostImpl(DefaultSettings(),
- FakeOutputSurface::CreateAlwaysDrawAndSwap3d());
- EXPECT_TRUE(host_impl_->output_surface()
- ->capabilities()
- .draw_and_swap_full_viewport_every_frame);
+ FakeOutputSurface::CreateSoftware(
+ make_scoped_ptr(new SoftwareOutputDevice())));
+
+ const gfx::Transform external_transform;
+ const gfx::Rect external_viewport;
+ const gfx::Rect external_clip;
+ const bool resourceless_software_draw = true;
+ host_impl_->SetExternalDrawConstraints(
+ external_transform, external_viewport, external_clip, external_viewport,
+ external_transform, resourceless_software_draw);
std::vector<PrepareToDrawSuccessTestCase> cases;
@@ -5533,7 +5548,8 @@ class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
scoped_ptr<OutputSurface> CreateFakeOutputSurface(bool always_draw) {
if (always_draw) {
- return FakeOutputSurface::CreateAlwaysDrawAndSwap3d();
+ return FakeOutputSurface::CreateSoftware(
+ make_scoped_ptr(new SoftwareOutputDevice()));
}
return FakeOutputSurface::Create3d();
}
@@ -5683,6 +5699,16 @@ class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
size, host_impl_->active_tree()->device_scale_factor());
}
+ void SetAlwaysDraw() {
+ const gfx::Transform external_transform;
+ const gfx::Rect external_viewport;
+ const gfx::Rect external_clip;
+ const bool resourceless_software_draw = true;
+ host_impl_->SetExternalDrawConstraints(
+ external_transform, external_viewport, external_clip, external_viewport,
+ external_transform, resourceless_software_draw);
+ }
+
DrawQuad::Material gutter_quad_material_;
gfx::Size gutter_texture_size_;
gfx::Size viewport_size_;
@@ -5724,6 +5750,7 @@ TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeGrowViewportInvalid) {
bool always_draw = true;
CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(always_draw));
+ SetAlwaysDraw();
brianderson 2015/10/21 22:43:04 Why isn't this called from other LayerTreeHostImpl
boliu 2015/10/21 22:46:34 The above two tests have always_draw = false.
// Pending tree to force active_tree size invalid. Not used otherwise.
host_impl_->CreatePendingTree();
@@ -5741,6 +5768,7 @@ TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeShrinkViewportInvalid) {
bool always_draw = true;
CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(always_draw));
+ SetAlwaysDraw();
// Set larger viewport and activate it to active tree.
host_impl_->CreatePendingTree();
@@ -8225,11 +8253,8 @@ TEST_F(LayerTreeHostImplTest, ExternalTransformSetNeedsRedraw) {
external_transform, external_viewport, external_clip1, external_viewport,
external_transform, resourceless_software_draw);
EXPECT_FALSE(did_request_redraw_);
- {
- LayerTreeHostImpl::FrameData frame;
- EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
- EXPECT_TRUE(frame.has_no_damage);
- }
+ // Can't call PrepareToDrawFrame with no change for resourceless software
+ // draw.
// Unsetting resourceless_software_draw do not need redraw.
did_request_redraw_ = false;

Powered by Google App Engine
This is Rietveld 408576698