Title: [106320] trunk/Source
Revision
106320
Author
[email protected]
Date
2012-01-30 19:10:49 -0800 (Mon, 30 Jan 2012)

Log Message

Add Plumming to get graphics error messages to JS Console
https://bugs.webkit.org/show_bug.cgi?id=77238

Source/WebCore:

Patch by Gregg Tavares <[email protected]> on 2012-01-30
Reviewed by Kenneth Russell.

No new tests. No change in behavior.

* html/canvas/WebGLRenderingContext.cpp:
(WebGLRenderingContextErrorMessageCallback):
(WebCore::WebGLRenderingContextErrorMessageCallback::WebGLRenderingContextErrorMessageCallback):
(WebCore::WebGLRenderingContextErrorMessageCallback::onErrorMessage):
(WebCore::WebGLRenderingContextErrorMessageCallback::~WebGLRenderingContextErrorMessageCallback):
(WebCore):
(WebCore::WebGLRenderingContext::create):
(WebCore::WebGLRenderingContext::initializeNewContext):
(WebCore::WebGLRenderingContext::~WebGLRenderingContext):
* html/canvas/WebGLRenderingContext.h:
(WebGLRenderingContext):
* platform/graphics/GraphicsContext3D.h:
(ErrorMessageCallback):
(WebCore::GraphicsContext3D::ErrorMessageCallback::~ErrorMessageCallback):
(GraphicsContext3D):
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::setErrorMessageCallback):
(WebCore):
* platform/graphics/efl/GraphicsContext3DEfl.cpp:
(WebCore::GraphicsContext3D::setErrorMessageCallback):
(WebCore):
* platform/graphics/qt/GraphicsContext3DQt.cpp:
(WebCore::GraphicsContext3D::setErrorMessageCallback):
(WebCore):

Source/WebKit/chromium:

Patch by Gregg Tavares <[email protected]> on 2012-01-30
Reviewed by Kenneth Russell.

* public/platform/WebGraphicsContext3D.h:
(WebGraphicsErrorMessageCallback):
(WebKit::WebGraphicsContext3D::WebGraphicsErrorMessageCallback::~WebGraphicsErrorMessageCallback):
(WebGraphicsContext3D):
(WebKit::WebGraphicsContext3D::setErrorMessageCallback):
* src/GraphicsContext3DChromium.cpp:
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore):
(GraphicsErrorMessageCallbackAdapter):
(WebCore::GraphicsErrorMessageCallbackAdapter::~GraphicsErrorMessageCallbackAdapter):
(WebCore::GraphicsErrorMessageCallbackAdapter::GraphicsErrorMessageCallbackAdapter):
(WebCore::GraphicsErrorMessageCallbackAdapter::onErrorMessage):
(WebCore::GraphicsErrorMessageCallbackAdapter::create):
(WebCore::GraphicsContext3DPrivate::setErrorMessageCallback):
* src/GraphicsContext3DPrivate.h:
(WebCore):
():

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (106319 => 106320)


--- trunk/Source/WebCore/ChangeLog	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/ChangeLog	2012-01-31 03:10:49 UTC (rev 106320)
@@ -1,3 +1,37 @@
+2012-01-30  Gregg Tavares  <[email protected]>
+
+        Add Plumming to get graphics error messages to JS Console
+        https://bugs.webkit.org/show_bug.cgi?id=77238
+
+        Reviewed by Kenneth Russell.
+
+        No new tests. No change in behavior.
+
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebGLRenderingContextErrorMessageCallback):
+        (WebCore::WebGLRenderingContextErrorMessageCallback::WebGLRenderingContextErrorMessageCallback):
+        (WebCore::WebGLRenderingContextErrorMessageCallback::onErrorMessage):
+        (WebCore::WebGLRenderingContextErrorMessageCallback::~WebGLRenderingContextErrorMessageCallback):
+        (WebCore):
+        (WebCore::WebGLRenderingContext::create):
+        (WebCore::WebGLRenderingContext::initializeNewContext):
+        (WebCore::WebGLRenderingContext::~WebGLRenderingContext):
+        * html/canvas/WebGLRenderingContext.h:
+        (WebGLRenderingContext):
+        * platform/graphics/GraphicsContext3D.h:
+        (ErrorMessageCallback):
+        (WebCore::GraphicsContext3D::ErrorMessageCallback::~ErrorMessageCallback):
+        (GraphicsContext3D):
+        * platform/graphics/cairo/GraphicsContext3DCairo.cpp:
+        (WebCore::GraphicsContext3D::setErrorMessageCallback):
+        (WebCore):
+        * platform/graphics/efl/GraphicsContext3DEfl.cpp:
+        (WebCore::GraphicsContext3D::setErrorMessageCallback):
+        (WebCore):
+        * platform/graphics/qt/GraphicsContext3DQt.cpp:
+        (WebCore::GraphicsContext3D::setErrorMessageCallback):
+        (WebCore):
+
 2012-01-30  Anders Carlsson  <[email protected]>
 
         Simplify RenderLayerCompositor::frameViewDidScroll

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (106319 => 106320)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp	2012-01-31 03:10:49 UTC (rev 106320)
@@ -374,6 +374,15 @@
     WebGLRenderingContext* m_context;
 };
 
