// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. 'use strict'; base.require('tracing.test_utils'); base.require('about_tracing.tracing_controller'); base.unittest.testSuite('about_tracing.tracing_controller', function() { test('loadTraceFileCompleteWithJSONfiles', function() { var callbackFired = false; var traceEventData = '[{"a":1, "b":2}]'; var tc = new about_tracing.TracingController(undefined); tc.addEventListener('loadTraceFileComplete', function(event) { callbackFired = true; }); tc.onLoadTraceFileComplete(traceEventData); assertTrue(callbackFired); assertEquals(traceEventData, tc.traceEventData); }); test('loadTraceFileCompleteWithNonJSONfiles', function() { var callbackFired = false; var tc = new about_tracing.TracingController(undefined); tc.addEventListener('loadTraceFileComplete', function(event) { callbackFired = true; }); tc.onLoadTraceFileComplete('<DOCTYPE>'); assertEquals('<DOCTYPE>', tc.traceEventData); assertTrue(callbackFired); }); function SendStub() { this.sends = []; } SendStub.prototype = { reset: function() { this.sends = []; }, send: function(msg, args) { this.sends.push({ msg: msg, args: args }); }, get numSends() { return this.sends.length; }, getMessage: function(i) { return this.sends[i].msg; }, getArgs: function(i) { return this.sends[i].args; } }; test('saveTraceFile', function() { var sendStub = new SendStub(); var tc = new about_tracing.TracingController(sendStub.send.bind(sendStub)); tc.traceEventData_ = JSON.stringify([1, 2, 3]); assertEquals(1, sendStub.numSends); assertEquals('tracingControllerInitialized', sendStub.getMessage(0)); sendStub.reset(); tc.beginSaveTraceFile(); assertEquals(1, sendStub.numSends); assertEquals('saveTraceFile', sendStub.getMessage(0)); var savedDataString = sendStub.getArgs(0)[0]; var savedData = JSON.parse(savedDataString); assertArrayEquals([1, 2, 3], savedData.traceEvents); }); });