- CacheResolverClient/SpkiPinning: resolve component downloads through os.pawlet.cache's IPawletCacheService when available (SPKI-pinned), falling back to the origin URL otherwise. sepolicy domain (bg_upd.te, seapp_contexts) for the new binder client + apps.php dispatcher. - PolicyReader: read the policy PawletProfiled/pawletprofiled's software-update MDM payload handler writes to /data/system/pawletos/software_update_policy.json (previously unread on either platform). Wired into the scheduled JobService and UpdateExecutor: autoCheck=false skips the periodic check outright; autoDownload/ autoInstall=false stages found updates instead of silently installing them; deferDays holds a staged update until it's been pending that long (new pending_first_seen_at column, DB v2 -> v3). Explicit user/MDM- triggered checks and installs are unaffected — the policy only throttles the automatic path, matching the payload's own field names.
30 lines
1.2 KiB
Plaintext
30 lines
1.2 KiB
Plaintext
/*
|
|
* SPDX-FileCopyrightText: oxmc / PawletOS
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
package pawletos.bgupd;
|
|
|
|
import pawletos.bgupd.IUpdateCallback;
|
|
import pawletos.bgupd.ComponentStatus;
|
|
import pawletos.bgupd.UpdateParams;
|
|
|
|
interface IBgUpdaterService {
|
|
// Immediate, user-triggered (e.g. settings toggle changing WebView provider)
|
|
void requestComponentUpdate(String componentId, in @nullable UpdateParams params, IUpdateCallback callback);
|
|
|
|
// Query current state without forcing a network check
|
|
ComponentStatus getComponentStatus(String componentId);
|
|
List<ComponentStatus> getAllComponentStatus();
|
|
|
|
// Explicit user actions from the PawletOS settings addon
|
|
void setPreferredProvider(String componentId, String providerId);
|
|
void deleteDisabledProvider(String componentId, String providerId, IUpdateCallback callback);
|
|
|
|
// Manual "check now" button, separate from the scheduled job
|
|
void forceCheckAll(IUpdateCallback callback);
|
|
|
|
// Installs a staged update for an "install_mode": "manual" component
|
|
// (ComponentStatus.updateAvailable == true). No-op via onFailure if nothing is pending.
|
|
void installPendingUpdate(String componentId, IUpdateCallback callback);
|
|
}
|