+class WebGLRenderingContextErrorMessageCallback : public GraphicsContext3D::ErrorMessageCallback {
+public:
+    explicit WebGLRenderingContextErrorMessageCallback(WebGLRenderingContext* cb) : m_context(cb) { }
+    virtual void onErrorMessage(const String& message, GC3Dint) { m_context->printWarningToConsole(message); }
+    virtual ~WebGLRenderingContextErrorMessageCallback() { }
+private:
+    WebGLRenderingContext* m_context;
+};
+
 PassOwnPtr<WebGLRenderingContext> WebGLRenderingContext::create(HTMLCanvasElement* canvas, WebGLContextAttributes* attrs)
 {
     HostWindow* hostWindow = canvas->document()->view()->root()->hostWindow();
@@ -500,6 +509,7 @@
     m_context->viewport(0, 0, canvas()->width(), canvas()->height());
 
     m_context->setContextLostCallback(adoptPtr(new WebGLRenderingContextLostCallback(this)));
+    m_context->setErrorMessageCallback(adoptPtr(new WebGLRenderingContextErrorMessageCallback(this)));
 }
 
 void WebGLRenderingContext::setupFlags()
@@ -548,6 +558,7 @@
 
     detachAndRemoveAllObjects();
     m_context->setContextLostCallback(nullptr);
+    m_context->setErrorMessageCallback(nullptr);
     m_contextGroup->removeContext(this);
 }
 

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.h (106319 => 106320)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.h	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.h	2012-01-31 03:10:49 UTC (rev 106320)
@@ -322,6 +322,7 @@
     friend class OESVertexArrayObject;
     friend class WebGLDebugShaders;
     friend class WebGLCompressedTextures;
+    friend class WebGLRenderingContextErrorMessageCallback;
 
     WebGLRenderingContext(HTMLCanvasElement*, PassRefPtr<GraphicsContext3D>, GraphicsContext3D::Attributes);
     void initializeNewContext();

Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h (106319 => 106320)


--- trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h	2012-01-31 03:10:49 UTC (rev 106320)
@@ -454,7 +454,14 @@
         virtual ~ContextLostCallback() {}
     };
 
+    class ErrorMessageCallback {
+    public:
+        virtual void onErrorMessage(const String& message, GC3Dint id) = 0;
+        virtual ~ErrorMessageCallback() { }
+    };
+
     void setContextLostCallback(PassOwnPtr<ContextLostCallback>);
+    void setErrorMessageCallback(PassOwnPtr<ErrorMessageCallback>);
 
     static PassRefPtr<GraphicsContext3D> create(Attributes, HostWindow*, RenderStyle = RenderOffscreen);
     ~GraphicsContext3D();

Modified: trunk/Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp (106319 => 106320)


--- trunk/Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp	2012-01-31 03:10:49 UTC (rev 106320)
@@ -115,6 +115,10 @@
 {
 }
 
+void GraphicsContext3D::setErrorMessageCallback(PassOwnPtr<ErrorMessageCallback>)
+{
+}
+
 #if USE(ACCELERATED_COMPOSITING)
 PlatformLayer* GraphicsContext3D::platformLayer() const
 {

Modified: trunk/Source/WebCore/platform/graphics/efl/GraphicsContext3DEfl.cpp (106319 => 106320)


--- trunk/Source/WebCore/platform/graphics/efl/GraphicsContext3DEfl.cpp	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/platform/graphics/efl/GraphicsContext3DEfl.cpp	2012-01-31 03:10:49 UTC (rev 106320)
@@ -836,6 +836,11 @@
     notImplemented();
 }
 
