// 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. module content.mojom; import "content/public/common/appcache_info.mojom"; import "url/mojom/url.mojom"; import "services/network/public/mojom/url_loader_factory.mojom"; enum AppCacheEventID { APPCACHE_CHECKING_EVENT, APPCACHE_ERROR_EVENT, APPCACHE_NO_UPDATE_EVENT, APPCACHE_DOWNLOADING_EVENT, APPCACHE_PROGRESS_EVENT, APPCACHE_UPDATE_READY_EVENT, APPCACHE_CACHED_EVENT, APPCACHE_OBSOLETE_EVENT, }; enum AppCacheErrorReason { APPCACHE_MANIFEST_ERROR, APPCACHE_SIGNATURE_ERROR, APPCACHE_RESOURCE_ERROR, APPCACHE_CHANGED_ERROR, APPCACHE_ABORT_ERROR, APPCACHE_QUOTA_ERROR, APPCACHE_POLICY_ERROR, APPCACHE_UNKNOWN_ERROR, }; struct AppCacheResourceInfo { url.mojom.Url url; int64 size; bool is_master; bool is_manifest; bool is_intercept; bool is_fallback; bool is_foreign; bool is_explicit; int64 response_id; }; struct AppCacheErrorDetails { string message; AppCacheErrorReason reason = APPCACHE_UNKNOWN_ERROR; url.mojom.Url url; int32 status; bool is_cross_origin; }; // AppCache messages sent from the child process to the browser. interface AppCacheBackend { // Informs the browser of a new appcache host. RegisterHost(int32 host_id); // Informs the browser of an appcache host being destroyed. UnregisterHost(int32 host_id); // Informs the browser of which host caused another to be created. // This can influence which appcache should be utilized for the main // resource load into the newly created host, so it should be sent // prior to the main resource request being initiated. SetSpawningHostId(int32 host_id, int32 spawning_host_id); // Initiates the cache selection algorithm for the given host. // This is sent prior to any subresource loads. An AppCacheMsg_CacheSelected // message will be sent in response. // 'host_id' indentifies a specific document or worker // 'document_url' the url of the main resource // 'appcache_document_was_loaded_from' the id of the appcache the main // resource was loaded from or kAppCacheNoCacheId // 'opt_manifest_url' the manifest url specified in the tag if any SelectCache(int32 host_id, url.mojom.Url document_url, int64 appcache_document_was_loaded_from, url.mojom.Url opt_manifest_url); // Initiates worker specific cache selection algorithm for the given host. SelectCacheForSharedWorker(int32 host_id, int64 appcache_id); // Informs the browser of a 'foreign' entry in an appcache. MarkAsForeignEntry(int32 host_id, url.mojom.Url document_url, int64 appcache_document_was_loaded_from); // Returns the status of the appcache associated with host_id. [Sync] GetStatus(int32 host_id) => (AppCacheStatus status); // Initiates an update of the appcache associated with host_id. [Sync] StartUpdate(int32 host_id) => (bool success); // Swaps a new pending appcache, if there is one, into use for host_id. [Sync] SwapCache(int32 host_id) => (bool success); // Gets resource list from appcache synchronously. [Sync] GetResourceList(int32 host_id) => (array resources); }; // AppCache messages sent from the browser to the renderer process. interface AppCacheFrontend { // Notifies the renderer of the appcache that has been selected for a // a particular host. This is sent in reply to AppCacheHostMsg_SelectCache. CacheSelected(int32 host_id, AppCacheInfo info); // Notifies the renderer of an AppCache status change. StatusChanged(array host_ids, AppCacheStatus status); // Notifies the renderer of an AppCache event other than the // progress event which has a seperate message. EventRaised(array host_ids, AppCacheEventID event_id); // Notifies the renderer of an AppCache progress event. ProgressEventRaised(array host_ids, url.mojom.Url url, int32 total, int32 complete); // Notifies the renderer of an AppCache error event. ErrorEventRaised(array host_ids, AppCacheErrorDetails error_details); // Notifies the renderer of an AppCache logging message. LogMessage(int32 host_id, int32 log_level, string message); // Notifies the renderer of the fact that AppCache access was blocked. ContentBlocked(int32 host_id, url.mojom.Url manifest_url); // In the network service world this message sets the URLLoaderFactory to be // used for subresources. SetSubresourceFactory(int32 host_id, network.mojom.URLLoaderFactory url_loader_factory); };