1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <stdio.h>
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <cmath>
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string>
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <vector>
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/public/test/unittest_test_suite.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/gl/gl_surface.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h"
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace {
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl;
188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass ContextTestBase : public testing::Test {
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public:
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void SetUp() {
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    blink::WebGraphicsContext3D::Attributes attributes;
23e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch    bool lose_context_when_out_of_memory = false;
24e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch    typedef WebGraphicsContext3DInProcessCommandBufferImpl WGC3DIPCBI;
25e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch    context_ = WGC3DIPCBI::CreateOffscreenContext(
26e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch        attributes, lose_context_when_out_of_memory);
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    context_->makeContextCurrent();
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    context_support_ = context_->GetContextSupport();
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void TearDown() {
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    context_.reset(NULL);
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected:
368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context_;
378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  gpu::ContextSupport* context_support_;
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch};
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Include the actual tests.
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define CONTEXT_TEST_F TEST_F
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/common/gpu/client/gpu_context_tests.h"
45