| 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 |