10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Google Inc. All rights reserved. 306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Copyright (C) 2010 Apple Inc. All Rights Reserved. 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions are 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * met: 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * * Redistributions of source code must retain the above copyright 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * notice, this list of conditions and the following disclaimer. 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * * Redistributions in binary form must reproduce the above 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * copyright notice, this list of conditions and the following disclaimer 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * in the documentation and/or other materials provided with the 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * distribution. 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * * Neither the name of Google Inc. nor the names of its 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * contributors may be used to endorse or promote products derived from 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * this software without specific prior written permission. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochmodule websockets { 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch interface [ 35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block Conditional=WEB_SOCKETS, 3606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen CanBeConstructed, 3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen CustomConstructFunction, 3806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ConstructorParameters=1, 3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen V8CustomConstructor, 40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block EventTarget, 41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block NoStaticTables 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ] WebSocket { 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch readonly attribute DOMString URL; 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // ready state 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const unsigned short CONNECTING = 0; 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const unsigned short OPEN = 1; 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const unsigned short CLOSED = 2; 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch readonly attribute unsigned short readyState; 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch readonly attribute unsigned long bufferedAmount; 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // networking 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attribute EventListener onopen; 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attribute EventListener onmessage; 56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block attribute EventListener onerror; 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch attribute EventListener onclose; 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 5906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen [RequiresAllArguments] boolean send(in DOMString data) raises(DOMException); 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void close(); 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // EventTarget interface 6321939df44de1705786c545cd1bf519d47250322dBen Murdoch void addEventListener(in DOMString type, 6421939df44de1705786c545cd1bf519d47250322dBen Murdoch in EventListener listener, 6521939df44de1705786c545cd1bf519d47250322dBen Murdoch in boolean useCapture); 6621939df44de1705786c545cd1bf519d47250322dBen Murdoch void removeEventListener(in DOMString type, 6721939df44de1705786c545cd1bf519d47250322dBen Murdoch in EventListener listener, 6821939df44de1705786c545cd1bf519d47250322dBen Murdoch in boolean useCapture); 69cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block boolean dispatchEvent(in Event evt) 70cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block raises(EventException); 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 73