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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 606033003: Fix RenderWidgetHostViewAuraTest.* for Surfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/compositor/delegated_frame_host.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index 63bdc873d98c1bb3303731e2b10f8af6cfd789da..a7359517455cc4d348c459212248c321a3781960 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -13,6 +13,8 @@
#include "cc/output/compositor_frame.h"
#include "cc/output/compositor_frame_metadata.h"
#include "cc/output/copy_output_request.h"
+#include "cc/surfaces/surface.h"
+#include "cc/surfaces/surface_manager.h"
#include "content/browser/browser_thread_impl.h"
#include "content/browser/compositor/resize_lock.h"
#include "content/browser/compositor/test/no_transport_image_transport_factory.h"
@@ -258,6 +260,14 @@ class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura {
return GetDelegatedFrameHost()->FrameProviderForTesting();
}
+ cc::SurfaceId surface_id() const {
+ return GetDelegatedFrameHost()->SurfaceIdForTesting();
+ }
+
+ bool HasFrameData() const {
+ return frame_provider() || !surface_id().is_null();
+ }
+
bool released_front_lock_active() const {
return GetDelegatedFrameHost()->ReleasedFrontLockActiveForTesting();
}
@@ -1347,10 +1357,23 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
EXPECT_EQ(size3.ToString(), view_->GetRequestedRendererSize().ToString());
+ cc::SurfaceId surface_id = view_->surface_id();
+ int swap_index = 0;
+ int resize_index = 1;
+ if (!surface_id.is_null()) {
+ // Frame ack is sent only due to a draw callback with surfaces.
+ ImageTransportFactory::GetInstance()
+ ->GetSurfaceManager()
+ ->GetSurfaceForId(surface_id)
+ ->RunDrawCallbacks();
+ swap_index = 1;
+ resize_index = 0;
+ }
EXPECT_EQ(2u, sink_->message_count());
- EXPECT_EQ(ViewMsg_SwapCompositorFrameAck::ID, sink_->GetMessageAt(0)->type());
+ EXPECT_EQ(ViewMsg_SwapCompositorFrameAck::ID,
+ sink_->GetMessageAt(swap_index)->type());
{
- const IPC::Message* msg = sink_->GetMessageAt(1);
+ const IPC::Message* msg = sink_->GetMessageAt(resize_index);
EXPECT_EQ(ViewMsg_Resize::ID, msg->type());
ViewMsg_Resize::Param params;
ViewMsg_Resize::Read(msg, &params);
@@ -1527,20 +1550,20 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
views[i]->WasShown();
views[i]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
views[i]->WasHidden();
}
// There should be max_renderer_frames with a frame in it, and one without it.
// Since the logic is LRU eviction, the first one should be without.
- EXPECT_FALSE(views[0]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
for (size_t i = 1; i < renderer_count; ++i)
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
// LRU renderer is [0], make it visible, it shouldn't evict anything yet.
views[0]->WasShown();
- EXPECT_FALSE(views[0]->frame_provider());
- EXPECT_TRUE(views[1]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
+ EXPECT_TRUE(views[1]->HasFrameData());
// Since [0] doesn't have a frame, it should be waiting for the renderer to
// give it one.
EXPECT_TRUE(views[0]->released_front_lock_active());
@@ -1548,8 +1571,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// Swap a frame on it, it should evict the next LRU [1].
views[0]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
- EXPECT_TRUE(views[0]->frame_provider());
- EXPECT_FALSE(views[1]->frame_provider());
+ EXPECT_TRUE(views[0]->HasFrameData());
+ EXPECT_FALSE(views[1]->HasFrameData());
// Now that [0] got a frame, it shouldn't be waiting any more.
EXPECT_FALSE(views[0]->released_front_lock_active());
views[0]->WasHidden();
@@ -1558,11 +1581,11 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// the next LRU [2].
views[1]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
- EXPECT_TRUE(views[0]->frame_provider());
- EXPECT_TRUE(views[1]->frame_provider());
- EXPECT_FALSE(views[2]->frame_provider());
+ EXPECT_TRUE(views[0]->HasFrameData());
+ EXPECT_TRUE(views[1]->HasFrameData());
+ EXPECT_FALSE(views[2]->HasFrameData());
for (size_t i = 3; i < renderer_count; ++i)
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
// Make all renderers but [0] visible and swap a frame on them, keep [0]
// hidden, it becomes the LRU.
@@ -1571,20 +1594,20 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// The renderers who don't have a frame should be waiting. The ones that
// have a frame should not.
// In practice, [1] has a frame, but anything after has its frame evicted.
- EXPECT_EQ(!views[i]->frame_provider(),
+ EXPECT_EQ(!views[i]->HasFrameData(),
views[i]->released_front_lock_active());
views[i]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
// Now everyone has a frame.
EXPECT_FALSE(views[i]->released_front_lock_active());
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
}
- EXPECT_FALSE(views[0]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
// Swap a frame on [0], it should be evicted immediately.
views[0]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
- EXPECT_FALSE(views[0]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
// Make [0] visible, and swap a frame on it. Nothing should be evicted
// although we're above the limit.
@@ -1595,11 +1618,11 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_FALSE(views[0]->released_front_lock_active());
for (size_t i = 0; i < renderer_count; ++i)
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
// Make [0] hidden, it should evict its frame.
views[0]->WasHidden();
- EXPECT_FALSE(views[0]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
// Make [0] visible, don't give it a frame, it should be waiting.
views[0]->WasShown();
@@ -1610,10 +1633,10 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// Make [1] hidden, resize it. It should drop its frame.
views[1]->WasHidden();
- EXPECT_TRUE(views[1]->frame_provider());
+ EXPECT_TRUE(views[1]->HasFrameData());
gfx::Size size2(200, 200);
views[1]->SetSize(size2);
- EXPECT_FALSE(views[1]->frame_provider());
+ EXPECT_FALSE(views[1]->HasFrameData());
// Show it, it should block until we give it a frame.
views[1]->WasShown();
EXPECT_TRUE(views[1]->released_front_lock_active());
@@ -1641,9 +1664,9 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
views[renderer_count - 1]->WasHidden();
for (size_t i = 0; i < renderer_count; ++i) {
if (i + 2 < renderer_count)
- EXPECT_FALSE(views[i]->frame_provider());
+ EXPECT_FALSE(views[i]->HasFrameData());
else
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
}
HostSharedBitmapManager::current()->ProcessRemoved(
base::GetCurrentProcessHandle());
@@ -1690,25 +1713,25 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
views[i]->WasShown();
views[i]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
- EXPECT_TRUE(views[i]->frame_provider());
+ EXPECT_TRUE(views[i]->HasFrameData());
}
// If we hide [0], then [0] should be evicted.
views[0]->WasHidden();
- EXPECT_FALSE(views[0]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
// If we lock [0] before hiding it, then [0] should not be evicted.
views[0]->WasShown();
views[0]->OnSwapCompositorFrame(
1, MakeDelegatedFrame(1.f, frame_size, view_rect));
- EXPECT_TRUE(views[0]->frame_provider());
+ EXPECT_TRUE(views[0]->HasFrameData());
views[0]->GetDelegatedFrameHost()->LockResources();
views[0]->WasHidden();
- EXPECT_TRUE(views[0]->frame_provider());
+ EXPECT_TRUE(views[0]->HasFrameData());
// If we unlock [0] now, then [0] should be evicted.
views[0]->GetDelegatedFrameHost()->UnlockResources();
- EXPECT_FALSE(views[0]->frame_provider());
+ EXPECT_FALSE(views[0]->HasFrameData());
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Destroy();
@@ -1735,6 +1758,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) {
// Save the frame provider.
scoped_refptr<cc::DelegatedFrameProvider> frame_provider =
view_->frame_provider();
+ cc::SurfaceId surface_id = view_->surface_id();
// This frame will have the same number of physical pixels, but has a new
// scale on it.
@@ -1744,7 +1768,10 @@ TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) {
// When we get a new frame with the same frame size in physical pixels, but a
// different scale, we should generate a new frame provider, as the final
// result will need to be scaled differently to the screen.
- EXPECT_NE(frame_provider.get(), view_->frame_provider());
+ if (frame_provider.get())
+ EXPECT_NE(frame_provider.get(), view_->frame_provider());
+ else
+ EXPECT_NE(surface_id, view_->surface_id());
}
class RenderWidgetHostViewAuraCopyRequestTest
« no previous file with comments | « content/browser/compositor/delegated_frame_host.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698