OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 library browser; | 4 library browser; |
5 | 5 |
6 import "dart:async"; | 6 import "dart:async"; |
7 import "dart:convert" show LineSplitter, UTF8; | 7 import "dart:convert" show LineSplitter, UTF8; |
8 import "dart:core"; | 8 import "dart:core"; |
9 import "dart:io"; | 9 import "dart:io"; |
10 | 10 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 */ | 42 */ |
43 Process process; | 43 Process process; |
44 | 44 |
45 Function logger; | 45 Function logger; |
46 | 46 |
47 /** | 47 /** |
48 * Id of the browser | 48 * Id of the browser |
49 */ | 49 */ |
50 String id; | 50 String id; |
51 | 51 |
| 52 /** |
| 53 * Delete the browser specific caches on startup. |
| 54 * Browser specific implementations are free to ignore this. |
| 55 */ |
| 56 static bool deleteCache = false; |
| 57 |
52 /** Print everything (stdout, stderr, usageLog) whenever we add to it */ | 58 /** Print everything (stdout, stderr, usageLog) whenever we add to it */ |
53 bool debugPrint = false; | 59 bool debugPrint = false; |
54 | 60 |
55 // This future returns when the process exits. It is also the return value | 61 // This future returns when the process exits. It is also the return value |
56 // of close() | 62 // of close() |
57 Future done; | 63 Future done; |
58 | 64 |
59 Browser(); | 65 Browser(); |
60 | 66 |
61 factory Browser.byName(String name, | 67 factory Browser.byName(String name, |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 } else { | 297 } else { |
292 _logEvent("${paths.current} is not present"); | 298 _logEvent("${paths.current} is not present"); |
293 return deleteIfExists(paths); | 299 return deleteIfExists(paths); |
294 } | 300 } |
295 }); | 301 }); |
296 } | 302 } |
297 | 303 |
298 // Clears the cache if the static deleteCache flag is set. | 304 // Clears the cache if the static deleteCache flag is set. |
299 // Returns false if the command to actually clear the cache did not complete. | 305 // Returns false if the command to actually clear the cache did not complete. |
300 Future<bool> clearCache() { | 306 Future<bool> clearCache() { |
301 if (!deleteCache) return new Future.value(true); | 307 if (!Browser.deleteCache) return new Future.value(true); |
302 var home = Platform.environment['HOME']; | 308 var home = Platform.environment['HOME']; |
303 Iterator iterator = CACHE_DIRECTORIES.map((s) => "$home/$s").iterator; | 309 Iterator iterator = CACHE_DIRECTORIES.map((s) => "$home/$s").iterator; |
304 return deleteIfExists(iterator); | 310 return deleteIfExists(iterator); |
305 } | 311 } |
306 | 312 |
307 Future<String> getVersion() { | 313 Future<String> getVersion() { |
308 /** | 314 /** |
309 * Example of the file: | 315 * Example of the file: |
310 * <?xml version="1.0" encoding="UTF-8"?> | 316 * <?xml version="1.0" encoding="UTF-8"?> |
311 * <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.co
m/DTDs/PropertyList-1.0.dtd"> | 317 * <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.co
m/DTDs/PropertyList-1.0.dtd"> |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 }); | 373 }); |
368 }).catchError((error) { | 374 }).catchError((error) { |
369 _logEvent("Running $_binary --version failed with $error"); | 375 _logEvent("Running $_binary --version failed with $error"); |
370 return false; | 376 return false; |
371 }); | 377 }); |
372 }); | 378 }); |
373 }); | 379 }); |
374 } | 380 } |
375 | 381 |
376 String toString() => "Safari"; | 382 String toString() => "Safari"; |
377 | |
378 // Delete the user specific browser cache and profile data. | |
379 // Safari only have one per user, and you can't specify one by command line. | |
380 static bool deleteCache = false; | |
381 | |
382 } | 383 } |
383 | 384 |
384 | 385 |
385 class Chrome extends Browser { | 386 class Chrome extends Browser { |
386 String _version = "Version not found yet"; | 387 String _version = "Version not found yet"; |
387 | 388 |
388 Map<String, String> _getEnvironment() => null; | 389 Map<String, String> _getEnvironment() => null; |
389 | 390 |
390 Future<bool> _getVersion() { | 391 Future<bool> _getVersion() { |
391 if (Platform.isWindows) { | 392 if (Platform.isWindows) { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 var findString = "REG_SZ"; | 474 var findString = "REG_SZ"; |
474 var index = result.stdout.indexOf(findString); | 475 var index = result.stdout.indexOf(findString); |
475 if (index > 0) { | 476 if (index > 0) { |
476 return result.stdout.substring(index + findString.length).trim(); | 477 return result.stdout.substring(index + findString.length).trim(); |
477 } | 478 } |
478 } | 479 } |
479 return "Could not get the version of internet explorer"; | 480 return "Could not get the version of internet explorer"; |
480 }); | 481 }); |
481 } | 482 } |
482 | 483 |
| 484 // Clears the recovery cache if the static deleteCache flag is set. |
| 485 Future<bool> clearCache() { |
| 486 if (!Browser.deleteCache) return new Future.value(true); |
| 487 var localAppData = Platform.environment['LOCALAPPDATA']; |
| 488 |
| 489 Directory dir = new Directory("$localAppData\\Microsoft\\" |
| 490 "Internet Explorer\\Recovery"); |
| 491 return dir.delete(recursive: true) |
| 492 .then((_) { return true; }) |
| 493 .catchError((error) { |
| 494 _logEvent("Deleting recovery dir failed with $error"); |
| 495 return false; |
| 496 }); |
| 497 } |
| 498 |
483 Future<bool> start(String url) { | 499 Future<bool> start(String url) { |
484 _logEvent("Starting ie browser on: $url"); | 500 _logEvent("Starting ie browser on: $url"); |
485 return getVersion().then((version) { | 501 return clearCache().then((_) => getVersion()).then((version) { |
486 _logEvent("Got version: $version"); | 502 _logEvent("Got version: $version"); |
487 return startBrowser(_binary, [url]); | 503 return startBrowser(_binary, [url]); |
488 }); | 504 }); |
489 } | 505 } |
490 String toString() => "IE"; | 506 String toString() => "IE"; |
| 507 |
491 } | 508 } |
492 | 509 |
493 | 510 |
494 class AndroidBrowserConfig { | 511 class AndroidBrowserConfig { |
495 final String name; | 512 final String name; |
496 final String package; | 513 final String package; |
497 final String activity; | 514 final String activity; |
498 final String action; | 515 final String action; |
499 AndroidBrowserConfig(this.name, this.package, this.activity, this.action); | 516 AndroidBrowserConfig(this.name, this.package, this.activity, this.action); |
500 } | 517 } |
(...skipping 992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1493 Dart test driver, number of tests: <div id="number"></div><br> | 1510 Dart test driver, number of tests: <div id="number"></div><br> |
1494 Currently executing: <div id="currently_executing"></div><br> | 1511 Currently executing: <div id="currently_executing"></div><br> |
1495 Unhandled error: <div id="unhandled_error"></div> | 1512 Unhandled error: <div id="unhandled_error"></div> |
1496 <iframe id="embedded_iframe"></iframe> | 1513 <iframe id="embedded_iframe"></iframe> |
1497 </body> | 1514 </body> |
1498 </html> | 1515 </html> |
1499 """; | 1516 """; |
1500 return driverContent; | 1517 return driverContent; |
1501 } | 1518 } |
1502 } | 1519 } |
OLD | NEW |