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

Side by Side Diff: tools/testing/dart/browser_controller.dart

Issue 2903703002: Tighten types in test.dart even more. (Closed)
Patch Set: Play nicer with strong mode. Created 3 years, 6 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 unified diff | Download patch
« no previous file with comments | « tools/testing/dart/android.dart ('k') | tools/testing/dart/co19_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 UTF8, JSON; 7 import "dart:convert" show UTF8, JSON;
8 import "dart:core"; 8 import "dart:core";
9 import "dart:io"; 9 import "dart:io";
10 import "dart:math" show min; 10 import "dart:math" show min;
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 } 461 }
462 return exists; 462 return exists;
463 }); 463 });
464 } 464 }
465 return Process.run(_binary, ["--version"]).then((var versionResult) { 465 return Process.run(_binary, ["--version"]).then((var versionResult) {
466 if (versionResult.exitCode != 0) { 466 if (versionResult.exitCode != 0) {
467 _logEvent("Failed to chrome get version"); 467 _logEvent("Failed to chrome get version");
468 _logEvent("Make sure $_binary is a valid program for running chrome"); 468 _logEvent("Make sure $_binary is a valid program for running chrome");
469 return false; 469 return false;
470 } 470 }
471 _version = versionResult.stdout; 471 _version = versionResult.stdout as String;
472 return true; 472 return true;
473 }); 473 });
474 } 474 }
475 475
476 Future<bool> start(String url) { 476 Future<bool> start(String url) {
477 _logEvent("Starting chrome browser on: $url"); 477 _logEvent("Starting chrome browser on: $url");
478 // Get the version and log that. 478 // Get the version and log that.
479 return _getVersion().then((success) { 479 return _getVersion().then<bool>((success) {
480 if (!success) return false; 480 if (!success) return false;
481 _logEvent("Got version: $_version"); 481 _logEvent("Got version: $_version");
482 482
483 return Directory.systemTemp.createTemp().then((userDir) { 483 return Directory.systemTemp.createTemp().then((userDir) {
484 _cleanup = () { 484 _cleanup = () {
485 try { 485 try {
486 userDir.deleteSync(recursive: true); 486 userDir.deleteSync(recursive: true);
487 } catch (e) { 487 } catch (e) {
488 _logEvent( 488 _logEvent(
489 "Error: failed to delete Chrome user-data-dir ${userDir.path}" 489 "Error: failed to delete Chrome user-data-dir ${userDir.path}"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer", 608 "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Internet Explorer",
609 "/v", 609 "/v",
610 "svcVersion" 610 "svcVersion"
611 ]; 611 ];
612 return Process.run("reg", args).then((result) { 612 return Process.run("reg", args).then((result) {
613 if (result.exitCode == 0) { 613 if (result.exitCode == 0) {
614 // The string we get back looks like this: 614 // The string we get back looks like this:
615 // HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer 615 // HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer
616 // version REG_SZ 9.0.8112.16421 616 // version REG_SZ 9.0.8112.16421
617 var findString = "REG_SZ"; 617 var findString = "REG_SZ";
618 var index = result.stdout.indexOf(findString); 618 var index = (result.stdout as String).indexOf(findString);
619 if (index > 0) { 619 if (index > 0) {
620 return result.stdout.substring(index + findString.length).trim(); 620 return (result.stdout as String)
621 .substring(index + findString.length)
622 .trim();
621 } 623 }
622 } 624 }
623 return "Could not get the version of internet explorer"; 625 return "Could not get the version of internet explorer";
624 }); 626 });
625 } 627 }
626 628
627 // Clears the recovery cache if the static resetBrowserConfiguration flag is 629 // Clears the recovery cache if the static resetBrowserConfiguration flag is
628 // set. 630 // set.
629 Future<bool> resetConfiguration() { 631 Future<bool> resetConfiguration() {
630 if (!Browser.resetBrowserConfiguration) return new Future.value(true); 632 if (!Browser.resetBrowserConfiguration) return new Future.value(true);
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 812
811 Future<bool> start(String url) { 813 Future<bool> start(String url) {
812 _logEvent("Starting firefox browser on: $url"); 814 _logEvent("Starting firefox browser on: $url");
813 // Get the version and log that. 815 // Get the version and log that.
814 return Process.run(_binary, ["--version"]).then((var versionResult) { 816 return Process.run(_binary, ["--version"]).then((var versionResult) {
815 if (versionResult.exitCode != 0) { 817 if (versionResult.exitCode != 0) {
816 _logEvent("Failed to firefox get version"); 818 _logEvent("Failed to firefox get version");
817 _logEvent("Make sure $_binary is a valid program for running firefox"); 819 _logEvent("Make sure $_binary is a valid program for running firefox");
818 return new Future.value(false); 820 return new Future.value(false);
819 } 821 }
820 version = versionResult.stdout; 822 version = versionResult.stdout as String;
821 _logEvent("Got version: $version"); 823 _logEvent("Got version: $version");
822 824
823 return Directory.systemTemp.createTemp().then((userDir) { 825 return Directory.systemTemp.createTemp().then((userDir) {
824 _createPreferenceFile(userDir.path); 826 _createPreferenceFile(userDir.path);
825 _cleanup = () { 827 _cleanup = () {
826 userDir.deleteSync(recursive: true); 828 userDir.deleteSync(recursive: true);
827 }; 829 };
828 var args = [ 830 var args = [
829 "-profile", 831 "-profile",
830 "${userDir.path}", 832 "${userDir.path}",
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 /// driver page to the browsers, serves tests, and receives results and 938 /// driver page to the browsers, serves tests, and receives results and
937 /// requests back from the browsers. 939 /// requests back from the browsers.
938 class BrowserTestRunner { 940 class BrowserTestRunner {
939 static const int MAX_NEXT_TEST_TIMEOUTS = 10; 941 static const int MAX_NEXT_TEST_TIMEOUTS = 10;
940 static const Duration NEXT_TEST_TIMEOUT = const Duration(seconds: 120); 942 static const Duration NEXT_TEST_TIMEOUT = const Duration(seconds: 120);
941 static const Duration RESTART_BROWSER_INTERVAL = const Duration(seconds: 60); 943 static const Duration RESTART_BROWSER_INTERVAL = const Duration(seconds: 60);
942 944
943 /// If the queue was recently empty, don't start another browser. 945 /// If the queue was recently empty, don't start another browser.
944 static const Duration MIN_NONEMPTY_QUEUE_TIME = const Duration(seconds: 1); 946 static const Duration MIN_NONEMPTY_QUEUE_TIME = const Duration(seconds: 1);
945 947
946 final Map<String, String> configuration; 948 final Map<String, dynamic> configuration;
947 final BrowserTestingServer testingServer; 949 final BrowserTestingServer testingServer;
948 950
949 final String localIp; 951 final String localIp;
950 final String browserName; 952 final String browserName;
951 int maxNumBrowsers; 953 int maxNumBrowsers;
952 final bool checkedMode; 954 final bool checkedMode;
953 int numBrowsers = 0; 955 int numBrowsers = 0;
954 // Used to send back logs from the browser (start, stop etc) 956 // Used to send back logs from the browser (start, stop etc)
955 Function logger; 957 Function logger;
956 958
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 // When no browser is currently starting, _currentStartingBrowserId is null. 991 // When no browser is currently starting, _currentStartingBrowserId is null.
990 bool get aBrowserIsCurrentlyStarting => _currentStartingBrowserId != null; 992 bool get aBrowserIsCurrentlyStarting => _currentStartingBrowserId != null;
991 void markCurrentlyStarting(String id) { 993 void markCurrentlyStarting(String id) {
992 _currentStartingBrowserId = id; 994 _currentStartingBrowserId = id;
993 } 995 }
994 996
995 void markNotCurrentlyStarting(String id) { 997 void markNotCurrentlyStarting(String id) {
996 if (_currentStartingBrowserId == id) _currentStartingBrowserId = null; 998 if (_currentStartingBrowserId == id) _currentStartingBrowserId = null;
997 } 999 }
998 1000
999 BrowserTestRunner(Map configuration, String localIp, String browserName, 1001 BrowserTestRunner(Map<String, dynamic> configuration, String localIp,
1000 this.maxNumBrowsers) 1002 String browserName, this.maxNumBrowsers)
1001 : configuration = configuration, 1003 : configuration = configuration,
1002 localIp = localIp, 1004 localIp = localIp,
1003 browserName = (browserName == 'ff') ? 'firefox' : browserName, 1005 browserName = (browserName == 'ff') ? 'firefox' : browserName,
1004 checkedMode = configuration['checked'], 1006 checkedMode = configuration['checked'] as bool,
1005 testingServer = new BrowserTestingServer( 1007 testingServer = new BrowserTestingServer(
1006 configuration, 1008 configuration,
1007 localIp, 1009 localIp,
1008 Browser.requiresIframe(browserName), 1010 Browser.requiresIframe(browserName),
1009 Browser.requiresFocus(browserName)) { 1011 Browser.requiresFocus(browserName)) {
1010 testingServer.testRunner = this; 1012 testingServer.testRunner = this;
1011 } 1013 }
1012 1014
1013 Future start() async { 1015 Future start() async {
1014 await testingServer.start(); 1016 await testingServer.start();
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 1375
1374 TestChangedCallback testDoneCallBack; 1376 TestChangedCallback testDoneCallBack;
1375 TestChangedCallback testStatusUpdateCallBack; 1377 TestChangedCallback testStatusUpdateCallBack;
1376 TestChangedCallback testStartedCallBack; 1378 TestChangedCallback testStartedCallBack;
1377 NextTestCallback nextTestCallBack; 1379 NextTestCallback nextTestCallBack;
1378 1380
1379 BrowserTestingServer( 1381 BrowserTestingServer(
1380 this.configuration, this.localIp, this.useIframe, this.requiresFocus); 1382 this.configuration, this.localIp, this.useIframe, this.requiresFocus);
1381 1383
1382 Future start() { 1384 Future start() {
1383 var testDriverErrorPort = configuration['test_driver_error_port']; 1385 var testDriverErrorPort = configuration['test_driver_error_port'] as int;
1384 return HttpServer 1386 return HttpServer
1385 .bind(localIp, testDriverErrorPort) 1387 .bind(localIp, testDriverErrorPort)
1386 .then(setupErrorServer) 1388 .then(setupErrorServer)
1387 .then(setupDispatchingServer); 1389 .then(setupDispatchingServer);
1388 } 1390 }
1389 1391
1390 void setupErrorServer(HttpServer server) { 1392 void setupErrorServer(HttpServer server) {
1391 errorReportingServer = server; 1393 errorReportingServer = server;
1392 void errorReportingHandler(HttpRequest request) { 1394 void errorReportingHandler(HttpRequest request) {
1393 StringBuffer buffer = new StringBuffer(); 1395 StringBuffer buffer = new StringBuffer();
(...skipping 15 matching lines...) Expand all
1409 } 1411 }
1410 1412
1411 void errorHandler(e) { 1413 void errorHandler(e) {
1412 if (!underTermination) print("Error occured in httpserver: $e"); 1414 if (!underTermination) print("Error occured in httpserver: $e");
1413 } 1415 }
1414 1416
1415 errorReportingServer.listen(errorReportingHandler, onError: errorHandler); 1417 errorReportingServer.listen(errorReportingHandler, onError: errorHandler);
1416 } 1418 }
1417 1419
1418 void setupDispatchingServer(_) { 1420 void setupDispatchingServer(_) {
1419 DispatchingServer server = configuration['_servers_'].server; 1421 var server = (configuration['_servers_'] as TestingServers).server;
1420 void noCache(HttpRequest request) { 1422 void noCache(HttpRequest request) {
1421 request.response.headers 1423 request.response.headers
1422 .set("Cache-Control", "no-cache, no-store, must-revalidate"); 1424 .set("Cache-Control", "no-cache, no-store, must-revalidate");
1423 } 1425 }
1424 1426
1425 int testId(HttpRequest request) => 1427 int testId(HttpRequest request) =>
1426 int.parse(request.uri.queryParameters["id"]); 1428 int.parse(request.uri.queryParameters["id"]);
1427 String browserId(HttpRequest request, String prefix) => 1429 String browserId(HttpRequest request, String prefix) =>
1428 request.uri.path.substring(prefix.length + 1); 1430 request.uri.path.substring(prefix.length + 1);
1429 1431
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1525 return nextTest == null ? waitSignal : nextTest.toJSON(); 1527 return nextTest == null ? waitSignal : nextTest.toJSON();
1526 } 1528 }
1527 1529
1528 String getDriverUrl(String browserId) { 1530 String getDriverUrl(String browserId) {
1529 if (errorReportingServer == null) { 1531 if (errorReportingServer == null) {
1530 print("Bad browser testing server, you are not started yet. Can't " 1532 print("Bad browser testing server, you are not started yet. Can't "
1531 "produce driver url"); 1533 "produce driver url");
1532 exit(1); 1534 exit(1);
1533 // This should never happen - exit immediately; 1535 // This should never happen - exit immediately;
1534 } 1536 }
1535 var port = configuration['_servers_'].port; 1537 var port = (configuration['_servers_'] as TestingServers).port;
1536 return "http://$localIp:$port/driver/$browserId"; 1538 return "http://$localIp:$port/driver/$browserId";
1537 } 1539 }
1538 1540
1539 Future<String> getDriverPage(String browserId) async { 1541 Future<String> getDriverPage(String browserId) async {
1540 await testRunner.browserStatus[browserId].browser.onDriverPageRequested(); 1542 await testRunner.browserStatus[browserId].browser.onDriverPageRequested();
1541 var errorReportingUrl = 1543 var errorReportingUrl =
1542 "http://$localIp:${errorReportingServer.port}/$browserId"; 1544 "http://$localIp:${errorReportingServer.port}/$browserId";
1543 String driverContent = """ 1545 String driverContent = """
1544 <!DOCTYPE html><html> 1546 <!DOCTYPE html><html>
1545 <head> 1547 <head>
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1946 'exit code: ${result.exitCode}\n' 1948 'exit code: ${result.exitCode}\n'
1947 'stdout: ${result.stdout}\n' 1949 'stdout: ${result.stdout}\n'
1948 'stderr: ${result.stderr}'); 1950 'stderr: ${result.stderr}');
1949 } else { 1951 } else {
1950 print('[$message] Successfully uploaded screenshot to $storageUrl'); 1952 print('[$message] Successfully uploaded screenshot to $storageUrl');
1951 } 1953 }
1952 new File(screenshotFile).deleteSync(); 1954 new File(screenshotFile).deleteSync();
1953 } 1955 }
1954 print('--------------------------------------------------------------------'); 1956 print('--------------------------------------------------------------------');
1955 } 1957 }
OLDNEW
« no previous file with comments | « tools/testing/dart/android.dart ('k') | tools/testing/dart/co19_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698