feat(core): enfore label uniqueness, closes #2067 (#2097)

This commit is contained in:
Lucas Fernandes Nogueira
2021-06-27 21:05:45 -03:00
committed by GitHub
parent fa06fa07e3
commit d18b5367a9
3 changed files with 13 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
---
"tauri": patch
---
Enfore uniqueness of window label.

View File

@@ -17,6 +17,9 @@ pub enum Error {
/// Failed to create window.
#[error("failed to create window")]
CreateWindow,
/// Window label must be unique.
#[error("a window with label `{0}` already exists")]
WindowLabelAlreadyExists(String),
/// Can't access webview dispatcher because the webview was closed or not found.
#[error("webview not found: invalid label or it was closed")]
WebviewNotFound,

View File

@@ -658,6 +658,11 @@ impl<P: Params> WindowManager<P> {
mut pending: PendingWindow<P>,
pending_labels: &[P::Label],
) -> crate::Result<PendingWindow<P>> {
if self.windows_lock().contains_key(&pending.label) {
return Err(crate::Error::WindowLabelAlreadyExists(
pending.label.to_string(),
));
}
let (is_local, url) = match &pending.webview_attributes.url {
WindowUrl::App(path) => {
let url = self.get_url();