15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// found in the LICENSE file.
4558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/browser/compositor/test/no_transport_image_transport_factory.h"
6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
7d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "cc/output/context_provider.h"
8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "content/common/gpu/client/gl_helper.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "gpu/command_buffer/client/gles2_interface.h"
10558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "ui/compositor/compositor.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/compositor/test/in_process_context_factory.h"
12558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochnamespace content {
14558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
15116680a4aac90f2aa7413d9095a592090648e557Ben MurdochNoTransportImageTransportFactory::NoTransportImageTransportFactory()
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    : context_factory_(new ui::InProcessContextFactory) {
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
18558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)NoTransportImageTransportFactory::~NoTransportImageTransportFactory() {
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  scoped_ptr<GLHelper> lost_gl_helper = gl_helper_.Pass();
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  FOR_EACH_OBSERVER(
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      ImageTransportFactoryObserver, observer_list_, OnLostResources());
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
250de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)ui::ContextFactory* NoTransportImageTransportFactory::GetContextFactory() {
260de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  return context_factory_.get();
270de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)}
280de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochgfx::GLSurfaceHandle
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)NoTransportImageTransportFactory::GetSharedSurfaceHandle() {
31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  return gfx::GLSurfaceHandle();
32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_ptr<cc::SurfaceIdAllocator>
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)NoTransportImageTransportFactory::CreateSurfaceIdAllocator() {
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return scoped_ptr<cc::SurfaceIdAllocator>();
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)cc::SurfaceManager* NoTransportImageTransportFactory::GetSurfaceManager() {
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return NULL;
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)GLHelper* NoTransportImageTransportFactory::GetGLHelper() {
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (!gl_helper_) {
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    context_provider_ = context_factory_->SharedMainThreadContextProvider();
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    gl_helper_.reset(new GLHelper(context_provider_->ContextGL(),
478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                                  context_provider_->ContextSupport()));
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
49d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return gl_helper_.get();
50d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
51558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
52558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochvoid NoTransportImageTransportFactory::AddObserver(
53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    ImageTransportFactoryObserver* observer) {
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  observer_list_.AddObserver(observer);
55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
56558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
57558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochvoid NoTransportImageTransportFactory::RemoveObserver(
58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    ImageTransportFactoryObserver* observer) {
59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  observer_list_.RemoveObserver(observer);
60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
61558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}  // namespace content
63