166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.test_utils'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('about_tracing.tracing_controller'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('about_tracing.tracing_controller', function() { 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('loadTraceFileCompleteWithJSONfiles', function() { 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var callbackFired = false; 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var traceEventData = '[{"a":1, "b":2}]'; 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tc = new about_tracing.TracingController(undefined); 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tc.addEventListener('loadTraceFileComplete', function(event) { 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis callbackFired = true; 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tc.onLoadTraceFileComplete(traceEventData); 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertTrue(callbackFired); 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(traceEventData, tc.traceEventData); 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('loadTraceFileCompleteWithNonJSONfiles', function() { 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var callbackFired = false; 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tc = new about_tracing.TracingController(undefined); 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tc.addEventListener('loadTraceFileComplete', function(event) { 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis callbackFired = true; 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tc.onLoadTraceFileComplete('<DOCTYPE>'); 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('<DOCTYPE>', tc.traceEventData); 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertTrue(callbackFired); 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis function SendStub() { 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.sends = []; 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis SendStub.prototype = { 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis reset: function() { 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.sends = []; 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis send: function(msg, args) { 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.sends.push({ 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis msg: msg, 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis args: args 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis get numSends() { 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return this.sends.length; 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis getMessage: function(i) { 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return this.sends[i].msg; 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis getArgs: function(i) { 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return this.sends[i].args; 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('saveTraceFile', function() { 6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var sendStub = new SendStub(); 6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tc = new about_tracing.TracingController(sendStub.send.bind(sendStub)); 7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tc.traceEventData_ = JSON.stringify([1, 2, 3]); 7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, sendStub.numSends); 7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('tracingControllerInitialized', sendStub.getMessage(0)); 7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis sendStub.reset(); 7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tc.beginSaveTraceFile(); 7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, sendStub.numSends); 7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('saveTraceFile', sendStub.getMessage(0)); 7966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var savedDataString = sendStub.getArgs(0)[0]; 8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var savedData = JSON.parse(savedDataString); 8166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertArrayEquals([1, 2, 3], savedData.traceEvents); 8266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 8366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 84