blob: 28c7c9e5166d9ea9a5247433d40acb9f73833f4c [file] [log] [blame]
// Copyright 2017 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.
goog.setTestOnly('init_test');
goog.require('mr.Init');
goog.require('mr.MockClock');
goog.require('mr.Module');
goog.require('mr.UnitTestUtils');
describe('Tests init', function() {
let mockClock;
let savedCallback;
beforeEach(function() {
mr.Module.clearForTest();
mockClock = new mr.MockClock(true);
mr.UnitTestUtils.mockChromeApi();
for (let listener of mr.Init.getAllListeners_()) {
spyOn(listener, 'addOnStartup').and.callThrough();
}
spyOn(mr.ExtensionSelector, 'shouldStart')
.and.returnValue(Promise.resolve());
spyOn(mr.MediaRouterService, 'getInstance').and.returnValue({
'mrService': jasmine.createSpyObj(
'mrService', ['setHandlers', 'onRouteMessagesReceived']),
'mrInstanceId': 'mrInstanceId',
'mrConfig': {
'enable_dial_discovery': true,
'enable_cast_discovery': true,
'enable_cast_sink_query': true,
'use_views_dialog': true
}
});
spyOn(mr.PersistentDataManager, 'initialize');
spyOn(mr.PersistentDataManager, 'register');
spyOn(mr.Init, 'getProviders_').and.returnValue([]);
savedCallback = null;
chrome.runtime.onSuspend.addListener.and.callFake(callback => {
savedCallback = callback;
});
});
afterEach(function() {
mockClock.uninstall();
mr.UnitTestUtils.restoreChromeApi();
});
it('records first wake duration after Chrome reload', function(done) {
spyOn(mr.PersistentDataManager, 'isChromeReloaded').and.returnValue(true);
mr.Init.init().then(() => {
expect(chrome.runtime.onSuspend.addListener).toHaveBeenCalled();
expect(savedCallback).not.toBeNull();
mockClock.tick(12345);
savedCallback();
expect(chrome.metricsPrivate.recordMediumTime)
.toHaveBeenCalledWith(mr.Init.FIRST_WAKE_DURATION, 12345);
done();
});
});
it('records wake duration after Chrome reload', function(done) {
spyOn(mr.PersistentDataManager, 'isChromeReloaded').and.returnValue(false);
mr.Init.init().then(() => {
expect(chrome.runtime.onSuspend.addListener).toHaveBeenCalled();
expect(savedCallback).not.toBeNull();
mockClock.tick(54321);
savedCallback();
expect(chrome.metricsPrivate.recordMediumTime)
.toHaveBeenCalledWith(mr.Init.WAKE_DURATION, 54321);
done();
});
});
it('Registers event listeners on bootstrap', function(done) {
mr.Init.init().then(done, done.fail);
for (let listener of mr.Init.getAllListeners_()) {
expect(listener.addOnStartup).toHaveBeenCalled();
}
});
});