Rewild Your Web
web browser dweb
at main 51 lines 1.8 kB view raw
1--- original 2+++ modified 3@@ -312,6 +312,7 @@ 4 if pref!(dom_permissions_testing_allowed_in_nonsecure_contexts) { 5 return PermissionState::Granted; 6 } 7+ println!("Not a secure context, denying permission for {:?}", feature); 8 return PermissionState::Denied; 9 } 10 11@@ -324,6 +325,10 @@ 12 // 2. If document is not allowed to use feature, return "denied". 13 if let Some(window) = global_scope.downcast::<Window>() { 14 if !window.Document().allowed_to_use_feature(feature) { 15+ println!( 16+ "Document not allowed to use feature {:?}, denying permission", 17+ feature 18+ ); 19 return PermissionState::Denied; 20 } 21 } 22@@ -354,12 +359,24 @@ 23 return PermissionState::Denied; 24 }; 25 let (sender, receiver) = generic_channel::channel().expect("Failed to create IPC channel!"); 26- global_scope.send_to_embedder(EmbedderMsg::PromptPermission( 27- webview_id, 28- name.convert(), 29- sender, 30- )); 31 32+ // For embedded webviews, use the embedder controls pattern to route through the parent 33+ if global_scope.is_embedded_webview() { 34+ if let Some(window) = global_scope.downcast::<Window>() { 35+ window 36+ .Document() 37+ .embedder_controls() 38+ .show_permission_prompt(name.convert(), sender); 39+ } 40+ } else { 41+ // For top-level webviews, send directly to embedder 42+ global_scope.send_to_embedder(EmbedderMsg::PromptPermission( 43+ webview_id, 44+ name.convert(), 45+ sender, 46+ )); 47+ } 48+ 49 match receiver.recv() { 50 Ok(AllowOrDeny::Allow) => PermissionState::Granted, 51 Ok(AllowOrDeny::Deny) => PermissionState::Denied,