OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library trydart.main; | |
6 | |
7 import 'dart:html' show | |
8 HttpRequest, | |
9 LinkElement, | |
10 querySelector, | |
11 window; | |
12 | |
13 import 'dart:isolate' show | |
14 Isolate, | |
15 ReceivePort, | |
16 SendPort; | |
17 | |
18 import 'compilation.dart' show | |
19 compilerPort, | |
20 currentSource; | |
21 | |
22 import 'samples.dart' show | |
23 EXAMPLE_HELLO; | |
24 | |
25 import 'ui.dart' show | |
26 buildUI, | |
27 interaction, | |
28 observer; | |
29 | |
30 import 'user_option.dart' show | |
31 UserOption; | |
32 | |
33 import 'settings.dart' show | |
34 alwaysRunInIframe, | |
35 communicateViaBlobs; | |
36 | |
37 bool isBrowserIE() { | |
38 return window.navigator.userAgent.contains(' Trident/7.0;'); | |
39 } | |
40 | |
41 initHiddenSettings() { | |
42 alwaysRunInIframe.setIfNotInitialized(isBrowserIE); | |
43 communicateViaBlobs.setIfNotInitialized(() => !isBrowserIE()); | |
44 } | |
45 | |
46 int count = 0; | |
47 | |
48 main() { | |
49 UserOption.storage = window.localStorage; | |
50 if (currentSource == null) { | |
51 currentSource = EXAMPLE_HELLO; | |
52 } | |
53 | |
54 initHiddenSettings(); | |
55 | |
56 buildUI(); | |
57 ReceivePort port = new ReceivePort(); | |
58 Isolate.spawnUri( | |
59 Uri.base.resolve('compiler_isolate.dart.js'), | |
60 const <String>[], port.sendPort).then((Isolate isolate) { | |
61 LinkElement link = querySelector('link[rel="dart-sdk"]'); | |
62 String sdk = link.href; | |
63 print('Using Dart SDK: $sdk'); | |
64 int messageCount = 0; | |
65 SendPort sendPort; | |
66 port.listen((message) { | |
67 messageCount++; | |
68 switch (messageCount) { | |
69 case 1: | |
70 sendPort = message as SendPort; | |
71 sendPort.send([sdk, port.sendPort]); | |
72 break; | |
73 case 2: | |
74 // Acknowledged Receiving the SDK URI. | |
75 compilerPort = sendPort; | |
76 interaction.onMutation([], observer); | |
77 break; | |
78 default: | |
79 // TODO(ahe): Close [port]? | |
80 print('Unexpected message received: $message'); | |
81 break; | |
82 } | |
83 }); | |
84 }); | |
85 } | |
OLD | NEW |