blob: f6951b16e3cfde9bfb04301c12b6d8dbf43692bc [file] [log] [blame]
// Copyright 2016 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.
/**
* @typedef {{
* onlineUrl: string,
* creationTime: number,
* id: string,
* namespace: string,
* size: string,
* filePath: string,
* lastAccessTime: number,
* accessCount: number,
* isExpired: string,
* requestOrigin: string
* }}
*/
let OfflinePage;
/**
* @typedef {{
* status: string,
* onlineUrl: string,
* creationTime: number,
* id: string,
* namespace: string,
* lastAttemptTime: number,
* requestOrigin: string
* }}
*/
let SavePageRequest;
/**
* @typedef {{
* modelIsLogging: boolean,
* queueIsLogging: boolean,
* prefetchIsLogging: boolean
* }}
*/
let IsLogging;
cr.define('offlineInternals', function() {
/** @interface */
function OfflineInternalsBrowserProxy() {}
OfflineInternalsBrowserProxy.prototype = {
/**
* Gets current list of stored pages.
* @return {!Promise<!Array<OfflinePage>>} A promise firing when the
* list is fetched.
*/
getStoredPages: function() {},
/**
* Gets current offline queue requests.
* @return {!Promise<!Array<SavePageRequest>>} A promise firing when the
* request queue is fetched.
*/
getRequestQueue: function() {},
/**
* Deletes a set of pages from stored pages
* @param {!Array<string>} ids A list of page IDs to delete.
* @return {!Promise<!string>} A promise firing when the selected
* pages are deleted.
*/
deleteSelectedPages: function(ids) {},
/**
* Deletes a set of requests from the request queue
* @param {!Array<string>} ids A list of request IDs to delete.
* @return {!Promise<!string>} A promise firing when the selected
* pages are deleted.
*/
deleteSelectedRequests: function(ids) {},
/**
* Sets whether to record logs for stored pages.
* @param {boolean} shouldLog True if logging should be enabled.
*/
setRecordPageModel: function(shouldLog) {},
/**
* Sets whether to record logs for scheduled requests.
* @param {boolean} shouldLog True if logging should be enabled.
*/
setRecordRequestQueue: function(shouldLog) {},
/**
* Sets whether to record logs for prefetching.
* @param {boolean} shouldLog True if logging should be enabled.
*/
setRecordPrefetchService: function(shouldLog) {},
/**
* Gets the currently recorded logs.
* @return {!Promise<!Array<string>>} A promise firing when the
* logs are retrieved.
*/
getEventLogs: function() {},
/**
* Gets the state of logging (on/off).
* @return {!Promise<!IsLogging>} A promise firing when the state
* is retrieved.
*/
getLoggingState: function() {},
/**
* Adds the given url to the background loader queue.
* @param {string} url Url of the page to load later.
* @return {!Promise<boolean>} A promise firing after added to queue.
* Promise will return true if url has been successfully added.
*/
addToRequestQueue: function(url) {},
/**
* Gets the current network status in string form.
* @return {!Promise<string>} A promise firing when the network status
* is retrieved.
*/
getNetworkStatus: function() {},
/**
* Schedules the default NWake task. The returned Promise will reject if
* there is an error while scheduling.
* @return {!Promise<string>} A promise firing when the task has been
* scheduled.
*/
scheduleNwake: function() {},
/**
* Cancels NWake task.
* @return {!Promise} A promise firing when the task has been cancelled. The
* returned Promise will reject if there is an error.
*/
cancelNwake: function() {},
/**
* Shows the prefetching notification with an example origin.
* @return {!Promise<string>} A promise firing when the notification has
* been shown.
*/
showPrefetchNotification: function() {},
/**
* Sends and processes a request to generate page bundle.
* @param {string} urls A list of comma-separated URLs.
* @return {!Promise<string>} A string describing the result.
*/
generatePageBundle: function(urls) {},
/**
* Sends and processes a request to get operation.
* @param {string} name Name of operation.
* @return {!Promise<string>} A string describing the result.
*/
getOperation: function(name) {},
/**
* Downloads an archive.
* @param {string} name Name of archive to download.
*/
downloadArchive: function(name) {},
};
/**
* @constructor
* @implements {offlineInternals.OfflineInternalsBrowserProxy}
*/
function OfflineInternalsBrowserProxyImpl() {}
cr.addSingletonGetter(OfflineInternalsBrowserProxyImpl);
OfflineInternalsBrowserProxyImpl.prototype = {
/** @override */
getStoredPages: function() {
return cr.sendWithPromise('getStoredPages');
},
/** @override */
getRequestQueue: function() {
return cr.sendWithPromise('getRequestQueue');
},
/** @override */
deleteSelectedPages: function(ids) {
return cr.sendWithPromise('deleteSelectedPages', ids);
},
/** @override */
deleteSelectedRequests: function(ids) {
return cr.sendWithPromise('deleteSelectedRequests', ids);
},
/** @override */
setRecordPageModel: function(shouldLog) {
chrome.send('setRecordPageModel', [shouldLog]);
},
/** @override */
setRecordRequestQueue: function(shouldLog) {
chrome.send('setRecordRequestQueue', [shouldLog]);
},
/** @override */
setRecordPrefetchService: function(shouldLog) {
chrome.send('setRecordPrefetchService', [shouldLog]);
},
/** @override */
getEventLogs: function() {
return cr.sendWithPromise('getEventLogs');
},
/** @override */
getLoggingState: function() {
return cr.sendWithPromise('getLoggingState');
},
/** @override */
addToRequestQueue: function(url) {
return cr.sendWithPromise('addToRequestQueue', url);
},
/** @override */
getNetworkStatus: function() {
return cr.sendWithPromise('getNetworkStatus');
},
/** @override */
scheduleNwake: function() {
return cr.sendWithPromise('scheduleNwake');
},
/** @override */
cancelNwake: function() {
return cr.sendWithPromise('cancelNwake');
},
/** @override */
showPrefetchNotification: function() {
return cr.sendWithPromise('showPrefetchNotification');
},
/** @override */
generatePageBundle: function(urls) {
return cr.sendWithPromise('generatePageBundle', urls);
},
/** @override */
getOperation: function(name) {
return cr.sendWithPromise('getOperation', name);
},
/** @override */
downloadArchive: function(name) {
chrome.send('downloadArchive', [name]);
},
};
return {
OfflineInternalsBrowserProxy: OfflineInternalsBrowserProxy,
OfflineInternalsBrowserProxyImpl: OfflineInternalsBrowserProxyImpl
};
});