summaryrefslogtreecommitdiff
path: root/chromium/ui/compositor
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/compositor')
-rw-r--r--chromium/ui/compositor/compositor.cc72
-rw-r--r--chromium/ui/compositor/compositor.gyp5
-rw-r--r--chromium/ui/compositor/compositor.h29
-rw-r--r--chromium/ui/compositor/context_provider_from_context_factory.cc76
-rw-r--r--chromium/ui/compositor/context_provider_from_context_factory.h45
-rw-r--r--chromium/ui/compositor/layer_animation_sequence.cc5
-rw-r--r--chromium/ui/compositor/layer_animation_sequence.h5
-rw-r--r--chromium/ui/compositor/layer_animation_sequence_unittest.cc16
-rw-r--r--chromium/ui/compositor/test_web_graphics_context_3d.cc220
-rw-r--r--chromium/ui/compositor/test_web_graphics_context_3d.h450
10 files changed, 874 insertions, 49 deletions
diff --git a/chromium/ui/compositor/compositor.cc b/chromium/ui/compositor/compositor.cc
index 88cfc563717..f16e56bf827 100644
--- a/chromium/ui/compositor/compositor.cc
+++ b/chromium/ui/compositor/compositor.cc
@@ -16,8 +16,6 @@
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h"
#include "cc/base/switches.h"
-#include "cc/debug/test_context_provider.h"
-#include "cc/debug/test_web_graphics_context_3d.h"
#include "cc/input/input_handler.h"
#include "cc/layers/layer.h"
#include "cc/output/context_provider.h"
@@ -26,14 +24,15 @@
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/compositor/compositor_observer.h"
#include "ui/compositor/compositor_switches.h"
+#include "ui/compositor/context_provider_from_context_factory.h"
#include "ui/compositor/dip_util.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/reflector.h"
+#include "ui/compositor/test_web_graphics_context_3d.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_surface.h"
#include "ui/gl/gl_switches.h"
-#include "webkit/common/gpu/context_provider_in_process.h"
#include "webkit/common/gpu/grcontext_for_webgraphicscontext3d.h"
#include "webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h"
@@ -109,17 +108,13 @@ bool DefaultContextFactory::Initialize() {
scoped_ptr<cc::OutputSurface> DefaultContextFactory::CreateOutputSurface(
Compositor* compositor) {
- WebKit::WebGraphicsContext3D::Attributes attrs;
- attrs.depth = false;
- attrs.stencil = false;
- attrs.antialias = false;
- attrs.shareResources = true;
+ return make_scoped_ptr(new cc::OutputSurface(
+ CreateContextCommon(compositor, false)));
+}
- using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl;
- scoped_ptr<WebKit::WebGraphicsContext3D> context(
- WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext(
- attrs, compositor->widget()));
- return make_scoped_ptr(new cc::OutputSurface(context.Pass()));
+scoped_ptr<WebKit::WebGraphicsContext3D>
+DefaultContextFactory::CreateOffscreenContext() {
+ return CreateContextCommon(NULL, true);
}
scoped_refptr<Reflector> DefaultContextFactory::CreateReflector(
@@ -137,7 +132,7 @@ DefaultContextFactory::OffscreenContextProviderForMainThread() {
if (!offscreen_contexts_main_thread_.get() ||
!offscreen_contexts_main_thread_->DestroyedOnMainThread()) {
offscreen_contexts_main_thread_ =
- webkit::gpu::ContextProviderInProcess::CreateOffscreen();
+ ContextProviderFromContextFactory::CreateForOffscreen(this);
if (offscreen_contexts_main_thread_.get() &&
!offscreen_contexts_main_thread_->BindToCurrentThread())
offscreen_contexts_main_thread_ = NULL;
@@ -150,7 +145,7 @@ DefaultContextFactory::OffscreenContextProviderForCompositorThread() {
if (!offscreen_contexts_compositor_thread_.get() ||
!offscreen_contexts_compositor_thread_->DestroyedOnMainThread()) {
offscreen_contexts_compositor_thread_ =
- webkit::gpu::ContextProviderInProcess::CreateOffscreen();
+ ContextProviderFromContextFactory::CreateForOffscreen(this);
}
return offscreen_contexts_compositor_thread_;
}
@@ -160,15 +155,39 @@ void DefaultContextFactory::RemoveCompositor(Compositor* compositor) {
bool DefaultContextFactory::DoesCreateTestContexts() { return false; }
+scoped_ptr<WebKit::WebGraphicsContext3D>
+DefaultContextFactory::CreateContextCommon(Compositor* compositor,
+ bool offscreen) {
+ DCHECK(offscreen || compositor);
+ WebKit::WebGraphicsContext3D::Attributes attrs;
+ attrs.depth = false;
+ attrs.stencil = false;
+ attrs.antialias = false;
+ attrs.shareResources = true;
+ using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl;
+ if (offscreen) {
+ return WebGraphicsContext3DInProcessCommandBufferImpl::
+ CreateOffscreenContext(attrs);
+ }
+ return WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext(
+ attrs, compositor->widget());
+}
+
TestContextFactory::TestContextFactory() {}
TestContextFactory::~TestContextFactory() {}
scoped_ptr<cc::OutputSurface> TestContextFactory::CreateOutputSurface(
Compositor* compositor) {
- scoped_ptr<WebKit::WebGraphicsContext3D> context(
- cc::TestWebGraphicsContext3D::Create());
- return make_scoped_ptr(new cc::OutputSurface(context.Pass()));
+ return make_scoped_ptr(new cc::OutputSurface(CreateOffscreenContext()));
+}
+
+scoped_ptr<WebKit::WebGraphicsContext3D>
+TestContextFactory::CreateOffscreenContext() {
+ scoped_ptr<ui::TestWebGraphicsContext3D> context(
+ new ui::TestWebGraphicsContext3D);
+ context->Initialize();
+ return context.PassAs<WebKit::WebGraphicsContext3D>();
}
scoped_refptr<Reflector> TestContextFactory::CreateReflector(
@@ -184,7 +203,8 @@ scoped_refptr<cc::ContextProvider>
TestContextFactory::OffscreenContextProviderForMainThread() {
if (!offscreen_contexts_main_thread_.get() ||
offscreen_contexts_main_thread_->DestroyedOnMainThread()) {
- offscreen_contexts_main_thread_ = cc::TestContextProvider::Create();
+ offscreen_contexts_main_thread_ =
+ ContextProviderFromContextFactory::CreateForOffscreen(this);
CHECK(offscreen_contexts_main_thread_->BindToCurrentThread());
}
return offscreen_contexts_main_thread_;
@@ -194,7 +214,8 @@ scoped_refptr<cc::ContextProvider>
TestContextFactory::OffscreenContextProviderForCompositorThread() {
if (!offscreen_contexts_compositor_thread_.get() ||
offscreen_contexts_compositor_thread_->DestroyedOnMainThread()) {
- offscreen_contexts_compositor_thread_ = cc::TestContextProvider::Create();
+ offscreen_contexts_compositor_thread_ =
+ ContextProviderFromContextFactory::CreateForOffscreen(this);
}
return offscreen_contexts_compositor_thread_;
}
@@ -479,7 +500,18 @@ void Compositor::Initialize() {
#endif
if (use_thread) {
g_compositor_thread = new base::Thread("Browser Compositor");
+#if defined(OS_POSIX)
+ // Workaround for crbug.com/293736
+ // On Posix, MessagePumpDefault uses system time, so delayed tasks (for
+ // compositor scheduling) work incorrectly across system time changes (e.g.
+ // tlsdate). So instead, use an IO loop, which uses libevent, that uses
+ // monotonic time (immune to these problems).
+ base::Thread::Options options;
+ options.message_loop_type = base::MessageLoop::TYPE_IO;
+ g_compositor_thread->StartWithOptions(options);
+#else
g_compositor_thread->Start();
+#endif
}
DCHECK(!g_compositor_initialized) << "Compositor initialized twice.";
diff --git a/chromium/ui/compositor/compositor.gyp b/chromium/ui/compositor/compositor.gyp
index 83d197131fa..57a4aafae21 100644
--- a/chromium/ui/compositor/compositor.gyp
+++ b/chromium/ui/compositor/compositor.gyp
@@ -30,6 +30,8 @@
'compositor_observer.h',
'compositor_switches.cc',
'compositor_switches.h',
+ 'context_provider_from_context_factory.cc',
+ 'context_provider_from_context_factory.h',
'debug_utils.cc',
'debug_utils.h',
'dip_util.cc',
@@ -56,6 +58,9 @@
'scoped_animation_duration_scale_mode.h',
'scoped_layer_animation_settings.cc',
'scoped_layer_animation_settings.h',
+ # UI tests need TestWebGraphicsContext3D, so we always build it.
+ 'test_web_graphics_context_3d.cc',
+ 'test_web_graphics_context_3d.h',
'transform_animation_curve_adapter.cc',
'transform_animation_curve_adapter.h',
],
diff --git a/chromium/ui/compositor/compositor.h b/chromium/ui/compositor/compositor.h
index bc97dbafd6a..92cdd7194f8 100644
--- a/chromium/ui/compositor/compositor.h
+++ b/chromium/ui/compositor/compositor.h
@@ -34,7 +34,6 @@ class ContextProvider;
class Layer;
class LayerTreeDebugState;
class LayerTreeHost;
-class TestContextProvider;
}
namespace gfx {
@@ -50,12 +49,6 @@ namespace WebKit {
class WebGraphicsContext3D;
}
-namespace webkit {
-namespace gpu {
-class ContextProviderInProcess;
-}
-}
-
namespace ui {
class Compositor;
@@ -87,6 +80,10 @@ class COMPOSITOR_EXPORT ContextFactory {
virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(
Compositor* compositor) = 0;
+ // Creates a context used for offscreen rendering. This context can be shared
+ // with all compositors.
+ virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() = 0;
+
// Creates a reflector that copies the content of the |mirrored_compositor|
// onto |mirroing_layer|.
virtual scoped_refptr<Reflector> CreateReflector(
@@ -117,6 +114,8 @@ class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory {
// ContextFactory implementation
virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(
Compositor* compositor) OVERRIDE;
+ virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext()
+ OVERRIDE;
virtual scoped_refptr<Reflector> CreateReflector(
Compositor* compositor,
@@ -133,9 +132,13 @@ class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory {
bool Initialize();
private:
- scoped_refptr<webkit::gpu::ContextProviderInProcess>
+ scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon(
+ Compositor* compositor,
+ bool offscreen);
+
+ scoped_refptr<ContextProviderFromContextFactory>
offscreen_contexts_main_thread_;
- scoped_refptr<webkit::gpu::ContextProviderInProcess>
+ scoped_refptr<ContextProviderFromContextFactory>
offscreen_contexts_compositor_thread_;
DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory);
@@ -150,6 +153,8 @@ class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory {
// ContextFactory implementation
virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(
Compositor* compositor) OVERRIDE;
+ virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext()
+ OVERRIDE;
virtual scoped_refptr<Reflector> CreateReflector(
Compositor* mirrored_compositor,
@@ -164,8 +169,10 @@ class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory {
virtual bool DoesCreateTestContexts() OVERRIDE;
private:
- scoped_refptr<cc::TestContextProvider> offscreen_contexts_main_thread_;
- scoped_refptr<cc::TestContextProvider> offscreen_contexts_compositor_thread_;
+ scoped_refptr<ContextProviderFromContextFactory>
+ offscreen_contexts_main_thread_;
+ scoped_refptr<ContextProviderFromContextFactory>
+ offscreen_contexts_compositor_thread_;
DISALLOW_COPY_AND_ASSIGN(TestContextFactory);
};
diff --git a/chromium/ui/compositor/context_provider_from_context_factory.cc b/chromium/ui/compositor/context_provider_from_context_factory.cc
new file mode 100644
index 00000000000..262998a886a
--- /dev/null
+++ b/chromium/ui/compositor/context_provider_from_context_factory.cc
@@ -0,0 +1,76 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "context_provider_from_context_factory.h"
+
+#include "base/logging.h"
+
+namespace ui {
+
+// static
+scoped_refptr<ContextProviderFromContextFactory>
+ContextProviderFromContextFactory::CreateForOffscreen(ContextFactory* factory) {
+ scoped_refptr<ContextProviderFromContextFactory> provider =
+ new ContextProviderFromContextFactory(factory);
+ if (!provider->InitializeOnMainThread())
+ return NULL;
+ return provider;
+}
+
+ContextProviderFromContextFactory::ContextProviderFromContextFactory(
+ ContextFactory* factory)
+ : factory_(factory),
+ destroyed_(false) {
+}
+
+ContextProviderFromContextFactory::~ContextProviderFromContextFactory() {
+}
+
+bool ContextProviderFromContextFactory::BindToCurrentThread() {
+ DCHECK(context3d_);
+ return context3d_->makeContextCurrent();
+}
+
+WebKit::WebGraphicsContext3D* ContextProviderFromContextFactory::Context3d() {
+ DCHECK(context3d_);
+ return context3d_.get();
+}
+
+class GrContext* ContextProviderFromContextFactory::GrContext() {
+ DCHECK(context3d_);
+
+ if (!gr_context_) {
+ gr_context_.reset(
+ new webkit::gpu::GrContextForWebGraphicsContext3D(context3d_.get()));
+ }
+ return gr_context_->get();
+}
+
+void ContextProviderFromContextFactory::VerifyContexts() {
+ DCHECK(context3d_);
+
+ if (context3d_->isContextLost()) {
+ base::AutoLock lock(destroyed_lock_);
+ destroyed_ = true;
+ }
+}
+
+bool ContextProviderFromContextFactory::DestroyedOnMainThread() {
+ base::AutoLock lock(destroyed_lock_);
+ return destroyed_;
+}
+
+void ContextProviderFromContextFactory::SetLostContextCallback(
+ const LostContextCallback& cb) {
+ NOTIMPLEMENTED();
+}
+
+bool ContextProviderFromContextFactory::InitializeOnMainThread() {
+ if (context3d_)
+ return true;
+ context3d_ = factory_->CreateOffscreenContext();
+ return !!context3d_;
+}
+
+} // namespace ui
diff --git a/chromium/ui/compositor/context_provider_from_context_factory.h b/chromium/ui/compositor/context_provider_from_context_factory.h
new file mode 100644
index 00000000000..57be7f47efd
--- /dev/null
+++ b/chromium/ui/compositor/context_provider_from_context_factory.h
@@ -0,0 +1,45 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_COMPOSITOR_CONTEXT_PROVIDER_FROM_CONTEXT_FACTORY_H_
+#define UI_COMPOSITOR_CONTEXT_PROVIDER_FROM_CONTEXT_FACTORY_H_
+
+#include "base/synchronization/lock.h"
+#include "cc/output/context_provider.h"
+#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
+#include "ui/compositor/compositor.h"
+#include "webkit/common/gpu/grcontext_for_webgraphicscontext3d.h"
+
+namespace ui {
+
+class ContextProviderFromContextFactory
+ : public cc::ContextProvider {
+ public:
+ static scoped_refptr<ContextProviderFromContextFactory> CreateForOffscreen(
+ ContextFactory* factory);
+
+ virtual bool BindToCurrentThread() OVERRIDE;
+ virtual WebKit::WebGraphicsContext3D* Context3d() OVERRIDE;
+ virtual class GrContext* GrContext() OVERRIDE;
+ virtual void VerifyContexts() OVERRIDE;
+ virtual bool DestroyedOnMainThread() OVERRIDE;
+ virtual void SetLostContextCallback(const LostContextCallback& cb) OVERRIDE;
+
+ protected:
+ ContextProviderFromContextFactory(ContextFactory* factory);
+ virtual ~ContextProviderFromContextFactory();
+
+ bool InitializeOnMainThread();
+
+ private:
+ ContextFactory* factory_;
+ base::Lock destroyed_lock_;
+ bool destroyed_;
+ scoped_ptr<WebKit::WebGraphicsContext3D> context3d_;
+ scoped_ptr<webkit::gpu::GrContextForWebGraphicsContext3D> gr_context_;
+};
+
+} // namespace ui
+
+#endif // UI_COMPOSITOR_CONTEXT_PROVIDER_FROM_CONTEXT_FACTORY_H_
diff --git a/chromium/ui/compositor/layer_animation_sequence.cc b/chromium/ui/compositor/layer_animation_sequence.cc
index f1c7eba6932..371e5409219 100644
--- a/chromium/ui/compositor/layer_animation_sequence.cc
+++ b/chromium/ui/compositor/layer_animation_sequence.cc
@@ -8,7 +8,6 @@
#include <iterator>
#include "base/debug/trace_event.h"
-#include "cc/animation/animation_id_provider.h"
#include "ui/compositor/layer_animation_delegate.h"
#include "ui/compositor/layer_animation_element.h"
#include "ui/compositor/layer_animation_observer.h"
@@ -77,10 +76,8 @@ void LayerAnimationSequence::Progress(base::TimeTicks now,
}
if (is_cyclic_ || last_element_ < elements_.size()) {
- if (!elements_[current_index]->Started()) {
- animation_group_id_ = cc::AnimationIdProvider::NextGroupId();
+ if (!elements_[current_index]->Started())
elements_[current_index]->Start(delegate, animation_group_id_);
- }
if (elements_[current_index]->Progress(now, delegate))
redraw_required = true;
last_progressed_fraction_ =
diff --git a/chromium/ui/compositor/layer_animation_sequence.h b/chromium/ui/compositor/layer_animation_sequence.h
index a2972f72be8..838c6b98841 100644
--- a/chromium/ui/compositor/layer_animation_sequence.h
+++ b/chromium/ui/compositor/layer_animation_sequence.h
@@ -102,8 +102,6 @@ class COMPOSITOR_EXPORT LayerAnimationSequence
bool IsFirstElementThreaded() const;
// Used to identify groups of sequences that are supposed to start together.
- // Once started, used to identify the sequence that owns a particular
- // threaded animation.
int animation_group_id() const { return animation_group_id_; }
void set_animation_group_id(int id) { animation_group_id_ = id; }
@@ -166,9 +164,6 @@ class COMPOSITOR_EXPORT LayerAnimationSequence
bool waiting_for_group_start_;
// Identifies groups of sequences that are supposed to start together.
- // Also used to identify the owner of a particular threaded animation; any
- // in-progress threaded animation owned by this sequence will have this
- // group id.
int animation_group_id_;
// These parties are notified when layer animations end.
diff --git a/chromium/ui/compositor/layer_animation_sequence_unittest.cc b/chromium/ui/compositor/layer_animation_sequence_unittest.cc
index 3b4591762b0..fe70601f15d 100644
--- a/chromium/ui/compositor/layer_animation_sequence_unittest.cc
+++ b/chromium/ui/compositor/layer_animation_sequence_unittest.cc
@@ -82,8 +82,8 @@ TEST(LayerAnimationSequenceTest, SingleThreadedElement) {
LayerAnimationElement::CreateOpacityElement(target, delta));
for (int i = 0; i < 2; ++i) {
- int starting_group_id = 1;
- sequence.set_animation_group_id(starting_group_id);
+ int group_id = 1;
+ sequence.set_animation_group_id(group_id);
start_time = effective_start + delta;
sequence.set_start_time(start_time);
delegate.SetOpacityFromAnimation(start);
@@ -94,7 +94,7 @@ TEST(LayerAnimationSequenceTest, SingleThreadedElement) {
sequence.OnThreadedAnimationStarted(cc::AnimationEvent(
cc::AnimationEvent::Started,
0,
- sequence.animation_group_id(),
+ group_id,
cc::Animation::Opacity,
(effective_start - base::TimeTicks()).InSecondsF()));
sequence.Progress(effective_start + delta/2, &delegate);
@@ -139,8 +139,8 @@ TEST(LayerAnimationSequenceTest, MultipleElement) {
LayerAnimationElement::CreateTransformElement(target_transform, delta));
for (int i = 0; i < 2; ++i) {
- int starting_group_id = 1;
- sequence.set_animation_group_id(starting_group_id);
+ int group_id = 1;
+ sequence.set_animation_group_id(group_id);
start_time = opacity_effective_start + 4 * delta;
sequence.set_start_time(start_time);
delegate.SetOpacityFromAnimation(start_opacity);
@@ -150,11 +150,10 @@ TEST(LayerAnimationSequenceTest, MultipleElement) {
sequence.Progress(start_time, &delegate);
EXPECT_FLOAT_EQ(0.0, sequence.last_progressed_fraction());
opacity_effective_start = start_time + delta;
- EXPECT_EQ(starting_group_id, sequence.animation_group_id());
sequence.OnThreadedAnimationStarted(cc::AnimationEvent(
cc::AnimationEvent::Started,
0,
- sequence.animation_group_id(),
+ group_id,
cc::Animation::Opacity,
(opacity_effective_start - base::TimeTicks()).InSecondsF()));
sequence.Progress(opacity_effective_start + delta/2, &delegate);
@@ -181,11 +180,10 @@ TEST(LayerAnimationSequenceTest, MultipleElement) {
delegate.GetTransformForAnimation());
EXPECT_FLOAT_EQ(0.0, sequence.last_progressed_fraction());
transform_effective_start = opacity_effective_start + 3 * delta;
- EXPECT_NE(starting_group_id, sequence.animation_group_id());
sequence.OnThreadedAnimationStarted(cc::AnimationEvent(
cc::AnimationEvent::Started,
0,
- sequence.animation_group_id(),
+ group_id,
cc::Animation::Transform,
(transform_effective_start - base::TimeTicks()).InSecondsF()));
sequence.Progress(transform_effective_start + delta/2, &delegate);
diff --git a/chromium/ui/compositor/test_web_graphics_context_3d.cc b/chromium/ui/compositor/test_web_graphics_context_3d.cc
new file mode 100644
index 00000000000..d8febc9ca08
--- /dev/null
+++ b/chromium/ui/compositor/test_web_graphics_context_3d.cc
@@ -0,0 +1,220 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/compositor/test_web_graphics_context_3d.h"
+
+#include "ui/gl/gl_bindings.h"
+#include "ui/gl/gl_context_stub.h"
+#include "ui/gl/gl_surface_stub.h"
+
+namespace ui {
+
+TestWebGraphicsContext3D::TestWebGraphicsContext3D()
+ : next_texture_id_(1) {}
+
+TestWebGraphicsContext3D::~TestWebGraphicsContext3D() {}
+
+void TestWebGraphicsContext3D::Initialize() {
+ gl_surface_ = new gfx::GLSurfaceStub;
+ gl_context_ = new gfx::GLContextStub;
+ gl_context_->MakeCurrent(gl_surface_.get());
+}
+
+bool TestWebGraphicsContext3D::makeContextCurrent() {
+ return true;
+}
+
+int TestWebGraphicsContext3D::width() {
+ return 0;
+}
+
+int TestWebGraphicsContext3D::height() {
+ return 0;
+}
+
+bool TestWebGraphicsContext3D::isContextLost() {
+ return false;
+}
+
+void* TestWebGraphicsContext3D::mapBufferSubDataCHROMIUM(
+ WebKit::WGC3Denum target,
+ WebKit::WGC3Dintptr offset,
+ WebKit::WGC3Dsizeiptr size,
+ WebKit::WGC3Denum access) {
+ return 0;
+}
+
+void* TestWebGraphicsContext3D::mapTexSubImage2DCHROMIUM(
+ WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Dint xoffset,
+ WebKit::WGC3Dint yoffset,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Denum format,
+ WebKit::WGC3Denum type,
+ WebKit::WGC3Denum access) {
+ return 0;
+}
+
+WebKit::WebString TestWebGraphicsContext3D::getRequestableExtensionsCHROMIUM() {
+ return WebKit::WebString();
+}
+
+WebKit::WGC3Denum TestWebGraphicsContext3D::checkFramebufferStatus(
+ WebKit::WGC3Denum target) {
+ return GL_FRAMEBUFFER_COMPLETE;
+}
+
+bool TestWebGraphicsContext3D::getActiveAttrib(WebKit::WebGLId program,
+ WebKit::WGC3Duint index,
+ ActiveInfo& info) {
+ return false;
+}
+
+bool TestWebGraphicsContext3D::getActiveUniform(WebKit::WebGLId program,
+ WebKit::WGC3Duint index,
+ ActiveInfo& info) {
+ return false;
+}
+
+WebKit::WGC3Dint TestWebGraphicsContext3D::getAttribLocation(
+ WebKit::WebGLId program,
+ const WebKit::WGC3Dchar* name) {
+ return 0;
+}
+
+TestWebGraphicsContext3D::Attributes
+TestWebGraphicsContext3D::getContextAttributes() {
+ return Attributes();
+}
+
+WebKit::WGC3Denum TestWebGraphicsContext3D::getError() {
+ return 0;
+}
+
+void TestWebGraphicsContext3D::getIntegerv(WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {
+ if (pname == GL_MAX_TEXTURE_SIZE)
+ *value = 1024;
+ else if (pname == GL_ACTIVE_TEXTURE)
+ *value = GL_TEXTURE0;
+}
+
+void TestWebGraphicsContext3D::getProgramiv(WebKit::WebGLId program,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {
+ if (pname == GL_LINK_STATUS)
+ *value = 1;
+}
+
+WebKit::WebString TestWebGraphicsContext3D::getProgramInfoLog(
+ WebKit::WebGLId program) {
+ return WebKit::WebString();
+}
+
+void TestWebGraphicsContext3D::getShaderiv(WebKit::WebGLId shader,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {
+ if (pname == GL_COMPILE_STATUS)
+ *value = 1;
+}
+
+WebKit::WebString TestWebGraphicsContext3D::getShaderInfoLog(
+ WebKit::WebGLId shader) {
+ return WebKit::WebString();
+}
+
+WebKit::WebString TestWebGraphicsContext3D::getShaderSource(
+ WebKit::WebGLId shader) {
+ return WebKit::WebString();
+}
+
+WebKit::WebString TestWebGraphicsContext3D::getString(WebKit::WGC3Denum name) {
+ return WebKit::WebString();
+}
+
+WebKit::WGC3Dint TestWebGraphicsContext3D::getUniformLocation(
+ WebKit::WebGLId program,
+ const WebKit::WGC3Dchar* name) {
+ return 0;
+}
+
+WebKit::WGC3Dsizeiptr TestWebGraphicsContext3D::getVertexAttribOffset(
+ WebKit::WGC3Duint index,
+ WebKit::WGC3Denum pname) {
+ return 0;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isBuffer(
+ WebKit::WebGLId buffer) {
+ return false;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isEnabled(
+ WebKit::WGC3Denum cap) {
+ return false;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isFramebuffer(
+ WebKit::WebGLId framebuffer) {
+ return false;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isProgram(
+ WebKit::WebGLId program) {
+ return false;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isRenderbuffer(
+ WebKit::WebGLId renderbuffer) {
+ return false;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isShader(
+ WebKit::WebGLId shader) {
+ return false;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isTexture(
+ WebKit::WebGLId texture) {
+ return false;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createBuffer() {
+ return 1;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createFramebuffer() {
+ return 1;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createProgram() {
+ return 1;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createRenderbuffer() {
+ return 1;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createShader(
+ WebKit::WGC3Denum value) {
+ return 1;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createTexture() {
+ return next_texture_id_++;
+}
+
+WebKit::WebGLId TestWebGraphicsContext3D::createQueryEXT()
+{
+ return 1;
+}
+
+WebKit::WGC3Dboolean TestWebGraphicsContext3D::isQueryEXT(WebKit::WebGLId)
+{
+ return true;
+}
+
+} // namespace ui
diff --git a/chromium/ui/compositor/test_web_graphics_context_3d.h b/chromium/ui/compositor/test_web_graphics_context_3d.h
new file mode 100644
index 00000000000..f7a96220a47
--- /dev/null
+++ b/chromium/ui/compositor/test_web_graphics_context_3d.h
@@ -0,0 +1,450 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_COMPOSITOR_TEST_WEB_GRAPHICS_CONTEXT_3D_H_
+#define UI_COMPOSITOR_TEST_WEB_GRAPHICS_CONTEXT_3D_H_
+
+#include "base/logging.h"
+#include "base/memory/ref_counted.h"
+#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
+#include "third_party/WebKit/public/platform/WebString.h"
+#include "ui/compositor/compositor_export.h"
+
+namespace gfx {
+class GLContext;
+class GLSurface;
+}
+
+namespace ui {
+
+// WebGraphicsContext3D that does nothing. Suitable for testing.
+class COMPOSITOR_EXPORT TestWebGraphicsContext3D :
+ public NON_EXPORTED_BASE(WebKit::WebGraphicsContext3D) {
+ public:
+ TestWebGraphicsContext3D();
+ virtual ~TestWebGraphicsContext3D();
+
+ void Initialize();
+ virtual bool makeContextCurrent();
+ virtual int width();
+ virtual int height();
+ virtual void reshape(int width, int height) {}
+ virtual void prepareTexture() {}
+ virtual void postSubBufferCHROMIUM(int x, int y, int width, int height) {}
+ virtual void synthesizeGLError(WebKit::WGC3Denum value) {}
+ virtual bool isContextLost();
+ virtual void* mapBufferSubDataCHROMIUM(WebKit::WGC3Denum target,
+ WebKit::WGC3Dintptr offset,
+ WebKit::WGC3Dsizeiptr size,
+ WebKit::WGC3Denum access);
+ virtual void unmapBufferSubDataCHROMIUM(const void* data) {}
+ virtual void* mapTexSubImage2DCHROMIUM(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Dint xoffset,
+ WebKit::WGC3Dint yoffset,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Denum format,
+ WebKit::WGC3Denum type,
+ WebKit::WGC3Denum access);
+ virtual void unmapTexSubImage2DCHROMIUM(const void* data) {}
+ virtual void setVisibilityCHROMIUM(bool visible) {}
+ virtual void discardFramebufferEXT(WebKit::WGC3Denum target,
+ WebKit::WGC3Dsizei numAttachments,
+ const WebKit::WGC3Denum* attachments) {}
+ virtual void setMemoryAllocationChangedCallbackCHROMIUM(
+ WebGraphicsMemoryAllocationChangedCallbackCHROMIUM*) { }
+ virtual WebKit::WebString getRequestableExtensionsCHROMIUM();
+ virtual void requestExtensionCHROMIUM(const char*) {}
+ virtual void blitFramebufferCHROMIUM(WebKit::WGC3Dint src_x0,
+ WebKit::WGC3Dint src_y0,
+ WebKit::WGC3Dint src_x1,
+ WebKit::WGC3Dint src_y1,
+ WebKit::WGC3Dint dst_x0,
+ WebKit::WGC3Dint dst_y0,
+ WebKit::WGC3Dint dst_x1,
+ WebKit::WGC3Dint dst_y1,
+ WebKit::WGC3Dbitfield mask,
+ WebKit::WGC3Denum filter) {}
+ virtual void renderbufferStorageMultisampleCHROMIUM(
+ WebKit::WGC3Denum target,
+ WebKit::WGC3Dsizei samples,
+ WebKit::WGC3Denum internalformat,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height) {}
+ virtual void activeTexture(WebKit::WGC3Denum texture) {}
+ virtual void attachShader(WebKit::WebGLId program, WebKit::WebGLId shader) {}
+ virtual void bindAttribLocation(WebKit::WebGLId program,
+ WebKit::WGC3Duint index,
+ const WebKit::WGC3Dchar* name) {}
+ virtual void bindBuffer(WebKit::WGC3Denum target, WebKit::WebGLId buffer) {}
+ virtual void bindFramebuffer(WebKit::WGC3Denum target,
+ WebKit::WebGLId framebuffer) {}
+ virtual void bindRenderbuffer(WebKit::WGC3Denum target,
+ WebKit::WebGLId renderbuffer) {}
+ virtual void bindTexture(WebKit::WGC3Denum target, WebKit::WebGLId texture) {}
+ virtual void blendColor(WebKit::WGC3Dclampf red,
+ WebKit::WGC3Dclampf green,
+ WebKit::WGC3Dclampf blue,
+ WebKit::WGC3Dclampf alpha) {}
+ virtual void blendEquation(WebKit::WGC3Denum mode) {}
+ virtual void blendEquationSeparate(WebKit::WGC3Denum modeRGB,
+ WebKit::WGC3Denum modeAlpha) {}
+ virtual void blendFunc(WebKit::WGC3Denum sfactor,
+ WebKit::WGC3Denum dfactor) {}
+ virtual void blendFuncSeparate(WebKit::WGC3Denum src_rgb,
+ WebKit::WGC3Denum dst_rgb,
+ WebKit::WGC3Denum src_alpha,
+ WebKit::WGC3Denum dst_alpha) {}
+ virtual void bufferData(WebKit::WGC3Denum target,
+ WebKit::WGC3Dsizeiptr size,
+ const void* data,
+ WebKit::WGC3Denum usage) {}
+ virtual void bufferSubData(WebKit::WGC3Denum target,
+ WebKit::WGC3Dintptr offset,
+ WebKit::WGC3Dsizeiptr size,
+ const void* data) {}
+ virtual WebKit::WGC3Denum checkFramebufferStatus(WebKit::WGC3Denum target);
+ virtual void clear(WebKit::WGC3Dbitfield mask) {}
+ virtual void clearColor(WebKit::WGC3Dclampf red,
+ WebKit::WGC3Dclampf green,
+ WebKit::WGC3Dclampf blue,
+ WebKit::WGC3Dclampf alpha) {}
+ virtual void clearDepth(WebKit::WGC3Dclampf depth) {}
+ virtual void clearStencil(WebKit::WGC3Dint s) {}
+ virtual void colorMask(WebKit::WGC3Dboolean red,
+ WebKit::WGC3Dboolean green,
+ WebKit::WGC3Dboolean blue,
+ WebKit::WGC3Dboolean alpha) {}
+ virtual void compileShader(WebKit::WebGLId shader) {}
+ virtual void compressedTexImage2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Denum internalformat,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Dint border,
+ WebKit::WGC3Dsizei imageSize,
+ const void* data) {}
+ virtual void compressedTexSubImage2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Dint xoffset,
+ WebKit::WGC3Dint yoffset,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Denum format,
+ WebKit::WGC3Dsizei imageSize,
+ const void* data) {}
+ virtual void copyTexImage2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Denum internal_format,
+ WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Dint border) {}
+ virtual void copyTexSubImage2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Dint xoffset,
+ WebKit::WGC3Dint yoffset,
+ WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height) {}
+ virtual void cullFace(WebKit::WGC3Denum mode) {}
+ virtual void depthFunc(WebKit::WGC3Denum func) {}
+ virtual void depthMask(WebKit::WGC3Dboolean flag) {}
+ virtual void depthRange(WebKit::WGC3Dclampf z_near,
+ WebKit::WGC3Dclampf z_far) {}
+ virtual void detachShader(WebKit::WebGLId program, WebKit::WebGLId shader) {}
+ virtual void disable(WebKit::WGC3Denum cap) {}
+ virtual void disableVertexAttribArray(WebKit::WGC3Duint index) {}
+ virtual void drawArrays(WebKit::WGC3Denum mode, WebKit::WGC3Dint first,
+ WebKit::WGC3Dsizei count) {}
+ virtual void drawElements(WebKit::WGC3Denum mode,
+ WebKit::WGC3Dsizei count,
+ WebKit::WGC3Denum type,
+ WebKit::WGC3Dintptr offset) {}
+ virtual void enable(WebKit::WGC3Denum cap) {}
+ virtual void enableVertexAttribArray(WebKit::WGC3Duint index) {}
+ virtual void finish() {}
+ virtual void flush() {}
+ virtual void framebufferRenderbuffer(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum attachment,
+ WebKit::WGC3Denum renderbuffertarget,
+ WebKit::WebGLId renderbuffer) {}
+ virtual void framebufferTexture2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum attachment,
+ WebKit::WGC3Denum textarget,
+ WebKit::WebGLId texture,
+ WebKit::WGC3Dint level) {}
+ virtual void frontFace(WebKit::WGC3Denum mode) {}
+ virtual void generateMipmap(WebKit::WGC3Denum target) {}
+ virtual bool getActiveAttrib(WebKit::WebGLId program,
+ WebKit::WGC3Duint index,
+ ActiveInfo& info);
+ virtual bool getActiveUniform(WebKit::WebGLId program,
+ WebKit::WGC3Duint index,
+ ActiveInfo& info);
+ virtual void getAttachedShaders(WebKit::WebGLId program,
+ WebKit::WGC3Dsizei maxCount,
+ WebKit::WGC3Dsizei* count,
+ WebKit::WebGLId* shaders) {}
+ virtual WebKit::WGC3Dint getAttribLocation(WebKit::WebGLId program,
+ const WebKit::WGC3Dchar* name);
+ virtual void getBooleanv(WebKit::WGC3Denum pname,
+ WebKit::WGC3Dboolean* value) {}
+ virtual void getBufferParameteriv(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {}
+ virtual Attributes getContextAttributes();
+ virtual WebKit::WGC3Denum getError();
+ virtual void getFloatv(WebKit::WGC3Denum pname, WebKit::WGC3Dfloat* value) {}
+ virtual void getFramebufferAttachmentParameteriv(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum attachment,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {}
+ virtual void getIntegerv(WebKit::WGC3Denum pname, WebKit::WGC3Dint* value);
+ virtual void getProgramiv(WebKit::WebGLId program,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value);
+ virtual WebKit::WebString getProgramInfoLog(WebKit::WebGLId program);
+ virtual void getRenderbufferParameteriv(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {}
+ virtual void getShaderiv(WebKit::WebGLId shader,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value);
+ virtual WebKit::WebString getShaderInfoLog(WebKit::WebGLId shader);
+ virtual void getShaderPrecisionFormat(WebKit::WGC3Denum shaderType,
+ WebKit::WGC3Denum precisionType,
+ WebKit::WGC3Dint* range,
+ WebKit::WGC3Dint* precision) {}
+ virtual WebKit::WebString getShaderSource(WebKit::WebGLId shader);
+ virtual WebKit::WebString getString(WebKit::WGC3Denum name);
+ virtual void getTexParameterfv(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dfloat* value) {}
+ virtual void getTexParameteriv(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {}
+ virtual void getUniformfv(WebKit::WebGLId program,
+ WebKit::WGC3Dint location,
+ WebKit::WGC3Dfloat* value) {}
+ virtual void getUniformiv(WebKit::WebGLId program,
+ WebKit::WGC3Dint location,
+ WebKit::WGC3Dint* value) {}
+ virtual WebKit::WGC3Dint getUniformLocation(WebKit::WebGLId program,
+ const WebKit::WGC3Dchar* name);
+ virtual void getVertexAttribfv(WebKit::WGC3Duint index,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dfloat* value) {}
+ virtual void getVertexAttribiv(WebKit::WGC3Duint index,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint* value) {}
+ virtual WebKit::WGC3Dsizeiptr getVertexAttribOffset(WebKit::WGC3Duint index,
+ WebKit::WGC3Denum pname);
+ virtual void hint(WebKit::WGC3Denum target, WebKit::WGC3Denum mode) {}
+ virtual WebKit::WGC3Dboolean isBuffer(WebKit::WebGLId buffer);
+ virtual WebKit::WGC3Dboolean isEnabled(WebKit::WGC3Denum cap);
+ virtual WebKit::WGC3Dboolean isFramebuffer(WebKit::WebGLId framebuffer);
+ virtual WebKit::WGC3Dboolean isProgram(WebKit::WebGLId program);
+ virtual WebKit::WGC3Dboolean isRenderbuffer(WebKit::WebGLId renderbuffer);
+ virtual WebKit::WGC3Dboolean isShader(WebKit::WebGLId shader);
+ virtual WebKit::WGC3Dboolean isTexture(WebKit::WebGLId texture);
+ virtual void lineWidth(WebKit::WGC3Dfloat) {}
+ virtual void linkProgram(WebKit::WebGLId program) {}
+ virtual void pixelStorei(WebKit::WGC3Denum pname, WebKit::WGC3Dint param) {}
+ virtual void polygonOffset(WebKit::WGC3Dfloat factor,
+ WebKit::WGC3Dfloat units) {}
+ virtual void readPixels(WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Denum format,
+ WebKit::WGC3Denum type,
+ void* pixels) {}
+ virtual void releaseShaderCompiler() {}
+ virtual void renderbufferStorage(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum internalformat,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height) {}
+ virtual void sampleCoverage(WebKit::WGC3Dclampf value,
+ WebKit::WGC3Dboolean invert) {}
+ virtual void scissor(WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height) {}
+ virtual void shaderSource(WebKit::WebGLId shader,
+ const WebKit::WGC3Dchar* string) {}
+ virtual void stencilFunc(WebKit::WGC3Denum func,
+ WebKit::WGC3Dint ref,
+ WebKit::WGC3Duint mask) {}
+ virtual void stencilFuncSeparate(WebKit::WGC3Denum face,
+ WebKit::WGC3Denum func,
+ WebKit::WGC3Dint ref,
+ WebKit::WGC3Duint mask) {}
+ virtual void stencilMask(WebKit::WGC3Duint mask) {}
+ virtual void stencilMaskSeparate(WebKit::WGC3Denum face,
+ WebKit::WGC3Duint mask) {}
+ virtual void stencilOp(WebKit::WGC3Denum fail,
+ WebKit::WGC3Denum zfail,
+ WebKit::WGC3Denum zpass) {}
+ virtual void stencilOpSeparate(WebKit::WGC3Denum face,
+ WebKit::WGC3Denum fail,
+ WebKit::WGC3Denum zfail,
+ WebKit::WGC3Denum zpass) {}
+ virtual void texImage2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Denum internal_format,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Dint border,
+ WebKit::WGC3Denum format,
+ WebKit::WGC3Denum type,
+ const void* pixels) {}
+ virtual void texParameterf(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dfloat param) {}
+ virtual void texParameteri(WebKit::WGC3Denum target,
+ WebKit::WGC3Denum pname,
+ WebKit::WGC3Dint param) {}
+ virtual void texSubImage2D(WebKit::WGC3Denum target,
+ WebKit::WGC3Dint level,
+ WebKit::WGC3Dint xoffset,
+ WebKit::WGC3Dint yoffset,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height,
+ WebKit::WGC3Denum format,
+ WebKit::WGC3Denum type,
+ const void* pixels) {}
+ virtual void uniform1f(WebKit::WGC3Dint location, WebKit::WGC3Dfloat x) {}
+ virtual void uniform1fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dfloat* v) {}
+ virtual void uniform1i(WebKit::WGC3Dint location, WebKit::WGC3Dint x) {}
+ virtual void uniform1iv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dint* v) {}
+ virtual void uniform2f(WebKit::WGC3Dint location,
+ WebKit::WGC3Dfloat x,
+ WebKit::WGC3Dfloat y) {}
+ virtual void uniform2fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dfloat* v) {}
+ virtual void uniform2i(WebKit::WGC3Dint location,
+ WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y) {}
+ virtual void uniform2iv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dint* v) {}
+ virtual void uniform3f(WebKit::WGC3Dint location,
+ WebKit::WGC3Dfloat x,
+ WebKit::WGC3Dfloat y,
+ WebKit::WGC3Dfloat z) {}
+ virtual void uniform3fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dfloat* v) {}
+ virtual void uniform3i(WebKit::WGC3Dint location,
+ WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dint z) {}
+ virtual void uniform3iv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dint* v) {}
+ virtual void uniform4f(WebKit::WGC3Dint location,
+ WebKit::WGC3Dfloat x,
+ WebKit::WGC3Dfloat y,
+ WebKit::WGC3Dfloat z,
+ WebKit::WGC3Dfloat w) {}
+ virtual void uniform4fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dfloat* v) {}
+ virtual void uniform4i(WebKit::WGC3Dint location,
+ WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dint z,
+ WebKit::WGC3Dint w) {}
+ virtual void uniform4iv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ const WebKit::WGC3Dint* v) {}
+ virtual void uniformMatrix2fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ WebKit::WGC3Dboolean transpose,
+ const WebKit::WGC3Dfloat* value) {}
+ virtual void uniformMatrix3fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ WebKit::WGC3Dboolean transpose,
+ const WebKit::WGC3Dfloat* value) {}
+ virtual void uniformMatrix4fv(WebKit::WGC3Dint location,
+ WebKit::WGC3Dsizei count,
+ WebKit::WGC3Dboolean transpose,
+ const WebKit::WGC3Dfloat* value) {}
+ virtual void useProgram(WebKit::WebGLId program) {}
+ virtual void validateProgram(WebKit::WebGLId program) {}
+ virtual void vertexAttrib1f(WebKit::WGC3Duint index, WebKit::WGC3Dfloat x) {}
+ virtual void vertexAttrib1fv(WebKit::WGC3Duint index,
+ const WebKit::WGC3Dfloat* values) {}
+ virtual void vertexAttrib2f(WebKit::WGC3Duint index,
+ WebKit::WGC3Dfloat x,
+ WebKit::WGC3Dfloat y) {}
+ virtual void vertexAttrib2fv(WebKit::WGC3Duint index,
+ const WebKit::WGC3Dfloat* values) {}
+ virtual void vertexAttrib3f(WebKit::WGC3Duint index,
+ WebKit::WGC3Dfloat x,
+ WebKit::WGC3Dfloat y,
+ WebKit::WGC3Dfloat z) {}
+ virtual void vertexAttrib3fv(WebKit::WGC3Duint index,
+ const WebKit::WGC3Dfloat* values) {}
+ virtual void vertexAttrib4f(WebKit::WGC3Duint index,
+ WebKit::WGC3Dfloat x,
+ WebKit::WGC3Dfloat y,
+ WebKit::WGC3Dfloat z,
+ WebKit::WGC3Dfloat w) {}
+ virtual void vertexAttrib4fv(WebKit::WGC3Duint index,
+ const WebKit::WGC3Dfloat* values) {}
+ virtual void vertexAttribPointer(WebKit::WGC3Duint index,
+ WebKit::WGC3Dint size,
+ WebKit::WGC3Denum type,
+ WebKit::WGC3Dboolean normalized,
+ WebKit::WGC3Dsizei stride,
+ WebKit::WGC3Dintptr offset) {}
+ virtual void viewport(WebKit::WGC3Dint x,
+ WebKit::WGC3Dint y,
+ WebKit::WGC3Dsizei width,
+ WebKit::WGC3Dsizei height) {}
+ virtual WebKit::WebGLId createBuffer();
+ virtual WebKit::WebGLId createFramebuffer();
+ virtual WebKit::WebGLId createProgram();
+ virtual WebKit::WebGLId createRenderbuffer();
+ virtual WebKit::WebGLId createShader(WebKit::WGC3Denum value);
+ virtual WebKit::WebGLId createTexture();
+ virtual void deleteBuffer(WebKit::WebGLId) {}
+ virtual void deleteFramebuffer(WebKit::WebGLId) {}
+ virtual void deleteProgram(WebKit::WebGLId) {}
+ virtual void deleteRenderbuffer(WebKit::WebGLId) {}
+ virtual void deleteShader(WebKit::WebGLId) {}
+ virtual void deleteTexture(WebKit::WebGLId) {}
+ virtual WebKit::WebGLId createQueryEXT();
+ virtual void deleteQueryEXT(WebKit::WebGLId) {};
+ virtual WebKit::WGC3Dboolean isQueryEXT(WebKit::WebGLId query);
+ virtual void beginQueryEXT(WebKit::WGC3Denum, WebKit::WebGLId) {}
+ virtual void endQueryEXT(WebKit::WGC3Denum) {}
+ virtual void getQueryivEXT(WebKit::WGC3Denum,
+ WebKit::WGC3Denum,
+ WebKit::WGC3Dint*) {}
+ virtual void getQueryObjectuivEXT(WebKit::WebGLId,
+ WebKit::WGC3Denum,
+ WebKit::WGC3Duint*) {}
+
+ private:
+ scoped_refptr<gfx::GLContext> gl_context_;
+ scoped_refptr<gfx::GLSurface> gl_surface_;
+ unsigned next_texture_id_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestWebGraphicsContext3D);
+};
+
+} // namespace ui
+
+#endif // UI_COMPOSITOR_TEST_WEB_GRAPHICS_CONTEXT_3D_H_