scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
71 lines • 1.75 kB
JavaScript
import { AbsWebView } from "scriptable-abstract";
const DEFAULT_STATE = {
shouldAllowRequest: () => true
};
class MockWebView extends AbsWebView {
constructor() {
super(DEFAULT_STATE);
}
/**
* Loads HTML and renders it.
*/
static async loadHTML(html, baseURL, _preferredSize, fullscreen) {
const webView = new MockWebView();
await webView.loadHTML(html, baseURL);
await webView.present(fullscreen);
}
/**
* Loads a file and renders it.
*/
static async loadFile(fileURL, _preferredSize, fullscreen) {
const webView = new MockWebView();
await webView.loadFile(fileURL);
await webView.present(fullscreen);
}
/**
* Loads URL in web view and presents the web view.
*/
static async loadURL(url, _preferredSize, fullscreen) {
const webView = new MockWebView();
await webView.loadURL(url);
await webView.present(fullscreen);
}
get shouldAllowRequest() {
return this.state.shouldAllowRequest;
}
set shouldAllowRequest(value) {
this.setState({ shouldAllowRequest: value });
}
async loadURL(url) {
this.setState({ url });
}
async loadHTML(html, baseURL) {
this.setState({ html, baseURL });
}
async loadRequest(request) {
if (this.state.shouldAllowRequest(request)) {
this.setState({ url: request.url });
}
}
async loadFile(path) {
this.setState({ url: `file://${path}` });
}
async evaluateJavaScript(_javaScript, _useCallback) {
return null;
}
async getHTML() {
return this.state.html ?? "";
}
async getURL() {
return this.state.url ?? "";
}
present(_fullscreen) {
return Promise.resolve();
}
async waitForLoad() {
}
}
export {
MockWebView
};
//# sourceMappingURL=webview.js.map