Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: site/try/src/compilation.dart

Issue 2232273004: Delete site/try (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: site/try/src/compilation.dart
diff --git a/site/try/src/compilation.dart b/site/try/src/compilation.dart
deleted file mode 100644
index b234a2a6d70faf31faa4ed6bb9b3a5c30928f49e..0000000000000000000000000000000000000000
--- a/site/try/src/compilation.dart
+++ /dev/null
@@ -1,269 +0,0 @@
-// 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.
-
-library trydart.compilation;
-
-import 'dart:html' show
- Blob,
- Element,
- ErrorEvent,
- IFrameElement,
- MessageEvent,
- Url,
- Worker,
- window;
-
-import 'dart:isolate' show
- ReceivePort,
- SendPort;
-
-import 'editor.dart' show
- addDiagnostic,
- isMalformedInput;
-
-import 'run.dart' show
- makeOutputFrame;
-
-import 'ui.dart' show
- buildButton,
- interaction,
- outputDiv,
- outputFrame;
-
-import 'settings.dart' show
- alwaysRunInWorker,
- alwaysRunInIframe,
- communicateViaBlobs,
- incrementalCompilation,
- minified,
- onlyAnalyze,
- verboseCompiler;
-
-import 'iframe_error_handler.dart' show
- errorStream;
-
-/**
- * Scheme for recognizing files stored in memory.
- *
- * From http://tools.ietf.org/html/bcp35#section-2.8:
- *
- * Organizations that desire a private name space for URI scheme names
- * are encouraged to use a prefix based on their domain name, expressed
- * in reverse order. For example, a URI scheme name of com-example-info
- * might be registered by the vendor that owns the example.com domain
- * name.
- */
-const String PRIVATE_SCHEME = 'org-trydart';
-
-SendPort compilerPort;
-
-// TODO(ahe): Remove this.
-String get currentSource => window.localStorage['currentSource'];
-
-void set currentSource(String text) {
- window.localStorage['currentSource'] = text;
-}
-
-bool startCompilation() {
- if (!CompilationProcess.shouldStartCompilation()) return false;
- new CompilationProcess(currentSource, outputDiv).start();
- return true;
-}
-
-class CompilationProcess {
- final String source;
- final Element console;
- final ReceivePort receivePort = new ReceivePort();
- final Set<String> seenMessages = new Set<String>();
- bool isDone = false;
- bool usesDartHtml = false;
- Worker worker;
- List<String> objectUrls = <String>[];
- String firstError;
-
- static CompilationProcess current;
-
- CompilationProcess(this.source, this.console);
-
- static bool shouldStartCompilation() {
- if (compilerPort == null) return false;
- if (isMalformedInput) return false;
- if (current != null) return current.isDone;
- return true;
- }
-
- void start() {
- if (!shouldStartCompilation()) {
- receivePort.close();
- return;
- }
- if (current != null) current.dispose();
- current = this;
- var options = [
- '--analyze-main',
- '--no-source-maps',
- ];
- if (verboseCompiler) options.add('--verbose');
- if (minified) options.add('--minify');
- if (onlyAnalyze) options.add('--analyze-only');
- if (incrementalCompilation.value) {
- options.addAll(['--incremental-support', '--disable-type-inference']);
- }
- interaction.compilationStarting();
- compilerPort.send([['options', options], receivePort.sendPort]);
- compilerPort.send([['communicateViaBlobs', communicateViaBlobs.value],
- receivePort.sendPort]);
- receivePort.listen(onMessage);
- compilerPort.send([source, receivePort.sendPort]);
- }
-
- void dispose() {
- if (worker != null) worker.terminate();
- objectUrls.forEach(Url.revokeObjectUrl);
- }
-
- onMessage(message) {
- String kind = message is String ? message : message[0];
- var data = (message is List && message.length == 2) ? message[1] : null;
- switch (kind) {
- case 'done': return onDone(data);
- case 'url': return onUrl(data);
- case 'code': return onCode(data);
- case 'diagnostic': return onDiagnostic(data);
- case 'crash': return onCrash(data);
- case 'failed': return onFail(data);
- case 'dart:html': return onDartHtml(data);
- default:
- throw ['Unknown message kind', message];
- }
- }
-
- onDartHtml(_) {
- usesDartHtml = true;
- }
-
- onFail(_) {
- interaction.onCompilationFailed(firstError);
- }
-
- onDone(_) {
- interaction.onCompilationDone();
- isDone = true;
- receivePort.close();
- }
-
- // This is called in browsers that support creating Object URLs in a
- // web worker. For example, Chrome and Firefox 21.
- onUrl(String url) {
- objectUrls.add(url);
- String wrapper = '''
-// Fool isolate_helper.dart so it does not think this is an isolate.
-var window = self;
-function dartPrint(msg) {
- self.postMessage(msg);
-};
-self.importScripts("$url");
-''';
- var wrapperUrl =
- Url.createObjectUrl(new Blob([wrapper], 'application/javascript'));
- objectUrls.add(wrapperUrl);
-
- run(wrapperUrl, () => makeOutputFrame(url));
- }
-
- // This is called in browsers that do not support creating Object
- // URLs in a web worker. For example, Safari and Firefox < 21.
- onCode(String code) {
- IFrameElement makeIframe() {
- // The obvious thing would be to call [makeOutputFrame], but
- // Safari doesn't support access to Object URLs in an iframe.
-
- IFrameElement frame = new IFrameElement()
- ..src = 'iframe.html'
- ..style.width = '100%'
- ..style.height = '0px';
- frame.onLoad.listen((_) {
- frame.contentWindow.postMessage(['source', code], '*');
- });
- return frame;
- }
-
- String codeWithPrint =
- '$code\n'
- 'function dartPrint(msg) { postMessage(msg); }\n';
- var url =
- Url.createObjectUrl(
- new Blob([codeWithPrint], 'application/javascript'));
- objectUrls.add(url);
-
- run(url, makeIframe);
- }
-
- void run(String url, IFrameElement makeIframe()) {
- void retryInIframe() {
- interaction.aboutToRun();
- var frame = makeIframe();
- frame.style
- ..visibility = 'hidden'
- ..position = 'absolute';
- outputFrame.parent.insertBefore(frame, outputFrame);
- outputFrame = frame;
- errorStream(frame).listen(interaction.onIframeError);
- }
- void onError(String errorMessage) {
- interaction.consolePrintLine(errorMessage);
- console
- ..append(buildButton('Try in iframe', (_) => retryInIframe()))
- ..appendText('\n');
- }
- interaction.aboutToRun();
- if (alwaysRunInIframe.value ||
- usesDartHtml && !alwaysRunInWorker) {
- retryInIframe();
- } else {
- runInWorker(url, onError);
- }
- }
-
- void runInWorker(String url, void onError(String errorMessage)) {
- worker = new Worker(url)
- ..onMessage.listen((MessageEvent event) {
- interaction.consolePrintLine(event.data);
- })
- ..onError.listen((ErrorEvent event) {
- worker.terminate();
- worker = null;
- onError(event.message);
- });
- }
-
- onDiagnostic(Map<String, dynamic> diagnostic) {
- if (currentSource != source) return;
- String kind = diagnostic['kind'];
- String message = diagnostic['message'];
- if (kind == 'verbose info') {
- interaction.verboseCompilerMessage(message);
- return;
- }
- if (kind == 'error' && firstError == null) {
- firstError = message;
- }
- String uri = diagnostic['uri'];
- if (uri != '${PRIVATE_SCHEME}:/main.dart') {
- interaction.consolePrintLine('$uri: [$kind] $message');
- return;
- }
- int begin = diagnostic['begin'];
- int end = diagnostic['end'];
- if (begin == null) return;
- if (seenMessages.add('$begin:$end: [$kind] $message')) {
- // Guard against duplicated messages.
- addDiagnostic(kind, message, begin, end);
- }
- }
-
- onCrash(data) {
- interaction.onCompilerCrash(data);
- }
-}
« dart.gyp ('K') | « site/try/src/cache.dart ('k') | site/try/src/compilation_unit.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698