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

Unified Diff: cc/test/test_context_provider.cc

Issue 2278283003: Refactor client visibility handling (Closed)
Patch Set: feedback Created 4 years, 4 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/test/test_context_provider.cc
diff --git a/cc/test/test_context_provider.cc b/cc/test/test_context_provider.cc
index 2634aff5cb567bf4757caefef8c23a8219b7f07a..be27b19a8d8e19c2ce373e2e68c8d92468543740 100644
--- a/cc/test/test_context_provider.cc
+++ b/cc/test/test_context_provider.cc
@@ -14,6 +14,7 @@
#include "base/callback_helpers.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
+#include "cc/output/context_cache_controller.h"
#include "cc/test/test_gles2_interface.h"
#include "cc/test/test_web_graphics_context_3d.h"
#include "third_party/skia/include/gpu/GrContext.h"
@@ -23,17 +24,23 @@ namespace cc {
// static
scoped_refptr<TestContextProvider> TestContextProvider::Create() {
- return new TestContextProvider(base::MakeUnique<TestContextSupport>(),
- base::MakeUnique<TestGLES2Interface>(),
- TestWebGraphicsContext3D::Create());
+ auto support = base::MakeUnique<TestContextSupport>();
+ auto cache_controller =
+ base::MakeUnique<ContextCacheController>(support.get());
+ return new TestContextProvider(
+ std::move(support), base::MakeUnique<TestGLES2Interface>(),
+ TestWebGraphicsContext3D::Create(), std::move(cache_controller));
}
// static
scoped_refptr<TestContextProvider> TestContextProvider::CreateWorker() {
+ auto support = base::MakeUnique<TestContextSupport>();
+ auto cache_controller =
+ base::MakeUnique<ContextCacheController>(support.get());
scoped_refptr<TestContextProvider> worker_context_provider(
- new TestContextProvider(base::MakeUnique<TestContextSupport>(),
- base::MakeUnique<TestGLES2Interface>(),
- TestWebGraphicsContext3D::Create()));
+ new TestContextProvider(
+ std::move(support), base::MakeUnique<TestGLES2Interface>(),
+ TestWebGraphicsContext3D::Create(), std::move(cache_controller)));
// Worker contexts are bound to the thread they are created on.
if (!worker_context_provider->BindToCurrentThread())
return nullptr;
@@ -44,18 +51,24 @@ scoped_refptr<TestContextProvider> TestContextProvider::CreateWorker() {
scoped_refptr<TestContextProvider> TestContextProvider::Create(
std::unique_ptr<TestWebGraphicsContext3D> context) {
DCHECK(context);
- return new TestContextProvider(base::MakeUnique<TestContextSupport>(),
- base::MakeUnique<TestGLES2Interface>(),
- std::move(context));
+ auto support = base::MakeUnique<TestContextSupport>();
+ auto cache_controller =
+ base::MakeUnique<ContextCacheController>(support.get());
+ return new TestContextProvider(
+ std::move(support), base::MakeUnique<TestGLES2Interface>(),
+ std::move(context), std::move(cache_controller));
}
// static
scoped_refptr<TestContextProvider> TestContextProvider::Create(
std::unique_ptr<TestGLES2Interface> gl) {
DCHECK(gl);
- return new TestContextProvider(base::MakeUnique<TestContextSupport>(),
- std::move(gl),
- TestWebGraphicsContext3D::Create());
+ auto support = base::MakeUnique<TestContextSupport>();
+ auto cache_controller =
+ base::MakeUnique<ContextCacheController>(support.get());
+ return new TestContextProvider(std::move(support), std::move(gl),
+ TestWebGraphicsContext3D::Create(),
+ std::move(cache_controller));
}
// static
@@ -64,18 +77,35 @@ scoped_refptr<TestContextProvider> TestContextProvider::Create(
std::unique_ptr<TestContextSupport> support) {
DCHECK(context);
DCHECK(support);
- return new TestContextProvider(std::move(support),
- base::MakeUnique<TestGLES2Interface>(),
- std::move(context));
+ auto cache_controller =
+ base::MakeUnique<ContextCacheController>(support.get());
+ return new TestContextProvider(
+ std::move(support), base::MakeUnique<TestGLES2Interface>(),
+ std::move(context), std::move(cache_controller));
+}
+
+// static
+scoped_refptr<TestContextProvider> TestContextProvider::Create(
+ std::unique_ptr<TestWebGraphicsContext3D> context,
+ std::unique_ptr<TestContextSupport> support,
+ std::unique_ptr<ContextCacheController> cache_controller) {
+ DCHECK(context);
+ DCHECK(support);
+ DCHECK(cache_controller);
+ return new TestContextProvider(
+ std::move(support), base::MakeUnique<TestGLES2Interface>(),
+ std::move(context), std::move(cache_controller));
}
TestContextProvider::TestContextProvider(
std::unique_ptr<TestContextSupport> support,
std::unique_ptr<TestGLES2Interface> gl,
- std::unique_ptr<TestWebGraphicsContext3D> context)
+ std::unique_ptr<TestWebGraphicsContext3D> context,
+ std::unique_ptr<ContextCacheController> cache_controller)
: support_(std::move(support)),
context3d_(std::move(context)),
context_gl_(std::move(gl)),
+ cache_controller_(std::move(cache_controller)),
weak_ptr_factory_(this) {
DCHECK(main_thread_checker_.CalledOnValidThread());
DCHECK(context3d_);
@@ -143,6 +173,8 @@ class GrContext* TestContextProvider::GrContext() {
kOpenGL_GrBackend,
reinterpret_cast<GrBackendContext>(gl_interface.get())));
+ cache_controller_->SetGrContext(gr_context_.get());
+
// If GlContext is already lost, also abandon the new GrContext.
if (ContextGL()->GetGraphicsResetStatusKHR() != GL_NO_ERROR)
gr_context_->abandonContext();
@@ -150,6 +182,11 @@ class GrContext* TestContextProvider::GrContext() {
return gr_context_.get();
}
+ContextCacheController* TestContextProvider::CacheController() {
+ DCHECK(context_thread_checker_.CalledOnValidThread());
+ return cache_controller_.get();
+}
+
void TestContextProvider::InvalidateGrContext(uint32_t state) {
DCHECK(bound_);
DCHECK(context_thread_checker_.CalledOnValidThread());
@@ -162,9 +199,6 @@ base::Lock* TestContextProvider::GetLock() {
return &context_lock_;
}
-void TestContextProvider::DeleteCachedResources() {
-}
-
void TestContextProvider::OnLostContext() {
DCHECK(context_thread_checker_.CalledOnValidThread());
if (!lost_context_callback_.is_null())

Powered by Google App Engine
This is Rietveld 408576698