mirror of
https://github.com/Drop-OSS/wry-cef.git
synced 2026-01-30 20:55:24 +01:00
141 lines
5.0 KiB
Rust
141 lines
5.0 KiB
Rust
// Copyright 2020-2023 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
fn main() -> wry::Result<()> {
|
|
use wry::{
|
|
application::{
|
|
event::{Event, StartCause, WindowEvent},
|
|
event_loop::{ControlFlow, EventLoop},
|
|
window::WindowBuilder,
|
|
},
|
|
webview::WebViewBuilder,
|
|
};
|
|
|
|
const HTML: &str = r#"
|
|
</html>
|
|
|
|
<body>
|
|
<h2>ECMAScript support list:</h2>
|
|
<ul id="summary"></ul>
|
|
<table>
|
|
<thead>
|
|
<h3>Details:<h3>
|
|
</thead>
|
|
<tbody id="table"></tbody>
|
|
</table>
|
|
</body>
|
|
<script>
|
|
var featureSupport = [
|
|
{
|
|
version: "ECMAScript 5 (2009)",
|
|
features: [
|
|
{ name: "String.trim", supported: String.prototype.trim },
|
|
{ name: "Array.isArray", supported: Array.isArray },
|
|
{ name: "Array.forEach", supported: Array.prototype.forEach },
|
|
{ name: "Array.map", supported: Array.prototype.map },
|
|
{ name: "Array.filter", supported: Array.prototype.filter },
|
|
{ name: "Array.reduce", supported: Array.prototype.reduce },
|
|
{ name: "JSON.parse", supported: JSON.parse },
|
|
{ name: "Date.now", supported: Date.now }
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 6 (2015)",
|
|
features: [
|
|
{ name: "Array.find", supported: Array.prototype.find },
|
|
{ name: "Math.trunc", supported: Math.trunc },
|
|
{ name: "Number.isInteger", supported: Number.isInteger }
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 2016",
|
|
features: [
|
|
{ name: "Array.includes", supported: Array.prototype.includes }
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 2017",
|
|
features: [
|
|
{ name: "String.padStart", supported: String.prototype.padStart },
|
|
{ name: "String.padEnd", supported: String.prototype.padEnd },
|
|
{ name: "Object.entries", supported: Object.entries },
|
|
{ name: "Object.values", supported: Object.values },
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 2018",
|
|
features: [
|
|
{ name: "Promise.finally", supported: Promise.prototype.finally }
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 2019",
|
|
features: [
|
|
{ name: "Array.flat", supported: Array.prototype.flat },
|
|
{ name: "Array.flatMap", supported: Array.prototype.flatMap },
|
|
{ name: "Object.fromEntries", supported: Object.fromEntries },
|
|
{ name: "String.trimStart", supported: String.prototype.trimStart },
|
|
{ name: "String.trimEnd", supported: String.prototype.trimEnd },
|
|
{ name: "Function.toString", supported: Function.prototype.toString }
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 2020",
|
|
features: [
|
|
{ name: "Promise.allSettled", supported: Promise.allSettled },
|
|
{ name: "String.matchAll", supported: String.prototype.matchAll }
|
|
]
|
|
},
|
|
{
|
|
version: "ECMAScript 2021",
|
|
features: [
|
|
{ name: "String.replaceAll", supported: String.prototype.replaceAll },
|
|
{ name: "Promise.any", supported: Promise.any }
|
|
]
|
|
}
|
|
];
|
|
|
|
var tableElement = document.getElementById('table');
|
|
var summaryListElement = document.getElementById('summary');
|
|
|
|
for (var i = 0; i < featureSupport.length; i++) {
|
|
var versionDetails = featureSupport[i];
|
|
var versionSupported = true;
|
|
tableElement.innerHTML += `<tr> <td style="width: 200px; font-weight: bold">${versionDetails.version}</td> </tr>`
|
|
for (var j = 0; j < versionDetails.features.length; j++) {
|
|
var feature = versionDetails.features[j];
|
|
tableElement.innerHTML += `<tr> <td style="width: 200px">${feature.name}</td> <td>${feature.supported ? '✔' : '❌'} </td> </tr>`
|
|
if (!feature.supported) versionSupported = false;
|
|
}
|
|
summaryListElement.innerHTML += `<li> ${versionDetails.version}: ${versionSupported ? '✔' : '❌'}`
|
|
}
|
|
</script>
|
|
|
|
</html>
|
|
"#;
|
|
|
|
let event_loop = EventLoop::new();
|
|
let window = WindowBuilder::new()
|
|
.with_title("Detect ECMAScript")
|
|
.build(&event_loop)
|
|
.unwrap();
|
|
let _webview = WebViewBuilder::new(window)
|
|
.unwrap()
|
|
.with_html(HTML)?
|
|
.build()?;
|
|
|
|
event_loop.run(move |event, _, control_flow| {
|
|
*control_flow = ControlFlow::Wait;
|
|
|
|
match event {
|
|
Event::NewEvents(StartCause::Init) => println!("Wry application started!"),
|
|
Event::WindowEvent {
|
|
event: WindowEvent::CloseRequested,
|
|
..
|
|
} => *control_flow = ControlFlow::Exit,
|
|
_ => (),
|
|
}
|
|
});
|
|
}
|