| Index: content/common/gpu/client/gpu_memory_buffer_impl_ozone.cc | 
| diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_ozone.cc b/content/common/gpu/client/gpu_memory_buffer_impl_ozone.cc | 
| index 236d2bd58606d6b6fa88f1b971cad88f6dca08f5..ac00380fbd97849eb6e85c44dbaa8228054c812b 100644 | 
| --- a/content/common/gpu/client/gpu_memory_buffer_impl_ozone.cc | 
| +++ b/content/common/gpu/client/gpu_memory_buffer_impl_ozone.cc | 
| @@ -10,30 +10,58 @@ | 
| namespace content { | 
|  | 
| // static | 
| -void GpuMemoryBufferImpl::Create(gfx::GpuMemoryBufferId id, | 
| +void GpuMemoryBufferImpl::GetSupportedTypes( | 
| +    std::vector<gfx::GpuMemoryBufferType>* types) { | 
| +  const gfx::GpuMemoryBufferType supported_types[] = { | 
| +    gfx::OZONE_NATIVE_BUFFER, | 
| +    gfx::SHARED_MEMORY_BUFFER | 
| +  }; | 
| +  types->assign(supported_types, supported_types + arraysize(supported_types)); | 
| +} | 
| + | 
| +// static | 
| +bool GpuMemoryBufferImpl::IsConfigurationSupported( | 
| +    gfx::GpuMemoryBufferType type, | 
| +    Format format, | 
| +    Usage usage) { | 
| +  switch (type) { | 
| +    case gfx::SHARED_MEMORY_BUFFER: | 
| +      return GpuMemoryBufferImplSharedMemory::IsFormatSupported(format) && | 
| +             GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage); | 
| +    case gfx::OZONE_NATIVE_BUFFER: | 
| +      return GpuMemoryBufferImplOzoneNativeBuffer::IsFormatSupported(format) && | 
| +             GpuMemoryBufferImplOzoneNativeBuffer::IsUsageSupported(usage); | 
| +    default: | 
| +      NOTREACHED(); | 
| +      return false; | 
| +  } | 
| +} | 
| + | 
| +// static | 
| +void GpuMemoryBufferImpl::Create(gfx::GpuMemoryBufferType type, | 
| +                                 gfx::GpuMemoryBufferId id, | 
| const gfx::Size& size, | 
| Format format, | 
| Usage usage, | 
| int client_id, | 
| const CreationCallback& callback) { | 
| -  if (GpuMemoryBufferImplOzoneNativeBuffer::IsConfigurationSupported(format, | 
| -                                                                     usage)) { | 
| -    GpuMemoryBufferImplOzoneNativeBuffer::Create( | 
| -        id, size, format, client_id, callback); | 
| -    return; | 
| -  } | 
| - | 
| -  if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( | 
| -          size, format, usage)) { | 
| -    GpuMemoryBufferImplSharedMemory::Create(id, size, format, callback); | 
| -    return; | 
| +  switch (type) { | 
| +    case gfx::SHARED_MEMORY_BUFFER: | 
| +      GpuMemoryBufferImplSharedMemory::Create(id, size, format, callback); | 
| +      break; | 
| +    case gfx::OZONE_NATIVE_BUFFER: | 
| +      GpuMemoryBufferImplOzoneNativeBuffer::Create( | 
| +          id, size, format, client_id, callback); | 
| +      break; | 
| +    default: | 
| +      NOTREACHED(); | 
| +      break; | 
| } | 
| - | 
| -  callback.Run(scoped_ptr<GpuMemoryBufferImpl>()); | 
| } | 
|  | 
| // static | 
| void GpuMemoryBufferImpl::AllocateForChildProcess( | 
| +    gfx::GpuMemoryBufferType type, | 
| gfx::GpuMemoryBufferId id, | 
| const gfx::Size& size, | 
| Format format, | 
| @@ -41,21 +69,19 @@ void GpuMemoryBufferImpl::AllocateForChildProcess( | 
| base::ProcessHandle child_process, | 
| int child_client_id, | 
| const AllocationCallback& callback) { | 
| -  if (GpuMemoryBufferImplOzoneNativeBuffer::IsConfigurationSupported(format, | 
| -                                                                     usage)) { | 
| -    GpuMemoryBufferImplOzoneNativeBuffer::AllocateForChildProcess( | 
| -        id, size, format, child_client_id, callback); | 
| -    return; | 
| -  } | 
| - | 
| -  if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( | 
| -          size, format, usage)) { | 
| -    GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( | 
| -        id, size, format, child_process, callback); | 
| -    return; | 
| +  switch (type) { | 
| +    case gfx::SHARED_MEMORY_BUFFER: | 
| +      GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( | 
| +          id, size, format, child_process, callback); | 
| +      break; | 
| +    case gfx::OZONE_NATIVE_BUFFER: | 
| +      GpuMemoryBufferImplOzoneNativeBuffer::AllocateForChildProcess( | 
| +          id, size, format, child_client_id, callback); | 
| +      break; | 
| +    default: | 
| +      NOTREACHED(); | 
| +      break; | 
| } | 
| - | 
| -  callback.Run(gfx::GpuMemoryBufferHandle()); | 
| } | 
|  | 
| // static | 
| @@ -92,6 +118,7 @@ scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::CreateFromHandle( | 
| return GpuMemoryBufferImplOzoneNativeBuffer::CreateFromHandle( | 
| handle, size, format, callback); | 
| default: | 
| +      NOTREACHED(); | 
| return scoped_ptr<GpuMemoryBufferImpl>(); | 
| } | 
| } | 
|  |