Index: sdk/lib/js/dartium/js_dartium.dart |
diff --git a/sdk/lib/js/dartium/js_dartium.dart b/sdk/lib/js/dartium/js_dartium.dart |
index 0d964257af0a2cf5af244cc90e5ea37edc875710..97e927ebffab4c9e3b9326f638f37914f9f59c82 100644 |
--- a/sdk/lib/js/dartium/js_dartium.dart |
+++ b/sdk/lib/js/dartium/js_dartium.dart |
@@ -282,48 +282,6 @@ void _registerJsInterfaces(List<Type> classes) { |
_finalizeJsInterfaces() native "Js_finalizeJsInterfaces"; |
-// Create the files for the generated Dart files from IDLs. These only change |
-// when browser's Dart files change (dart:*). |
-@Deprecated("Internal Use Only") |
-String createCachedPatchesFile() { |
- var patches = _generateInteropPatchFiles(['dart:html', |
- 'dart:indexed_db', |
- 'dart:web_gl', |
- 'dart:web_sql', |
- 'dart:svg', |
- 'dart:web_audio']); |
- var sb = new StringBuffer(); |
- |
- sb.write(""" |
- |
-// START_OF_CACHED_PATCHES |
-// Copyright (c) 2013, 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. |
- |
-// DO NOT EDIT GENERATED FILE. |
- |
-library cached_patches; |
- |
-var cached_patches = {"""); |
- |
- for (var baseIndex = 0; baseIndex < patches.length; baseIndex += 3) { |
- var uri = patches[baseIndex + 0]; |
- var uri_js_interop = patches[baseIndex + 1]; |
- var source = patches[baseIndex + 2]; |
- |
- if (uri != 'dart:js') { |
- sb.write('"$uri": ["$uri", "$uri_js_interop", """$source"""],'); |
- } |
- } |
- |
- sb.write("""}; |
-// END_OF_CACHED_PATCHES |
- """); |
- |
- return "$sb"; |
-} |
- |
String _getJsName(mirrors.DeclarationMirror mirror) { |
if (_atJsType != null) { |
for (var annotation in mirror.metadata) { |
@@ -499,19 +457,23 @@ bool _isExternal(mirrors.MethodMirror mirror) { |
return false; |
} |
-List<String> _generateExternalMethods(List<String> libraryPaths) { |
+List<String> _generateExternalMethods(List<String> libraryPaths, bool useCachedPatches) { |
var staticCodegen = <String>[]; |
if (libraryPaths.length == 0) { |
mirrors.currentMirrorSystem().libraries.forEach((uri, library) { |
var library_name = "${uri.scheme}:${uri.path}"; |
- if (cached_patches.containsKey(library_name)) { |
+ if (useCachedPatches && cached_patches.containsKey(library_name)) { |
// Use the pre-generated patch files for DOM dart:nnnn libraries. |
var patch = cached_patches[library_name]; |
staticCodegen.addAll(patch); |
} else if (_hasJsName(library)) { |
// Library marked with @JS |
_generateLibraryCodegen(uri, library, staticCodegen); |
+ } else if (!useCachedPatches) { |
+ // Can't use the cached patches file, instead this is a signal to generate |
+ // the patches for this file. |
+ _generateLibraryCodegen(uri, library, staticCodegen); |
} |
}); // End of library foreach |
} else { |
@@ -676,8 +638,11 @@ var _atJsType = -1; |
* Generates part files defining source code for JSObjectImpl, all DOM classes |
* classes. This codegen is needed so that type checks for all registered |
* JavaScript interop classes pass. |
+ * If genCachedPatches is true then the patch files don't exist this is a special |
+ * signal to generate and emit the patches to stdout to be captured and put into |
+ * the file sdk/lib/js/dartium/cached_patches.dart |
*/ |
-List<String> _generateInteropPatchFiles(List<String> libraryPaths) { |
+List<String> _generateInteropPatchFiles(List<String> libraryPaths, genCachedPatches) { |
// Cache the @JS Type. |
if (_atJsType == -1) { |
var uri = new Uri(scheme: "package", path: "js/js.dart"); |
@@ -692,7 +657,7 @@ List<String> _generateInteropPatchFiles(List<String> libraryPaths) { |
} |
} |
- var ret = _generateExternalMethods(libraryPaths); |
+ var ret = _generateExternalMethods(libraryPaths, genCachedPatches ? false : true); |
var libraryPrefixes = new Map<mirrors.LibraryMirror, String>(); |
var prefixNames = new Set<String>(); |
var sb = new StringBuffer(); |