Index: tools/dom/templates/html/dartium/html_dartium.darttemplate |
diff --git a/tools/dom/templates/html/dartium/html_dartium.darttemplate b/tools/dom/templates/html/dartium/html_dartium.darttemplate |
index 66a18e0cf9d62595ba2858b43c6d61f05f0c4c7d..c92c27e268ce93dc26a95e66d73c3324cd7cf9bf 100644 |
--- a/tools/dom/templates/html/dartium/html_dartium.darttemplate |
+++ b/tools/dom/templates/html/dartium/html_dartium.darttemplate |
@@ -37,7 +37,6 @@ import 'dart:_internal' hide Symbol; |
import 'dart:html_common'; |
import 'dart:indexed_db'; |
import 'dart:indexed_db' show indexed_dbBlinkMap; |
-import 'dart:indexed_db' show indexed_dbBlinkFunctionMap; |
import 'dart:isolate'; |
import 'dart:js' as js; |
import "dart:convert"; |
@@ -49,17 +48,14 @@ import 'dart:nativewrappers'; |
import 'dart:typed_data'; |
import 'dart:web_gl' as gl; |
import 'dart:web_gl' show web_glBlinkMap; |
-import 'dart:web_gl' show web_glBlinkFunctionMap; |
import 'dart:web_sql'; |
// Not actually used, but imported since dart:html can generate these objects. |
import 'dart:svg' as svg; |
import 'dart:svg' show svgBlinkMap; |
-import 'dart:svg' show svgBlinkFunctionMap; |
import 'dart:svg' show Matrix; |
import 'dart:svg' show SvgSvgElement; |
import 'dart:web_audio' as web_audio; |
import 'dart:web_audio' show web_audioBlinkMap; |
-import 'dart:web_audio' show web_audioBlinkFunctionMap; |
import 'dart:_blink' as _blink; |
import 'dart:developer'; |
@@ -118,7 +114,7 @@ Window get window { |
} |
$if DARTIUM |
$if JSINTEROP |
- _window = wrap_jso(js.JsNative.getProperty(js.context, 'window')); |
+ _window = js.JsNative.toTypedObject(js.context); |
$else |
_window = _Utils.window(); |
$endif |
@@ -161,11 +157,19 @@ final htmlBlinkMap = { |
'JsObject': () => js.JsObject, |
'JsFunction': () => js.JsFunction, |
'JsArray': () => js.JsArray, |
+ // We have to call .instanceRuntimeType as these classes have a private |
+ // implementation class defined dynamically at runtime via a patch file. |
+ 'JSObject': () => js.JSObject.instanceRuntimeType, |
+ 'JSFunction': () => js.JSFunction.instanceRuntimeType, |
+ 'JSArray': () => js.JSArray.instanceRuntimeType, |
$!TYPE_MAP |
}; |
// TODO(leafp): We may want to move this elsewhere if html becomes |
// a package to avoid dartium depending on pkg:html. |
+@Deprecated("Internal Use Only") |
+getHtmlCreateType(String key) => _getType(key); |
+ |
Type _getType(String key) { |
var result; |
@@ -252,102 +256,15 @@ Type _getSvgType(String key) { |
return null; |
} |
-$if JSINTEROP |
-// FIXME: Can we make this private? |
-@Deprecated("Internal Use Only") |
-final htmlBlinkFunctionMap = { |
-$!TYPE_FUNCTION_MAP |
-}; |
- |
-// TODO(terry): We may want to move this elsewhere if html becomes |
-// a package to avoid dartium depending on pkg:html. |
-@Deprecated("Internal Use Only") |
-getHtmlCreateFunction(String key) { |
- var result; |
- |
- // TODO(vsm): Add Cross Frame and JS types here as well. |
- |
- // Check the html library. |
- result = _getHtmlFunction(key); |
- if (result != null) { |
- return result; |
+// TODO(jacobr): it would be nice to place this in a consistent place for dart2js and dartium. |
+_convertNativeToDart_XHR_Response(o) { |
+ if (o is Document) { |
+ return o; |
} |
- |
- // Check the web gl library. |
- result = _getWebGlFunction(key); |
- if (result != null) { |
- return result; |
- } |
- |
- // Check the indexed db library. |
- result = _getIndexDbFunction(key); |
- if (result != null) { |
- return result; |
- } |
- |
- // Check the web audio library. |
- result = _getWebAudioFunction(key); |
- if (result != null) { |
- return result; |
- } |
- |
- // Check the web sql library. |
- result = _getWebSqlFunction(key); |
- if (result != null) { |
- return result; |
- } |
- |
- // Check the svg library. |
- result = _getSvgFunction(key); |
- if (result != null) { |
- return result; |
- } |
- |
- return null; |
-} |
- |
-Function _getHtmlFunction(String key) { |
- if (htmlBlinkFunctionMap.containsKey(key)) { |
- return htmlBlinkFunctionMap[key](); |
- } |
- return null; |
-} |
- |
-Function _getWebGlFunction(String key) { |
- if (web_glBlinkFunctionMap.containsKey(key)) { |
- return web_glBlinkFunctionMap[key](); |
- } |
- return null; |
-} |
- |
-Function _getIndexDbFunction(String key) { |
- if (indexed_dbBlinkFunctionMap.containsKey(key)) { |
- return indexed_dbBlinkFunctionMap[key](); |
- } |
- return null; |
-} |
- |
-Function _getWebAudioFunction(String key) { |
- if (web_audioBlinkFunctionMap.containsKey(key)) { |
- return web_audioBlinkFunctionMap[key](); |
- } |
- return null; |
-} |
- |
-Function _getWebSqlFunction(String key) { |
- if (web_sqlBlinkFunctionMap.containsKey(key)) { |
- return web_sqlBlinkFunctionMap[key](); |
- } |
- return null; |
-} |
- |
-Function _getSvgFunction(String key) { |
- if (svgBlinkFunctionMap.containsKey(key)) { |
- return svgBlinkFunctionMap[key](); |
- } |
- return null; |
+ return convertNativeToDart_SerializedScriptValue(o); |
} |
+$if JSINTEROP |
/****************************************************************************** |
********** ********** |
@@ -368,22 +285,14 @@ String _getCustomElementName(element) { |
var jsObject; |
var tag = ""; |
var runtimeType = element.runtimeType; |
- if (runtimeType == HtmlElement) { |
- tag = element.localName; |
- } else if (runtimeType == TemplateElement) { |
+ if (runtimeType == TemplateElement) { |
// Data binding with a Dart class. |
tag = element.attributes['is']; |
- } else if (runtimeType == js.JsObject) { |
- // It's a Polymer core element (written in JS). |
- // Make sure it's an element anything else we can ignore. |
- if (element.hasProperty('nodeType') && element['nodeType'] == 1) { |
- if (js.JsNative.callMethod(element, 'hasAttribute', ['is'])) { |
- // It's data binding use the is attribute. |
- tag = js.JsNative.callMethod(element, 'getAttribute', ['is']); |
- } else { |
- // It's a custom element we want the local name. |
- tag = element['localName']; |
- } |
+ } else if (element is HtmlElement) { |
+ tag = element.attributes['is']; |
+ if (tag == null) { |
+ // It's a custom element we want the local name. |
+ tag = element.localName; |
} |
} else { |
throw new UnsupportedError('Element is incorrect type. Got ${runtimeType}, expected HtmlElement/HtmlTemplate/JsObject.'); |
@@ -412,12 +321,16 @@ debug_or_assert(message, expression) { |
} |
} |
+// TODO(jacobr): we shouldn't be generating this call in the dart:html |
+// bindings but we are. |
+_convertDartToNative_EventTarget(target) => target; |
+ |
@Deprecated("Internal Use Only") |
Map<String, dynamic> convertNativeObjectToDartMap(js.JsObject jsObject) { |
var result = new Map(); |
var keys = js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'Object'), 'keys', [jsObject]); |
for (var key in keys) { |
- result[key] = wrap_jso(js.JsNative.getProperty(jsObject, key)); |
+ result[key] = js.JsNative.getProperty(jsObject, key); |
} |
return result; |
} |
@@ -426,25 +339,7 @@ Map<String, dynamic> convertNativeObjectToDartMap(js.JsObject jsObject) { |
* Upgrade the JS HTMLElement to the Dart class. Used by Dart's Polymer. |
*/ |
_createCustomUpgrader(Type customElementClass, $this) { |
- var dartClass; |
- try { |
- dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this); |
- } catch (e) { |
- // Did the dartClass get allocated but the created failed? Otherwise, other |
- // components inside of this failed somewhere (could be JS custom element). |
- if (dartClass != null) { |
- // Yes, mark as didn't upgrade. |
- dartClass._badUpgrade(); |
- } |
- throw e; |
- } finally { |
- // Need to remember the Dart class that was created for this custom so |
- // return it and setup the blink_jsObject to the $this that we'll be working |
- // with as we talk to blink. |
- js.setDartHtmlWrapperFor($this, dartClass); |
- } |
- |
- return dartClass; |
+ return _blink.Blink_Utils.setInstanceInterceptor($this, customElementClass, customElement: true); |
} |
$else |