Changeset 204839 in webkit


Ignore:
Timestamp:
Aug 23, 2016 8:34:09 AM (8 years ago)
Author:
Chris Dumez
Message:

CanvasRenderingContext2D should not have a CanvasRenderingContext parent interface
https://bugs.webkit.org/show_bug.cgi?id=161054

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

CanvasRenderingContext2D should not have a CanvasRenderingContext parent interface
as per:

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing test.

  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSCanvasRenderingContext.h: Renamed from Source/WebCore/bindings/js/JSCanvasRenderingContextCustom.cpp.

(WebCore::toJS):

  • bindings/js/JSCanvasRenderingContext2DCustom.cpp:

(WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::getCSSCanvasContext):
(WebCore::JSDocument::createTouchList): Deleted.

  • bindings/js/JSHTMLCanvasElementCustom.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • dom/Document.idl:
  • html/canvas/CanvasRenderingContext.idl: Removed.
  • html/canvas/CanvasRenderingContext2D.idl:
  • html/canvas/WebGL2RenderingContext.idl:
  • html/canvas/WebGLRenderingContext.idl:
  • html/canvas/WebGLRenderingContextBase.idl:
Location:
trunk
Files:
1 deleted
17 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r204795 r204839  
     12016-08-23  Chris Dumez  <cdumez@apple.com>
     2
     3        CanvasRenderingContext2D should not have a CanvasRenderingContext parent interface
     4        https://bugs.webkit.org/show_bug.cgi?id=161054
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Rebaseline W3C test now that more checks are passing.
     9
     10        * web-platform-tests/html/dom/interfaces-expected.txt:
     11
    1122016-08-23  Youenn Fablet  <youenn@apple.com>
    213
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt

    r204765 r204839  
    47914791PASS CanvasRenderingContext2D interface object length
    47924792PASS CanvasRenderingContext2D interface object name
    4793 FAIL CanvasRenderingContext2D interface: existence and properties of interface prototype object assert_equals: prototype of CanvasRenderingContext2D.prototype is not Object.prototype expected object "[object Object]" but got object "[object CanvasRenderingContextPrototype]"
     4793PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object
    47944794PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property
    4795 FAIL CanvasRenderingContext2D interface: attribute canvas assert_own_property: expected property "canvas" missing
     4795PASS CanvasRenderingContext2D interface: attribute canvas
    47964796PASS CanvasRenderingContext2D interface: operation save()
    47974797PASS CanvasRenderingContext2D interface: operation restore()
  • trunk/Source/WebCore/CMakeLists.txt

    r204809 r204839  
    545545    html/canvas/CanvasPattern.idl
    546546    html/canvas/CanvasProxy.idl
    547     html/canvas/CanvasRenderingContext.idl
    548547    html/canvas/CanvasRenderingContext2D.idl
    549548    html/canvas/DOMPath.idl
     
    11251124    bindings/js/JSCallbackData.cpp
    11261125    bindings/js/JSCanvasRenderingContext2DCustom.cpp
    1127     bindings/js/JSCanvasRenderingContextCustom.cpp
    11281126    bindings/js/JSCharacterDataCustom.cpp
    11291127    bindings/js/JSClientRectCustom.cpp
  • trunk/Source/WebCore/ChangeLog

    r204830 r204839  
     12016-08-23  Chris Dumez  <cdumez@apple.com>
     2
     3        CanvasRenderingContext2D should not have a CanvasRenderingContext parent interface
     4        https://bugs.webkit.org/show_bug.cgi?id=161054
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        CanvasRenderingContext2D should not have a CanvasRenderingContext parent interface
     9        as per:
     10        - https://html.spec.whatwg.org/multipage/scripting.html#canvasrenderingcontext2d
     11
     12        Firefox and Chrome agree with the specification.
     13
     14        No new tests, rebaselined existing test.
     15
     16        * CMakeLists.txt:
     17        * DerivedSources.cpp:
     18        * DerivedSources.make:
     19        * WebCore.xcodeproj/project.pbxproj:
     20        * bindings/js/JSBindingsAllInOne.cpp:
     21        * bindings/js/JSCanvasRenderingContext.h: Renamed from Source/WebCore/bindings/js/JSCanvasRenderingContextCustom.cpp.
     22        (WebCore::toJS):
     23        * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
     24        (WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
     25        (WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren):
     26        * bindings/js/JSDocumentCustom.cpp:
     27        (WebCore::JSDocument::getCSSCanvasContext):
     28        (WebCore::JSDocument::createTouchList): Deleted.
     29        * bindings/js/JSHTMLCanvasElementCustom.cpp:
     30        * bindings/scripts/CodeGeneratorJS.pm:
     31        (GenerateImplementation):
     32        * dom/Document.idl:
     33        * html/canvas/CanvasRenderingContext.idl: Removed.
     34        * html/canvas/CanvasRenderingContext2D.idl:
     35        * html/canvas/WebGL2RenderingContext.idl:
     36        * html/canvas/WebGLRenderingContext.idl:
     37        * html/canvas/WebGLRenderingContextBase.idl:
     38
    1392016-08-03  Frederic Wang  <fwang@igalia.com>
    240
  • trunk/Source/WebCore/DerivedSources.cpp

    r204748 r204839  
    4949#include "JSCanvasPattern.cpp"
    5050#include "JSCanvasProxy.cpp"
    51 #include "JSCanvasRenderingContext.cpp"
    5251#include "JSCanvasRenderingContext2D.cpp"
    5352#if ENABLE(STREAMS_API)
  • trunk/Source/WebCore/DerivedSources.make

    r204748 r204839  
    454454    $(WebCore)/html/canvas/CanvasPattern.idl \
    455455    $(WebCore)/html/canvas/CanvasProxy.idl \
    456     $(WebCore)/html/canvas/CanvasRenderingContext.idl \
    457456    $(WebCore)/html/canvas/CanvasRenderingContext2D.idl \
    458457    $(WebCore)/html/canvas/DOMPath.idl \
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r204809 r204839  
    17141714                463EB6221B8789E00096ED51 /* TagCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 463EB6201B8789CB0096ED51 /* TagCollection.cpp */; };
    17151715                463EB6231B8789E00096ED51 /* TagCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 463EB6211B8789CB0096ED51 /* TagCollection.h */; };
     1716                4659D2711D6B90A50096FD86 /* JSCanvasRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4659D2701D6B909F0096FD86 /* JSCanvasRenderingContext.h */; };
    17161717                465A8E791C8A24CE00E7D3E4 /* RuntimeApplicationChecks.mm in Sources */ = {isa = PBXBuildFile; fileRef = 465A8E781C8A24CE00E7D3E4 /* RuntimeApplicationChecks.mm */; };
    17171718                4669B2871B852A0B000F905F /* JSDOMNamedFlowCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46F2768E1B85297F005C2556 /* JSDOMNamedFlowCollectionCustom.cpp */; };
     
    18391840                49ECEB6F1499790D00CDD3A4 /* FilterOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49ECEB651499790D00CDD3A4 /* FilterOperations.cpp */; };
    18401841                49ECEB701499790D00CDD3A4 /* FilterOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 49ECEB661499790D00CDD3A4 /* FilterOperations.h */; settings = {ATTRIBUTES = (Private, ); }; };
    1841                 49EED1421051969400099FAB /* JSCanvasRenderingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED13C1051969400099FAB /* JSCanvasRenderingContext.cpp */; };
    18421842                49EED1431051969400099FAB /* JSCanvasRenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EED13D1051969400099FAB /* JSCanvasRenderingContext.h */; };
    18431843                49EED1441051969400099FAB /* JSCanvasRenderingContext2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED13E1051969400099FAB /* JSCanvasRenderingContext2D.cpp */; };
     
    18471847                49EED14E1051971A00099FAB /* JSCanvasRenderingContext2DCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED14B1051971900099FAB /* JSCanvasRenderingContext2DCustom.cpp */; };
    18481848                49EED14F1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED14C1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp */; };
    1849                 49EED1501051971A00099FAB /* JSCanvasRenderingContextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EED14D1051971A00099FAB /* JSCanvasRenderingContextCustom.cpp */; };
    18501849                49FC7A501444AF5F00A5D864 /* DisplayRefreshMonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49FC7A4F1444AF5F00A5D864 /* DisplayRefreshMonitor.cpp */; };
    18511850                49FFBF1D11C8550E006A7118 /* GraphicsContext3DMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 49FFBF1C11C8550E006A7118 /* GraphicsContext3DMac.mm */; };
     
    86348633                463EB6201B8789CB0096ED51 /* TagCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TagCollection.cpp; sourceTree = "<group>"; };
    86358634                463EB6211B8789CB0096ED51 /* TagCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagCollection.h; sourceTree = "<group>"; };
     8635                4659D2701D6B909F0096FD86 /* JSCanvasRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCanvasRenderingContext.h; sourceTree = "<group>"; };
    86368636                465A8E781C8A24CE00E7D3E4 /* RuntimeApplicationChecks.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RuntimeApplicationChecks.mm; sourceTree = "<group>"; };
    86378637                4671E0631D67A57B00C6B497 /* CanvasPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasPath.cpp; sourceTree = "<group>"; };
     
    87328732                49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasRenderingContext.cpp; sourceTree = "<group>"; };
    87338733                49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasRenderingContext.h; sourceTree = "<group>"; };
    8734                 49C7B9BE1042D32F0009D447 /* CanvasRenderingContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CanvasRenderingContext.idl; sourceTree = "<group>"; };
    87358734                49C7B9BF1042D32F0009D447 /* WebGLRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebGLRenderingContext.cpp; sourceTree = "<group>"; };
    87368735                49C7B9C01042D32F0009D447 /* WebGLRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGLRenderingContext.h; sourceTree = "<group>"; };
     
    87738772                49ECEB651499790D00CDD3A4 /* FilterOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FilterOperations.cpp; sourceTree = "<group>"; };
    87748773                49ECEB661499790D00CDD3A4 /* FilterOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FilterOperations.h; sourceTree = "<group>"; };
    8775                 49EED13C1051969400099FAB /* JSCanvasRenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContext.cpp; sourceTree = "<group>"; };
    87768774                49EED13D1051969400099FAB /* JSCanvasRenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCanvasRenderingContext.h; sourceTree = "<group>"; };
    87778775                49EED13E1051969400099FAB /* JSCanvasRenderingContext2D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContext2D.cpp; sourceTree = "<group>"; };
     
    87818779                49EED14B1051971900099FAB /* JSCanvasRenderingContext2DCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContext2DCustom.cpp; sourceTree = "<group>"; };
    87828780                49EED14C1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGLRenderingContextCustom.cpp; sourceTree = "<group>"; };
    8783                 49EED14D1051971A00099FAB /* JSCanvasRenderingContextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCanvasRenderingContextCustom.cpp; sourceTree = "<group>"; };
    87848781                49FC7A4F1444AF5F00A5D864 /* DisplayRefreshMonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayRefreshMonitor.cpp; sourceTree = "<group>"; };
    87858782                49FFBF1C11C8550E006A7118 /* GraphicsContext3DMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GraphicsContext3DMac.mm; sourceTree = "<group>"; };
     
    1605816055                                49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */,
    1605916056                                49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */,
    16060                                 49C7B9BE1042D32F0009D447 /* CanvasRenderingContext.idl */,
    1606116057                                49484FBC102CF23C00187DD3 /* CanvasRenderingContext2D.cpp */,
    1606216058                                49484FBD102CF23C00187DD3 /* CanvasRenderingContext2D.h */,
     
    1868518681                                65DF323609D1DE65000BE325 /* JSCanvasPattern.h */,
    1868618682                                65DF323609D1DE65001BE325 /* JSCanvasProxy.h */,
    18687                                 49EED13C1051969400099FAB /* JSCanvasRenderingContext.cpp */,
    1868818683                                49EED13D1051969400099FAB /* JSCanvasRenderingContext.h */,
    1868918684                                49EED13E1051969400099FAB /* JSCanvasRenderingContext2D.cpp */,
     
    2091620911                                8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */,
    2091720912                                49EED14B1051971900099FAB /* JSCanvasRenderingContext2DCustom.cpp */,
    20918                                 49EED14D1051971A00099FAB /* JSCanvasRenderingContextCustom.cpp */,
     20913                                4659D2701D6B909F0096FD86 /* JSCanvasRenderingContext.h */,
    2091920914                                7C33F3581B4A044800502CAF /* JSCharacterDataCustom.cpp */,
    2092020915                                46A58AC41D46B3FA00432036 /* JSClientRectCustom.cpp */,
     
    2495124946                                E44614190CD6826900FADA75 /* JSMediaError.h in Headers */,
    2495224947                                BC3C39B70C0D3D8D005F4D7A /* JSMediaList.h in Headers */,
     24948                                4659D2711D6B90A50096FD86 /* JSCanvasRenderingContext.h in Headers */,
    2495324949                                93D437A31D57B7E200AB85EA /* JSMediaListCustom.h in Headers */,
    2495424950                                D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */,
     
    2829828294                                65DF323909D1DE65000BE325 /* JSCanvasGradient.cpp in Sources */,
    2829928295                                65DF323B09D1DE65000BE325 /* JSCanvasPattern.cpp in Sources */,
    28300                                 49EED1421051969400099FAB /* JSCanvasRenderingContext.cpp in Sources */,
    2830128296                                49EED1441051969400099FAB /* JSCanvasRenderingContext2D.cpp in Sources */,
    2830228297                                49EED14E1051971A00099FAB /* JSCanvasRenderingContext2DCustom.cpp in Sources */,
    28303                                 49EED1501051971A00099FAB /* JSCanvasRenderingContextCustom.cpp in Sources */,
    2830428298                                93F9B7A00BA6032600854064 /* JSCDATASection.cpp in Sources */,
    2830528299                                FDA15EA112B03EE1003A583A /* JSChannelMergerNode.cpp in Sources */,
  • trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp

    r204748 r204839  
    4242#include "JSCallbackData.cpp"
    4343#include "JSCanvasRenderingContext2DCustom.cpp"
    44 #include "JSCanvasRenderingContextCustom.cpp"
    4544#include "JSCharacterDataCustom.cpp"
    4645#include "JSClientRectCustom.cpp"
  • trunk/Source/WebCore/bindings/js/JSCanvasRenderingContext.h

    r204831 r204839  
    11/*
    2  * Copyright (C) 2015 Apple Inc. All rights reserved.
     2 * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2121 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    2222 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
     23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2424 */
    2525
    26 #include "config.h"
    27 #include "JSCanvasRenderingContext.h"
     26#pragma once
    2827
    2928#include "CanvasRenderingContext2D.h"
    30 #include "HTMLCanvasElement.h"
    3129#include "JSCanvasRenderingContext2D.h"
    32 #include "JSNode.h"
    3330
    3431#if ENABLE(WEBGL)
     
    3936#endif
    4037
    41 using namespace JSC;
    42 
    4338namespace WebCore {
    4439
    45 void JSCanvasRenderingContext::visitAdditionalChildren(SlotVisitor& visitor)
    46 {
    47     visitor.addOpaqueRoot(root(wrapped().canvas()));
    48 }
    49 
    50 JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject* globalObject, Ref<CanvasRenderingContext>&& object)
     40inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, CanvasRenderingContext& object)
    5141{
    5242#if ENABLE(WEBGL)
    5343    if (is<WebGLRenderingContext>(object))
    54         return CREATE_DOM_WRAPPER(globalObject, WebGLRenderingContext, WTFMove(object));
     44        return wrap(state, globalObject, downcast<WebGLRenderingContext>(object));
    5545#if ENABLE(WEBGL2)
    5646    if (is<WebGL2RenderingContext>(object))
    57         return CREATE_DOM_WRAPPER(globalObject, WebGL2RenderingContext, WTFMove(object));
     47        return wrap(state, globalObject, downcast<WebGL2RenderingContext>(object));
    5848#endif
    5949#endif
    60     return CREATE_DOM_WRAPPER(globalObject, CanvasRenderingContext2D, WTFMove(object));
     50    return wrap(state, globalObject, downcast<CanvasRenderingContext2D>(object));
    6151}
    6252
    63 JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, CanvasRenderingContext& object)
     53inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, CanvasRenderingContext* object)
    6454{
    65     return wrap(state, globalObject, object);
     55    return object ? toJS(state, globalObject, *object) : JSC::jsNull();
    6656}
    6757
  • trunk/Source/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp

    r204748 r204839  
    3838
    3939namespace WebCore {
     40
     41bool JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
     42{
     43    JSCanvasRenderingContext2D* jsCanvasRenderingContext = jsCast<JSCanvasRenderingContext2D*>(handle.slot()->asCell());
     44    void* root = WebCore::root(jsCanvasRenderingContext->wrapped().canvas());
     45    return visitor.containsOpaqueRoot(root);
     46}
     47
     48void JSCanvasRenderingContext2D::visitAdditionalChildren(SlotVisitor& visitor)
     49{
     50    visitor.addOpaqueRoot(root(wrapped().canvas()));
     51}
    4052
    4153static JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, const CanvasStyle& style)
  • trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp

    r204748 r204839  
    2525#include "FrameLoader.h"
    2626#include "HTMLDocument.h"
     27#include "JSCanvasRenderingContext.h"
    2728#include "JSCanvasRenderingContext2D.h"
     29#include "JSDOMConvert.h"
    2830#include "JSDOMWindowCustom.h"
    2931#include "JSHTMLDocument.h"
     
    142144#endif
    143145
     146JSValue JSDocument::getCSSCanvasContext(JSC::ExecState& state)
     147{
     148    if (UNLIKELY(state.argumentCount() < 4))
     149        return state.vm().throwException(&state, createNotEnoughArgumentsError(&state));
     150    auto contextId = state.uncheckedArgument(0).toWTFString(&state);
     151    if (UNLIKELY(state.hadException()))
     152        return jsUndefined();
     153    auto name = state.uncheckedArgument(1).toWTFString(&state);
     154    if (UNLIKELY(state.hadException()))
     155        return jsUndefined();
     156    auto width = convert<int32_t>(state, state.uncheckedArgument(2), NormalConversion);
     157    if (UNLIKELY(state.hadException()))
     158        return jsUndefined();
     159    auto height = convert<int32_t>(state, state.uncheckedArgument(3), NormalConversion);
     160    if (UNLIKELY(state.hadException()))
     161        return jsUndefined();
     162    return toJS(&state, globalObject(), wrapped().getCSSCanvasContext(WTFMove(contextId), WTFMove(name), WTFMove(width), WTFMove(height)));
     163}
     164
    144165void JSDocument::visitAdditionalChildren(SlotVisitor& visitor)
    145166{
  • trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp

    r204748 r204839  
    3030#include "CanvasContextAttributes.h"
    3131#include "HTMLCanvasElement.h"
     32#include "JSCanvasRenderingContext.h"
    3233#include "JSCanvasRenderingContext2D.h"
    3334#include <bindings/ScriptObject.h>
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r204748 r204839  
    35393539                $rootString .= "        return false;\n";
    35403540                $rootString .= "    void* root = WebCore::root(element);\n";
    3541             } elsif ($interfaceName eq "CanvasRenderingContext") {
    3542                 $implIncludes{"Element.h"} = 1;
    3543                 $implIncludes{"JSNodeCustom.h"} = 1;
    3544                 $rootString  = "    void* root = WebCore::root(js${interfaceName}->wrapped().canvas());\n";
    35453541            } elsif (GetGenerateIsReachable($interface) eq "ImplOwnerNodeRoot") {
    35463542                $implIncludes{"Element.h"} = 1;
  • trunk/Source/WebCore/dom/Document.idl

    r204748 r204839  
    172172#endif
    173173
    174     CanvasRenderingContext getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
     174    // FIXME: This is not standard and has been dropped from Blink already.
     175    [Custom] (CanvasRenderingContext2D or WebGLRenderingContextBase) getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
    175176
    176177    HTMLCollection getElementsByClassName(DOMString classNames);
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl

    r204748 r204839  
    2727enum CanvasWindingRule { "nonzero", "evenodd" };
    2828
    29 interface CanvasRenderingContext2D : CanvasRenderingContext {
     29[
     30    CustomIsReachable,
     31    JSGenerateToJSObject,
     32    JSCustomMarkFunction,
     33] interface CanvasRenderingContext2D {
     34
     35    // back-reference to the canvas
     36    readonly attribute HTMLCanvasElement canvas;
    3037
    3138    void save();
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl

    r204748 r204839  
    4545    EnabledAtRuntime=WebGL2,
    4646    JSCustomMarkFunction,
     47    JSGenerateToJSObject,
    4748    DoNotCheckConstants,
    4849] interface WebGL2RenderingContext : WebGLRenderingContextBase {
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContext.idl

    r204748 r204839  
    2727    Conditional=WEBGL,
    2828    JSCustomMarkFunction,
     29    JSGenerateToJSObject,
    2930    DoNotCheckConstants,
    3031] interface WebGLRenderingContext : WebGLRenderingContextBase {
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl

    r204748 r204839  
    4444JSCustomMarkFunction,
    4545NoInterfaceObject,
    46 ] interface WebGLRenderingContextBase : CanvasRenderingContext {
     46] interface WebGLRenderingContextBase {
     47
     48    // back-reference to the canvas
     49    readonly attribute HTMLCanvasElement canvas;
    4750
    4851    /* ClearBufferMask */
Note: See TracChangeset for help on using the changeset viewer.