File tree 2 files changed +15
-0
lines changed 2 files changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -53,6 +53,7 @@ class TouchBar extends EventEmitter {
53
53
}
54
54
55
55
let hasOtherItemsProxy = false
56
+ const idSet = new Set ( )
56
57
items . forEach ( ( item ) => {
57
58
if ( ! ( item instanceof TouchBarItem ) ) {
58
59
throw new Error ( 'Each item must be an instance of TouchBarItem' )
@@ -65,6 +66,12 @@ class TouchBar extends EventEmitter {
65
66
throw new Error ( 'Must only have one OtherItemsProxy per TouchBar' )
66
67
}
67
68
}
69
+
70
+ if ( ! idSet . has ( item . id ) ) {
71
+ idSet . add ( item . id )
72
+ } else {
73
+ throw new Error ( 'Cannot add a single instance of TouchBarItem multiple times in a TouchBar' )
74
+ }
68
75
} )
69
76
70
77
// register in separate loop after all items are validated
Original file line number Diff line number Diff line change @@ -39,6 +39,14 @@ describe('TouchBar module', () => {
39
39
} ) . to . throw ( 'Must only have one OtherItemsProxy per TouchBar' )
40
40
} )
41
41
42
+ it ( 'throws an error if the same TouchBarItem is added multiple times' , ( ) => {
43
+ expect ( ( ) => {
44
+ const item = new TouchBarLabel ( { label : 'Label' } )
45
+ const touchBar = new TouchBar ( { items : [ item , item ] } )
46
+ touchBar . toString ( )
47
+ } ) . to . throw ( 'Cannot add a single instance of TouchBarItem multiple times in a TouchBar' )
48
+ } )
49
+
42
50
describe ( 'BrowserWindow behavior' , ( ) => {
43
51
let window : BrowserWindow
44
52
You can’t perform that action at this time.
0 commit comments