src/wtf/trace/providers/webglprovider.js
function wrapVertexArrayObjectExtension(ctx, proto) {
    /**
     * @param {string} signature Event signature.
     * @param {Function=} opt_generator Generator function.
     */
    function wrapVertexArrayObjectMethod(signature, opt_generator) {
      wrapMethod(
          proto, 'OESVertexArrayObject',
          signature, opt_generator);
    };

    // http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/

    wrapVertexArrayObjectMethod(
        'createVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function createVertexArrayOES() {
            setCurrentContext(ctx);
            var id = provider.nextObjectId_++;
            leaveScope(eventType(id));
            var obj = fn.apply(this, arguments);
            if (obj) {
              setHandle(obj, id);
            }
            return obj;
          };
        });
    wrapVertexArrayObjectMethod(
        'deleteVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function deleteVertexArrayOES(arrayObject) {
            setCurrentContext(ctx);
            var scope = eventType(getHandle(arrayObject));
            return leaveScope(scope, fn.apply(this, arguments));
          };
        });
    wrapVertexArrayObjectMethod(
        'isVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function isVertexArrayOES(arrayObject) {
            setCurrentContext(ctx);
            var scope = eventType(getHandle(arrayObject));
            return leaveScope(scope, fn.apply(this, arguments));
          };
        });
    wrapVertexArrayObjectMethod(
        'bindVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function bindVertexArrayOES(arrayObject) {
            setCurrentContext(ctx);
            var scope = eventType(getHandle(arrayObject));
            return leaveScope(scope, fn.apply(this, arguments));
          };
        });
  }
function wrapVertexArrayObjectExtension(ctx, proto) {
    /**
     * @param {string} signature Event signature.
     * @param {Function=} opt_generator Generator function.
     */
    function wrapVertexArrayObjectMethod(signature, opt_generator) {
      wrapMethod(
          proto, 'OESVertexArrayObject',
          signature, opt_generator);
    };

    // http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/

    wrapVertexArrayObjectMethod(
        'createVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function createVertexArrayOES() {
            setCurrentContext(ctx);
            var id = provider.nextObjectId_++;
            leaveScope(eventType(id));
            var obj = fn.apply(this, arguments);
            if (obj) {
              setHandle(obj, id);
            }
            return obj;
          };
        });
    wrapVertexArrayObjectMethod(
        'deleteVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function deleteVertexArrayOES(arrayObject) {
            setCurrentContext(ctx);
            var scope = eventType(getHandle(arrayObject));
            return leaveScope(scope, fn.apply(this, arguments));
          };
        });
    wrapVertexArrayObjectMethod(
        'isVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function isVertexArrayOES(arrayObject) {
            setCurrentContext(ctx);
            var scope = eventType(getHandle(arrayObject));
            return leaveScope(scope, fn.apply(this, arguments));
          };
        });
    wrapVertexArrayObjectMethod(
        'bindVertexArrayOES(uint32 arrayObject)',
        function(fn, eventType) {
          return function bindVertexArrayOES(arrayObject) {
            setCurrentContext(ctx);
            var scope = eventType(getHandle(arrayObject));
            return leaveScope(scope, fn.apply(this, arguments));
          };
        });
  }
function wrapVertexArrayObjectExtension ( ctx , proto ) { /**
     * @param {string} signature Event signature.
     * @param {Function=} opt_generator Generator function.
     */ function wrapVertexArrayObjectMethod ( signature , opt_generator ) { wrapMethod ( proto , 'OESVertexArrayObject' , signature , opt_generator ) ; } ; // http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/ wrapVertexArrayObjectMethod ( 'createVertexArrayOES(uint32 arrayObject)' , function ( fn , eventType ) { return function createVertexArrayOES ( ) { setCurrentContext ( ctx ) ; var id = provider . nextObjectId_ ++ ; leaveScope ( eventType ( id ) ) ; var obj = fn . apply ( this , arguments ) ; if ( obj ) { setHandle ( obj , id ) ; } return obj ; } ; } ) ; wrapVertexArrayObjectMethod ( 'deleteVertexArrayOES(uint32 arrayObject)' , function ( fn , eventType ) { return function deleteVertexArrayOES ( arrayObject ) { setCurrentContext ( ctx ) ; var scope = eventType ( getHandle ( arrayObject ) ) ; return leaveScope ( scope , fn . apply ( this , arguments ) ) ; } ; } ) ; wrapVertexArrayObjectMethod ( 'isVertexArrayOES(uint32 arrayObject)' , function ( fn , eventType ) { return function isVertexArrayOES ( arrayObject ) { setCurrentContext ( ctx ) ; var scope = eventType ( getHandle ( arrayObject ) ) ; return leaveScope ( scope , fn . apply ( this , arguments ) ) ; } ; } ) ; wrapVertexArrayObjectMethod ( 'bindVertexArrayOES(uint32 arrayObject)' , function ( fn , eventType ) { return function bindVertexArrayOES ( arrayObject ) { setCurrentContext ( ctx ) ; var scope = eventType ( getHandle ( arrayObject ) ) ; return leaveScope ( scope , fn . apply ( this , arguments ) ) ; } ; } ) ; }
Wraps the OESVertexArrayObject extension object.
@param {!WebGLRenderingContext} ctx Target context.
@param {!Object} proto Prototype object.
Wraps the OESVertexArrayObject extension object .