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

Unified Diff: src/site/samples/searchable_list/example/packages/unittest/test_controller.js

Issue 1387723002: Updating the samples page to reflect the examples that have been retired. (Closed) Base URL: https://github.com/dart-lang/www.dartlang.org.git@master
Patch Set: Created 5 years, 2 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: src/site/samples/searchable_list/example/packages/unittest/test_controller.js
diff --git a/src/site/samples/searchable_list/example/packages/unittest/test_controller.js b/src/site/samples/searchable_list/example/packages/unittest/test_controller.js
deleted file mode 100644
index e952aaffa08f70b636f317474627ab34fe45a4ee..0000000000000000000000000000000000000000
--- a/src/site/samples/searchable_list/example/packages/unittest/test_controller.js
+++ /dev/null
@@ -1,318 +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.
-
-/*
- * The communication protocol between test_controller.js and the driving
- * page are JSON encoded messages of the following form:
- * message = {
- * is_first_message: true/false,
- * is_status_update: true/false,
- * is_done: true/false,
- * message: message_content,
- * }
- *
- * The first message should have [is_first_message] set, the last message
- * should have [is_done] set. Status updates should have [is_status_update] set.
- *
- * The [message_content] can be be any content. In our case it will a list of
- * events encoded in JSON. See the next comment further down about what an event
- * is.
- */
-
-/*
- * We will collect testing driver specific events here instead of printing
- * them to the DOM.
- * Every entry will look like this:
- * {
- * 'type' : 'sync_exception' / 'window_onerror' / 'script_onerror' / 'print'
- * 'window_compilationerror' / 'message_received' / 'dom' / 'debug'
- * 'value' : 'some content',
- * 'timestamp' : TimestampInMs,
- * }
- */
-var recordedEventList = [];
-var timestampOfFirstEvent = null;
-
-var STATUS_UPDATE_INTERVALL = 10000;
-
-function getCurrentTimestamp() {
- if (timestampOfFirstEvent == null) {
- timestampOfFirstEvent = new Date().getTime();
- }
- return (new Date().getTime() - timestampOfFirstEvent) / 1000.0;
-}
-
-function stringifyEvent(event) {
- return JSON.stringify(event, null, 2);
-}
-
-function recordEvent(type, value) {
- var event = {
- type: type,
- value: value,
- timestamp: getCurrentTimestamp()
- };
- recordedEventList.push(event);
- printToConsole(stringifyEvent(event));
-}
-
-function clearConsole() {
- // Clear the console before every test run - this is Firebug specific code.
- if (typeof console == 'object' && typeof console.clear == 'function') {
- console.clear();
- }
-}
-
-function printToDOM(message) {
- var pre = document.createElement('pre');
- pre.appendChild(document.createTextNode(String(message)));
- document.body.appendChild(pre);
- document.body.appendChild(document.createTextNode('\n'));
-}
-
-function printToConsole(message) {
- var consoleAvailable = typeof console === 'object';
-
- if (consoleAvailable) {
- console.log(message);
- }
-}
-
-clearConsole();
-
-// Some tests may expect and have no way to suppress global errors.
-var testExpectsGlobalError = false;
-var testSuppressedGlobalErrors = [];
-
-// Set window onerror to make sure that we catch test harness errors across all
-// browsers.
-window.onerror = function (message, url, lineNumber) {
- if (url) {
- message = ('window.onerror called: \n\n' +
- url + ':' + lineNumber + ':\n' + message + '\n\n');
- }
- if (testExpectsGlobalError) {
- testSuppressedGlobalErrors.push({
- message: message
- });
- return;
- }
- recordEvent('window_onerror', message);
- notifyDone('FAIL');
-};
-
-// testRunner is provided by content shell.
-// It is not available in browser tests.
-var testRunner = window.testRunner || window.layoutTestController;
-var isContentShell = testRunner;
-
-var waitForDone = false;
-
-var driverWindowCached = false;
-var driverWindow;
-var reportingDriverWindowError = false;
-
-// Returns the driving window object if available
-// This function occasionally returns null instead of the
-// parent on Android content shell, so we cache the value
-// to get a consistent answer.
-function getDriverWindow() {
- if (window != window.parent) {
- // We're running in an iframe.
- result = window.parent;
- } else if (window.opener) {
- // We were opened by another window.
- result = window.opener;
- } else {
- result = null;
- }
- if (driverWindowCached) {
- if (result != driverWindow) {
- recordEvent('debug', 'Driver windows changed: was null == ' +
- (driverWindow == null) + ', is null == ' + (result == null));
- // notifyDone calls back into this function multiple times. Avoid loop.
- if (!reportingDriverWindowError) {
- reportingDriverWindowError = true;
- notifyDone('FAIL');
- }
- }
- } else {
- driverWindowCached = true;
- driverWindow = result;
- }
- return driverWindow;
-}
-
-function usingBrowserController() {
- return getDriverWindow() != null;
-}
-
-function buildDomEvent() {
- return {
- type: 'dom',
- value: '' + window.document.documentElement.innerHTML,
- timestamp: getCurrentTimestamp()
- };
-}
-
-function notifyUpdate(testOutcome, isFirstMessage, isStatusUpdate, isDone) {
- // If we are not using the browser controller (e.g. in the none-drt
- // configuration), we need to print 'testOutcome' as it is.
- if (isDone && !usingBrowserController()) {
- if (isContentShell) {
- // We need this, since test.dart is looking for 'FAIL\n', 'PASS\n' in the
- // DOM output of content shell.
- printToDOM(testOutcome);
- } else {
- printToConsole('Test outcome: ' + testOutcome);
- }
- } else if (usingBrowserController()) {
- // To support in browser launching of tests we post back start and result
- // messages to the window.opener.
- var driver = getDriverWindow();
-
- recordEvent('debug', 'Sending events to driver page (isFirstMessage = ' +
- isFirstMessage + ', isStatusUpdate = ' +
- isStatusUpdate + ', isDone = ' + isDone + ')');
- // Post the DOM and all events that happened.
- var events = recordedEventList.slice(0);
- events.push(buildDomEvent());
-
- var message = JSON.stringify(events);
- driver.postMessage(
- JSON.stringify({
- message: message,
- is_first_message: isFirstMessage,
- is_status_update: isStatusUpdate,
- is_done: isDone
- }), '*');
- }
- if (isDone) {
- if (testRunner) testRunner.notifyDone();
- }
-}
-
-function notifyDone(testOutcome) {
- notifyUpdate(testOutcome, false, false, true);
-}
-
-// Repeatedly send back the current status of this test.
-function sendStatusUpdate(isFirstMessage) {
- notifyUpdate('', isFirstMessage, true, false);
- setTimeout(function() {sendStatusUpdate(false)}, STATUS_UPDATE_INTERVALL);
-}
-
-// We call notifyStart here to notify the encapsulating browser.
-recordEvent('debug', 'test_controller.js started');
-sendStatusUpdate(true);
-
-function processMessage(msg) {
- // Filter out ShadowDOM polyfill messages which are random floats.
- if (msg != parseFloat(msg)) {
- recordEvent('message_received', '' + msg);
- }
- if (typeof msg != 'string') return;
- if (msg == 'unittest-suite-wait-for-done') {
- waitForDone = true;
- if (testRunner) {
- testRunner.startedDartTest = true;
- }
- } else if (msg == 'dart-calling-main') {
- if (testRunner) {
- testRunner.startedDartTest = true;
- }
- } else if (msg == 'dart-main-done') {
- if (!waitForDone) {
- notifyDone('PASS');
- }
- } else if (msg == 'unittest-suite-success' ||
- msg == 'unittest-suite-done') {
- notifyDone('PASS');
- } else if (msg == 'unittest-suite-fail') {
- notifyDone('FAIL');
- }
-}
-
-function onReceive(e) {
- processMessage(e.data);
-}
-
-if (testRunner) {
- testRunner.dumpAsText();
- testRunner.waitUntilDone();
-}
-window.addEventListener('message', onReceive, false);
-
-function onLoad(e) {
- // needed for dartium compilation errors.
- if (window.compilationError) {
- recordEvent('window_compilationerror',
- 'DOMContentLoaded event: window.compilationError = ' +
- calledwindow.compilationError);
- notifyDone('FAIL');
- }
-}
-
-window.addEventListener('DOMContentLoaded', onLoad, false);
-
-// Note: before renaming this function, note that it is also included in an
-// inlined error handler in generated HTML files, and manually in tests that
-// include an HTML file.
-// See: tools/testing/dart/browser_test.dart
-function scriptTagOnErrorCallback(e) {
- var message = e && e.message;
- recordEvent('script_onerror', 'script.onError called: ' + message);
- notifyDone('FAIL');
-}
-
-// dart2js will generate code to call this function to handle the Dart
-// [print] method.
-//
-// dartium will invoke this method for [print] calls if the environment variable
-// "DART_FORWARDING_PRINT" was set when launching dartium.
-//
-// Our tests will be wrapped, so we can detect when [main] is called and when
-// it has ended.
-// The wrapping happens either via "dartMainRunner" (for dart2js) or wrapped
-// tests for dartium.
-//
-// The following messages are handled specially:
-// dart-calling-main: signals that the dart [main] function will be invoked
-// dart-main-done: signals that the dart [main] function has finished
-// unittest-suite-wait-for-done: signals the start of an asynchronous test
-// unittest-suite-success: signals the end of an asynchrounous test
-// unittest-suite-fail: signals that the asynchronous test failed
-// unittest-suite-done: signals the end of an asynchronous test, the outcome
-// is unknown
-//
-// These messages are used to communicate with the test and will be posted so
-// [processMessage] above can see it.
-function dartPrint(message) {
- recordEvent('print', message);
- if ((message === 'unittest-suite-wait-for-done') ||
- (message === 'unittest-suite-success') ||
- (message === 'unittest-suite-fail') ||
- (message === 'unittest-suite-done') ||
- (message === 'dart-calling-main') ||
- (message === 'dart-main-done')) {
- // We have to do this asynchronously, in case error messages are
- // already in the message queue.
- window.postMessage(message, '*');
- return;
- }
-}
-
-// dart2js will generate code to call this function instead of calling
-// Dart [main] directly. The argument is a closure that invokes main.
-function dartMainRunner(main) {
- dartPrint('dart-calling-main');
- try {
- main();
- } catch (e) {
- recordEvent('sync_exception', 'Exception: ' + e + '\nStack: ' + e.stack);
- notifyDone('FAIL');
- return;
- }
- dartPrint('dart-main-done');
-}

Powered by Google App Engine
This is Rietveld 408576698