+void GraphicsContext3D::setErrorMessageCallback(PassOwnPtr<ErrorMessageCallback>)
+{
+    notImplemented();
+}
+
 bool GraphicsContext3D::getImageData(Image* image, GC3Denum format, GC3Denum type, bool premultiplyAlpha,
                                      bool ignoreGammaAndColorProfile, Vector<uint8_t>& outputVector)
 {

Modified: trunk/Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm (106319 => 106320)


--- trunk/Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm	2012-01-31 03:10:49 UTC (rev 106320)
@@ -278,6 +278,10 @@
 {
 }
 
+void GraphicsContext3D::setErrorMessageCallback(PassOwnPtr<ErrorMessageCallback>)
+{
 }
 
+}
+
 #endif // ENABLE(WEBGL)

Modified: trunk/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp (106319 => 106320)


--- trunk/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp	2012-01-31 03:10:49 UTC (rev 106320)
@@ -1639,6 +1639,10 @@
 {
 }
 
+void GraphicsContext3D::setErrorMessageCallback(PassOwnPtr<ErrorMessageCallback>)
+{
 }
 
+}
+
 #endif // ENABLE(WEBGL)

Modified: trunk/Source/WebKit/chromium/ChangeLog (106319 => 106320)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-01-31 03:10:49 UTC (rev 106320)
@@ -1,3 +1,28 @@
+2012-01-30  Gregg Tavares  <[email protected]>
+
+        Add Plumming to get graphics error messages to JS Console
+        https://bugs.webkit.org/show_bug.cgi?id=77238
+
+        Reviewed by Kenneth Russell.
+
+        * public/platform/WebGraphicsContext3D.h:
+        (WebGraphicsErrorMessageCallback):
+        (WebKit::WebGraphicsContext3D::WebGraphicsErrorMessageCallback::~WebGraphicsErrorMessageCallback):
+        (WebGraphicsContext3D):
+        (WebKit::WebGraphicsContext3D::setErrorMessageCallback):
+        * src/GraphicsContext3DChromium.cpp:
+        (WebCore::GraphicsContext3D::~GraphicsContext3D):
+        (WebCore):
+        (GraphicsErrorMessageCallbackAdapter):
+        (WebCore::GraphicsErrorMessageCallbackAdapter::~GraphicsErrorMessageCallbackAdapter):
+        (WebCore::GraphicsErrorMessageCallbackAdapter::GraphicsErrorMessageCallbackAdapter):
+        (WebCore::GraphicsErrorMessageCallbackAdapter::onErrorMessage):
+        (WebCore::GraphicsErrorMessageCallbackAdapter::create):
+        (WebCore::GraphicsContext3DPrivate::setErrorMessageCallback):
+        * src/GraphicsContext3DPrivate.h:
+        (WebCore):
+        ():
+
 2012-01-30  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r106259.

Modified: trunk/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h (106319 => 106320)


--- trunk/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h	2012-01-31 03:10:49 UTC (rev 106320)
@@ -118,6 +118,12 @@
         virtual ~WebGraphicsContextLostCallback() { }
     };
 
