blob: bf36614e38175549f9495ff635555269156d96fa [file] [log] [blame]
// Copyright (c) 2012 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.
import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
/**
* A simple timer to measure elapsed time.
*/
export class Timer {
constructor() {
/**
* The time that this Timer was created.
* @type {number}
* @private
*/
this.start_ = Date.now();
}
/**
* @return {number} The elapsed seconds since this Timer was created.
*/
getElapsedSeconds() {
return (Date.now() - this.start_) / 1000;
}
}
/**
* Requests the sync state, which is sent via onAboutInfoUpdated and
* onEntityCountsUpdated events. New events will be emitted whenever the
* state changes.
*/
export function requestDataAndRegisterForUpdates() {
chrome.send('requestDataAndRegisterForUpdates');
}
/**
* Asks the browser to send us the list of registered types. Should result
* in an onReceivedListOfTypes event being emitted.
*/
export function requestListOfTypes() {
chrome.send('requestListOfTypes');
}
/**
* Asks the browser to send us the initial state of the "include specifics"
* flag. Should result in an onReceivedIncludeSpecificsInitialState event
* being emitted.
*/
export function requestIncludeSpecificsInitialState() {
chrome.send('requestIncludeSpecificsInitialState');
}
/**
* Updates the logic sending events to the protocol logic if they should
* include specifics or not when converting to a human readable format.
*
* @param {boolean} includeSpecifics Whether protocol events include
* specifics.
*/
export function setIncludeSpecifics(includeSpecifics) {
chrome.send('setIncludeSpecifics', [includeSpecifics]);
}
/**
* Sends data to construct a user event that should be committed.
*
* @param {string} eventTimeUsec Timestamp for the new event.
* @param {string} navigationId Timestamp of linked sessions navigation.
*/
export function writeUserEvent(eventTimeUsec, navigationId) {
chrome.send('writeUserEvent', [eventTimeUsec, navigationId]);
}
/**
* Triggers a RequestStart call on the SyncService.
*/
export function requestStart() {
chrome.send('requestStart');
}
/**
* Stops the SyncService while keeping the sync data around.
*/
export function requestStopKeepData() {
chrome.send('requestStopKeepData');
}
/**
* Stops the SyncService and clears the sync data.
*/
export function requestStopClearData() {
chrome.send('requestStopClearData');
}
/**
* Triggers a GetUpdates call for all enabled datatypes.
*/
export function triggerRefresh() {
chrome.send('triggerRefresh');
}
let nodesForTest = null;
/**
* Asks the browser to send us a copy of all existing sync nodes.
* Will eventually invoke the given callback with the results.
*
* @param {function(!Object)} callback The function to call with the response.
*/
export function getAllNodes(callback) {
if (nodesForTest) {
callback(nodesForTest);
return;
}
sendWithPromise('getAllNodes').then(callback);
}
window.setAllNodesForTest = function(nodes) {
nodesForTest = nodes;
};