@@ -368,6 +368,58 @@ define(function (require, exports, module) {
368368
369369 expect ( KeyBindingManager . getKeymap ( ) ) . toEqual ( expected ) ;
370370 } ) ;
371+
372+ it ( "should handle browserOnly and nativeOnly bindings correctly" , function ( ) {
373+ // Test browser-only bindings
374+ let result = KeyBindingManager . addBinding ( "test.browser" , {
375+ key : "F6" ,
376+ browserOnly : true
377+ } ) ;
378+ let keymap = KeyBindingManager . getKeymap ( ) ;
379+ if ( Phoenix . isNativeApp ) {
380+ expect ( result ) . toBeNull ( ) ;
381+ expect ( keymap [ "F6" ] ) . not . toBeDefined ( ) ;
382+ } else {
383+ expect ( result . key ) . toBe ( "F6" ) ;
384+ expect ( keymap [ "F6" ] . key ) . toBe ( "F6" ) ;
385+ }
386+ // Test native-only bindings
387+ result = KeyBindingManager . addBinding ( "test.native" , {
388+ key : "F7" ,
389+ nativeOnly : true
390+ } ) ;
391+ keymap = KeyBindingManager . getKeymap ( ) ;
392+ if ( ! Phoenix . isNativeApp ) {
393+ expect ( result ) . toBeNull ( ) ;
394+ expect ( keymap [ "F7" ] ) . not . toBeDefined ( ) ;
395+ } else {
396+ expect ( result . key ) . toBe ( "F7" ) ;
397+ expect ( keymap [ "F7" ] . key ) . toBe ( "F7" ) ;
398+ }
399+ } ) ;
400+
401+ it ( "should handle browserOnly and nativeOnly in multiple bindings" , function ( ) {
402+ // Test browser-only bindings
403+ let result = KeyBindingManager . addBinding ( "test.allPlats" , [
404+ { key : "F6" , browserOnly : true } ,
405+ { key : "F7" , nativeOnly : true }
406+ ] ) ;
407+ let keymap = KeyBindingManager . getKeymap ( ) ;
408+ expect ( result . length ) . toBe ( 1 ) ;
409+ if ( Phoenix . isNativeApp ) {
410+ // Native app environment
411+ expect ( result [ 0 ] . key ) . toBe ( "F7" ) ; // Only native binding should be added
412+ expect ( keymap [ "F7" ] ) . toBeDefined ( ) ;
413+ expect ( keymap [ "F7" ] . key ) . toBe ( "F7" ) ;
414+ expect ( keymap [ "F6" ] ) . not . toBeDefined ( ) ; // Browser-only should not be defined
415+ } else {
416+ // Browser environment
417+ expect ( result [ 0 ] . key ) . toBe ( "F6" ) ; // Only browser binding should be added
418+ expect ( keymap [ "F6" ] ) . toBeDefined ( ) ;
419+ expect ( keymap [ "F6" ] . key ) . toBe ( "F6" ) ;
420+ expect ( keymap [ "F7" ] ) . not . toBeDefined ( ) ; // Native-only should not be defined
421+ }
422+ } ) ;
371423 } ) ;
372424
373425 describe ( "removeBinding" , function ( ) {
0 commit comments