+    class WebGraphicsErrorMessageCallback {
+    public:
+        virtual void onErrorMessage(const WebString&, WGC3Dint) = 0;
+        virtual ~WebGraphicsErrorMessageCallback() { }
+    };
+
     class WebGraphicsSwapBuffersCompleteCallbackCHROMIUM {
     public:
         virtual void onSwapBuffersComplete() = 0;
@@ -369,6 +375,7 @@
     virtual void deleteTexture(WebGLId) = 0;
 
     virtual void setContextLostCallback(WebGraphicsContextLostCallback* callback) {}
+    virtual void setErrorMessageCallback(WebGraphicsErrorMessageCallback* callback) { }
     // GL_ARB_robustness
     //
     // This entry point must provide slightly different semantics than

Modified: trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp (106319 => 106320)


--- trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp	2012-01-31 03:10:49 UTC (rev 106320)
@@ -1032,6 +1032,7 @@
 GraphicsContext3D::~GraphicsContext3D()
 {
     m_private->setContextLostCallback(nullptr);
+    m_private->setErrorMessageCallback(nullptr);
     m_private->setSwapBuffersCompleteCallbackCHROMIUM(nullptr);
 }
 
@@ -1268,6 +1269,7 @@
 DELEGATE_TO_INTERNAL_R(getExtensions, Extensions3D*)
 
 DELEGATE_TO_INTERNAL_1(setContextLostCallback, PassOwnPtr<GraphicsContext3D::ContextLostCallback>)
+DELEGATE_TO_INTERNAL_1(setErrorMessageCallback, PassOwnPtr<GraphicsContext3D::ErrorMessageCallback>)
 
 class GraphicsContextLostCallbackAdapter : public WebKit::WebGraphicsContext3D::WebGraphicsContextLostCallback {
 public:
@@ -1296,6 +1298,33 @@
     m_impl->setContextLostCallback(m_contextLostCallbackAdapter.get());
 }
 
+class GraphicsErrorMessageCallbackAdapter : public WebKit::WebGraphicsContext3D::WebGraphicsErrorMessageCallback {
+public:
+    virtual void onErrorMessage(const WebKit::WebString&, WebKit::WGC3Dint);
+    static PassOwnPtr<GraphicsErrorMessageCallbackAdapter> create(PassOwnPtr<GraphicsContext3D::ErrorMessageCallback>);
+    virtual ~GraphicsErrorMessageCallbackAdapter() { }
+private:
+    GraphicsErrorMessageCallbackAdapter(PassOwnPtr<GraphicsContext3D::ErrorMessageCallback> cb) : m_errorMessageCallback(cb) { }
+    OwnPtr<GraphicsContext3D::ErrorMessageCallback> m_errorMessageCallback;
+};
+
+void GraphicsErrorMessageCallbackAdapter::onErrorMessage(const WebKit::WebString& message, WebKit::WGC3Dint id)
+{
+    if (m_errorMessageCallback)
+        m_errorMessageCallback->onErrorMessage(message, id);
+}
+
+PassOwnPtr<GraphicsErrorMessageCallbackAdapter> GraphicsErrorMessageCallbackAdapter::create(PassOwnPtr<GraphicsContext3D::ErrorMessageCallback> cb)
+{
+    return adoptPtr(cb.get() ? new GraphicsErrorMessageCallbackAdapter(cb) : 0);
+}
+
+void GraphicsContext3DPrivate::setErrorMessageCallback(PassOwnPtr<GraphicsContext3D::ErrorMessageCallback> cb)
+{
+    m_errorMessageCallbackAdapter = GraphicsErrorMessageCallbackAdapter::create(cb);
+    m_impl->setErrorMessageCallback(m_errorMessageCallbackAdapter.get());
+}
+
 bool GraphicsContext3D::isGLES2Compliant() const
 {
     return m_private->isGLES2Compliant();

Modified: trunk/Source/WebKit/chromium/src/GraphicsContext3DPrivate.h (106319 => 106320)


--- trunk/Source/WebKit/chromium/src/GraphicsContext3DPrivate.h	2012-01-31 02:58:27 UTC (rev 106319)
+++ trunk/Source/WebKit/chromium/src/GraphicsContext3DPrivate.h	2012-01-31 03:10:49 UTC (rev 106320)
@@ -50,6 +50,7 @@
 class Extensions3DChromium;
 class GraphicsContextLostCallbackAdapter;
 class GraphicsContext3DSwapBuffersCompleteCallbackAdapter;
+class GraphicsErrorMessageCallbackAdapter;
 
 class GraphicsContext3DPrivate {
 public:
@@ -273,6 +274,7 @@
     void synthesizeGLError(GC3Denum error);
 
     void setContextLostCallback(PassOwnPtr<GraphicsContext3D::ContextLostCallback>);
+    void setErrorMessageCallback(PassOwnPtr<GraphicsContext3D::ErrorMessageCallback>);
 
     // Extensions3D support.
     Extensions3D* getExtensions();
@@ -321,6 +323,7 @@
     OwnPtr<WebKit::WebGraphicsContext3D> m_impl;
     OwnPtr<Extensions3DChromium> m_extensions;
     OwnPtr<GraphicsContextLostCallbackAdapter> m_contextLostCallbackAdapter;
+    OwnPtr<GraphicsErrorMessageCallbackAdapter> m_errorMessageCallbackAdapter;
     OwnPtr<GraphicsContext3DSwapBuffersCompleteCallbackAdapter> m_swapBuffersCompleteCallbackAdapter;
     WebKit::WebViewImpl* m_webViewImpl;
     bool m_initializedAvailableExtensions;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to