Index: client/html/src/frog_FactoryProviders.dart |
diff --git a/client/html/src/frog_FactoryProviders.dart b/client/html/src/frog_FactoryProviders.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3a701890d1b378df31b8238f0e3a58a5b0360651 |
--- /dev/null |
+++ b/client/html/src/frog_FactoryProviders.dart |
@@ -0,0 +1,125 @@ |
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+class _AudioContextFactoryProvider { |
+ |
+ factory AudioContext() native ''' |
+ var constructor = window.AudioContext || window.webkitAudioContext; |
+ return new constructor(); |
+'''; |
+} |
+ |
+class _DOMParserFactoryProvider { |
+ |
+ factory DOMParser() native 'return new DOMParser();'; |
+} |
+ |
+class _FileReaderFactoryProvider { |
+ |
+ factory FileReader() native 'return new FileReader();'; |
+} |
+ |
+class _TypedArrayFactoryProvider { |
+ |
+ factory Float32Array(int length) => _F32(length); |
+ factory Float32Array.fromList(List<num> list) => _F32(ensureNative(list)); |
+ factory Float32Array.fromBuffer(ArrayBuffer buffer) => _F32(buffer); |
+ |
+ factory Float64Array(int length) => _F64(length); |
+ factory Float64Array.fromList(List<num> list) => _F64(ensureNative(list)); |
+ factory Float64Array.fromBuffer(ArrayBuffer buffer) => _F64(buffer); |
+ |
+ factory Int8Array(int length) => _I8(length); |
+ factory Int8Array.fromList(List<num> list) => _I8(ensureNative(list)); |
+ factory Int8Array.fromBuffer(ArrayBuffer buffer) => _I8(buffer); |
+ |
+ factory Int16Array(int length) => _I16(length); |
+ factory Int16Array.fromList(List<num> list) => _I16(ensureNative(list)); |
+ factory Int16Array.fromBuffer(ArrayBuffer buffer) => _I16(buffer); |
+ |
+ factory Int32Array(int length) => _I32(length); |
+ factory Int32Array.fromList(List<num> list) => _I32(ensureNative(list)); |
+ factory Int32Array.fromBuffer(ArrayBuffer buffer) => _I32(buffer); |
+ |
+ factory Uint8Array(int length) => _U8(length); |
+ factory Uint8Array.fromList(List<num> list) => _U8(ensureNative(list)); |
+ factory Uint8Array.fromBuffer(ArrayBuffer buffer) => _U8(buffer); |
+ |
+ factory Uint16Array(int length) => _U16(length); |
+ factory Uint16Array.fromList(List<num> list) => _U16(ensureNative(list)); |
+ factory Uint16Array.fromBuffer(ArrayBuffer buffer) => _U16(buffer); |
+ |
+ factory Uint32Array(int length) => _U32(length); |
+ factory Uint32Array.fromList(List<num> list) => _U32(ensureNative(list)); |
+ factory Uint32Array.fromBuffer(ArrayBuffer buffer) => _U32(buffer); |
+ |
+ factory Uint8ClampedArray(int length) => _U8C(length); |
+ factory Uint8ClampedArray.fromList(List<num> list) => _U8C(ensureNative(list)); |
+ factory Uint8ClampedArray.fromBuffer(ArrayBuffer buffer) => _U8C(buffer); |
+ |
+ static Float32Array _F32(arg) native 'return new Float32Array(arg);'; |
+ static Float64Array _F64(arg) native 'return new Float64Array(arg);'; |
+ static Int8Array _I8(arg) native 'return new Int8Array(arg);'; |
+ static Int16Array _I16(arg) native 'return new Int16Array(arg);'; |
+ static Int32Array _I32(arg) native 'return new Int32Array(arg);'; |
+ static Uint8Array _U8(arg) native 'return new Uint8Array(arg);'; |
+ static Uint16Array _U16(arg) native 'return new Uint16Array(arg);'; |
+ static Uint32Array _U32(arg) native 'return new Uint32Array(arg);'; |
+ static Uint8ClampedArray _U8C(arg) native 'return new Uint8ClampedArray(arg);'; |
+ |
+ static ensureNative(List list) => list; // TODO: make sure. |
+} |
+ |
+class _CSSMatrixFactoryProvider { |
+ |
+ factory CSSMatrix([String spec = '']) native |
+ 'return new WebKitCSSMatrix(spec);'; |
+} |
+ |
+// TODO(jacobr): this factory does not require any native code so move to a |
+// separate file so it can be shared between wrapper and wrapperless versions. |
+class _EventFactoryProvider { |
+ factory Event(String type, [bool canBubble = true, |
+ bool cancelable = true]) { |
+ _EventJs e = _document._createEvent("Event"); |
+ e._initEvent(type, canBubble, cancelable); |
+ return e; |
+ } |
+} |
+ |
+class _PointFactoryProvider { |
+ |
+ factory Point(num x, num y) native 'return new WebKitPoint(x, y);'; |
+} |
+ |
+class _WebSocketFactoryProvider { |
+ |
+ factory WebSocket(String url) native 'return new WebSocket(url);'; |
+} |
+ |
+class _XMLHttpRequestFactoryProvider { |
+ factory XMLHttpRequest() native 'return new XMLHttpRequest();'; |
+ |
+ factory XMLHttpRequest.getTEMPNAME(String url, |
+ onSuccess(XMLHttpRequest request)) { |
+ final request = new XMLHttpRequest(); |
+ request.open('GET', url, true); |
+ |
+ // TODO(terry): Validate after client login added if necessary to forward |
+ // cookies to server. |
+ request.withCredentials = true; |
+ |
+ // Status 0 is for local XHR request. |
+ request.on.readyStateChange.add((e) { |
+ if (request.readyState == XMLHttpRequest.DONE && |
+ (request.status == 200 || request.status == 0)) { |
+ onSuccess(request); |
+ } |
+ }); |
+ |
+ request.send(); |
+ |
+ return request; |
+ } |
+} |