Add CLI.yaml (#2)

This commit is contained in:
elm
2025-08-11 01:23:13 +09:00
committed by GitHub
parent 4f78327dd7
commit 56da0b606f
10 changed files with 95 additions and 22 deletions

79
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,79 @@
name: CI
on:
pull_request:
push:
jobs:
test:
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.toml') }}
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install alsa and udev
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
if: runner.os == 'linux'
- name: Build & run tests
run: |
cargo test --workspace --no-default-features
all-doc-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ubuntu-latest-cargo-all-doc-tests-${{ hashFiles('**/Cargo.toml') }}
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install alsa and udev
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
- name: Run doc tests with all features (this also compiles README examples)
run: cargo test --doc
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ubuntu-latest-cargo-lint-${{ hashFiles('**/Cargo.toml') }}
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy
- name: Install alsa and udev
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
- name: Run clippy
run: cargo clippy --workspace --all-targets --all-features -- -Dwarnings
- name: Check format
run: cargo fmt --all -- --check
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
target/
.idea/
book/
.DS_Store

View File

@@ -61,7 +61,7 @@ serde_json = { workspace = true }
raw-window-handle = "0.6"
[dev-dependencies]
bevy = { workspace = true, features = ["tonemapping_luts", "multi_threaded", "file_watcher"]}
bevy = { workspace = true, default-features = true, features = ["file_watcher"]}
bevy_cef = { workspace = true, features = ["debug"] }
[target.'cfg(target_os = "macos")'.dependencies]

View File

@@ -62,7 +62,7 @@ impl Browsers {
ipc_event_sender: Sender<IpcEventRaw>,
brp_sender: Sender<BrpMessage>,
system_cursor_icon_sender: SystemCursorIconSenderInner,
window_handle: Option<RawWindowHandle>,
_window_handle: Option<RawWindowHandle>,
) {
let mut context = Self::request_context(requester);
let size = Rc::new(Cell::new(webview_size));
@@ -70,7 +70,8 @@ impl Browsers {
Some(&WindowInfo {
windowless_rendering_enabled: true as _,
external_begin_frame_enabled: true as _,
parent_view: match window_handle {
#[cfg(target_os = "macos")]
parent_view: match _window_handle {
Some(RawWindowHandle::AppKit(handle)) => handle.ns_view.as_ptr(),
Some(RawWindowHandle::Win32(handle)) => handle.hwnd.get() as _,
Some(RawWindowHandle::Xlib(handle)) => handle.window as _,

View File

@@ -91,7 +91,9 @@ impl ImplDisplayHandler for DisplayHandlerBuilder {
fn on_cursor_change(
&self,
_browser: Option<&mut Browser>,
_cursor: *mut u8,
#[cfg(target_os = "macos")] _cursor: *mut u8,
#[cfg(target_os = "windows")] _cursor: *mut cef_dll_sys::HICON__,
#[cfg(target_os = "linux")] _cursor: u64,
type_: CursorType,
_: Option<&CursorInfo>,
) -> c_int {

View File

@@ -114,4 +114,4 @@ mod tests {
assert_eq!(responser.offset, 2);
assert_eq!(responser.end_offset, 7);
}
}
}

View File

@@ -146,20 +146,6 @@ impl ImplRenderHandler for RenderHandlerBuilder {
let _ = self.texture_sender.send_blocking(texture);
}
/// MEMO: This method only supports on Windows
///
/// In Windows, this method is more performant than `on_paint`?
#[cfg(target_os = "windows")]
fn on_accelerated_paint(
&self,
_browser: Option<&mut Browser>,
_type_: PaintElementType,
_dirty_rects_count: usize,
_dirty_rects: Option<&Rect>,
_: Option<&AcceleratedPaintInfo>,
) {
}
#[inline]
fn get_raw(&self) -> *mut sys::_cef_render_handler_t {
self.object.cast()

View File

@@ -1,10 +1,12 @@
mod browser_process;
#[cfg(target_os = "macos")]
mod debug;
mod render_process;
mod util;
pub mod prelude {
pub use crate::browser_process::*;
#[cfg(target_os = "macos")]
pub use crate::debug::*;
pub use crate::render_process::app::*;
pub use crate::render_process::brp::*;

View File

@@ -1,4 +1,4 @@
use bevy_cef_core::prelude::{DebugLibraryLoader, RenderProcessAppBuilder};
use bevy_cef_core::prelude::*;
use cef::{args::Args, *};
fn main() {

View File

@@ -2,7 +2,7 @@ use crate::RunOnMainThread;
use bevy::prelude::*;
use bevy_cef_core::prelude::*;
use cef::args::Args;
use cef::{Settings, api_hash, do_message_loop_work, execute_process, initialize, shutdown, sys};
use cef::{Settings, api_hash, execute_process, initialize, shutdown, sys};
/// Controls the CEF message loop.
///
@@ -28,6 +28,7 @@ impl Plugin for MessageLoopPlugin {
impl Default for MessageLoopPlugin {
fn default() -> Self {
#[cfg(target_os = "macos")]
let _loader = {
macos::install_cef_app_protocol();
#[cfg(all(target_os = "macos", feature = "debug"))]
@@ -84,8 +85,9 @@ impl Default for MessageLoopPlugin {
}
}
#[cfg(target_os = "macos")]
fn cef_do_message_loop_work(_: NonSend<RunOnMainThread>) {
do_message_loop_work();
cef::do_message_loop_work();
}
fn cef_shutdown(_: NonSend<RunOnMainThread>) {