blob: 961ec8f9a60b1cf4db9d04fa3db2bc8f9c6b69b4 [file] [log] [blame]
// Copyright 2015 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.
// Send the history query immediately. This allows the query to process during
// the initial page startup.
chrome.send('queryHistory', ['', RESULTS_PER_PAGE]);
chrome.send('getForeignSessions');
/** @type {Promise} */
let upgradePromise = null;
/**
* Adding this on |window| since it is accessed by tests.
* @type {boolean}
*/
window.resultsRendered = false;
/**
* @return {!Promise} Resolves once the history-app has been fully upgraded.
*/
function waitForAppUpgrade() {
if (!upgradePromise) {
upgradePromise = new Promise(function(resolve, reject) {
if (window.Polymer && Polymer.isInstance &&
Polymer.isInstance($('history-app'))) {
resolve();
} else {
$('bundle').addEventListener('load', resolve);
}
});
}
return upgradePromise;
}
// Chrome Callbacks-------------------------------------------------------------
/**
* Our history system calls this function with results from searches.
* @param {HistoryQuery} info An object containing information about the query.
* @param {!Array<HistoryEntry>} results A list of results.
*/
function historyResult(info, results) {
waitForAppUpgrade().then(function() {
const app = /** @type {HistoryAppElement} */ ($('history-app'));
app.historyResult(info, results);
document.body.classList.remove('loading');
if (!window.resultsRendered) {
window.resultsRendered = true;
app.onFirstRender();
}
});
}
/**
* Called by the history backend after receiving results and after discovering
* the existence of other forms of browsing history.
* @param {boolean} includeOtherFormsOfBrowsingHistory Whether to include
* a sentence about the existence of other forms of browsing history.
*/
function showNotification(includeOtherFormsOfBrowsingHistory) {
waitForAppUpgrade().then(function() {
const app = /** @type {HistoryAppElement} */ ($('history-app'));
app.showSidebarFooter = includeOtherFormsOfBrowsingHistory;
});
}
/**
* Receives the synced history data. An empty list means that either there are
* no foreign sessions, or tab sync is disabled for this profile.
*
* @param {!Array<!ForeignSession>} sessionList Array of objects describing the
* sessions from other devices.
*/
function setForeignSessions(sessionList) {
waitForAppUpgrade().then(function() {
/** @type {HistoryAppElement} */ ($('history-app'))
.setForeignSessions(sessionList);
});
}
/**
* Called when the history is deleted by someone else.
*/
function historyDeleted() {
waitForAppUpgrade().then(function() {
/** @type {HistoryAppElement} */ ($('history-app')).historyDeleted();
});
}
/**
* Called by the history backend after user's sign in state changes.
* @param {boolean} isUserSignedIn Whether user is signed in or not now.
*/
function updateSignInState(isUserSignedIn) {
waitForAppUpgrade().then(function() {
if ($('history-app')) {
/** @type {HistoryAppElement} */ ($('history-app'))
.updateSignInState(isUserSignedIn);
}
});
}