@@ -35,6 +35,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
35
35
false
36
36
) ;
37
37
38
+ XPCOMUtils . defineLazyPreferenceGetter (
39
+ lazy ,
40
+ "agentName" ,
41
+ "browser.contentanalysis.agent_name" ,
42
+ "A DLP agent"
43
+ ) ;
44
+
38
45
/**
39
46
* A class that groups browsing contexts by their top-level one.
40
47
* This is necessary because if there may be a subframe that
@@ -251,19 +258,19 @@ export const ContentAnalysis = {
251
258
"Got dlp-request-made message for a browsingContext that already has a busy view!"
252
259
) ;
253
260
}
254
- let resourceNameOrL10NId =
255
- this . _getResourceNameOrL10NIdFromRequest ( request ) ;
261
+ let resourceNameOrOperationType =
262
+ this . _getResourceNameOrOperationTypeFromRequest ( request ) ;
256
263
this . requestTokenToRequestInfo . set ( request . requestToken , {
257
264
browsingContext,
258
- resourceNameOrL10NId ,
265
+ resourceNameOrOperationType ,
259
266
} ) ;
260
267
this . dlpBusyViewsByTopBrowsingContext . setEntry ( browsingContext , {
261
268
timer : lazy . setTimeout ( ( ) => {
262
269
this . dlpBusyViewsByTopBrowsingContext . setEntry ( browsingContext , {
263
270
notification : this . _showSlowCAMessage (
264
271
operation ,
265
272
request ,
266
- resourceNameOrL10NId ,
273
+ resourceNameOrOperationType ,
267
274
browsingContext
268
275
) ,
269
276
} ) ;
@@ -279,10 +286,9 @@ export const ContentAnalysis = {
279
286
throw new Error ( "Got dlp-response message but no request was passed" ) ;
280
287
}
281
288
282
- let windowAndResourceNameOrL10NId = this . requestTokenToRequestInfo . get (
283
- request . requestToken
284
- ) ;
285
- if ( ! windowAndResourceNameOrL10NId ) {
289
+ let windowAndResourceNameOrOperationType =
290
+ this . requestTokenToRequestInfo . get ( request . requestToken ) ;
291
+ if ( ! windowAndResourceNameOrOperationType ) {
286
292
// Perhaps this was cancelled just before the response came in from the
287
293
// DLP agent.
288
294
console . warn (
@@ -292,24 +298,24 @@ export const ContentAnalysis = {
292
298
}
293
299
this . requestTokenToRequestInfo . delete ( request . requestToken ) ;
294
300
let dlpBusyView = this . dlpBusyViewsByTopBrowsingContext . getEntry (
295
- windowAndResourceNameOrL10NId . browsingContext
301
+ windowAndResourceNameOrOperationType . browsingContext
296
302
) ;
297
303
if ( dlpBusyView ) {
298
304
this . _disconnectFromView ( dlpBusyView ) ;
299
305
this . dlpBusyViewsByTopBrowsingContext . deleteEntry (
300
- windowAndResourceNameOrL10NId . browsingContext
306
+ windowAndResourceNameOrOperationType . browsingContext
301
307
) ;
302
308
}
303
309
const responseResult =
304
310
request ?. action ?? Ci . nsIContentAnalysisResponse . eUnspecified ;
305
311
await this . _showCAResult (
306
- windowAndResourceNameOrL10NId . resourceNameOrL10NId ,
307
- windowAndResourceNameOrL10NId . browsingContext ,
312
+ windowAndResourceNameOrOperationType . resourceNameOrOperationType ,
313
+ windowAndResourceNameOrOperationType . browsingContext ,
308
314
request . requestToken ,
309
315
responseResult
310
316
) ;
311
317
this . _showAnotherPendingDialog (
312
- windowAndResourceNameOrL10NId . browsingContext
318
+ windowAndResourceNameOrOperationType . browsingContext
313
319
) ;
314
320
break ;
315
321
}
@@ -327,7 +333,7 @@ export const ContentAnalysis = {
327
333
notification : this . _showSlowCABlockingMessage (
328
334
otherBrowsingContext ,
329
335
args . requestToken ,
330
- args . resourceNameOrL10NId
336
+ args . resourceNameOrOperationType
331
337
) ,
332
338
} ) ;
333
339
}
@@ -400,39 +406,39 @@ export const ContentAnalysis = {
400
406
) ;
401
407
} ,
402
408
403
- // This function also transforms the nameOrL10NId so we won't have to
409
+ // This function also transforms the nameOrOperationType so we won't have to
404
410
// look it up again.
405
- _getResourceNameFromNameOrL10NId ( nameOrL10NId ) {
406
- if ( nameOrL10NId . name ) {
407
- return nameOrL10NId . name ;
411
+ _getResourceNameFromNameOrOperationType ( nameOrOperationType ) {
412
+ if ( ! nameOrOperationType . name ) {
413
+ let l10nId = undefined ;
414
+ switch ( nameOrOperationType . operationType ) {
415
+ case Ci . nsIContentAnalysisRequest . eClipboard :
416
+ l10nId = "contentanalysis-operationtype-clipboard" ;
417
+ break ;
418
+ case Ci . nsIContentAnalysisRequest . eDroppedText :
419
+ l10nId = "contentanalysis-operationtype-dropped-text" ;
420
+ break ;
421
+ }
422
+ if ( ! l10nId ) {
423
+ console . error (
424
+ "Unknown operationTypeForDisplay: " +
425
+ nameOrOperationType . operationType
426
+ ) ;
427
+ return "" ;
428
+ }
429
+ nameOrOperationType . name = this . l10n . formatValueSync ( l10nId ) ;
408
430
}
409
- nameOrL10NId . name = this . l10n . formatValueSync ( nameOrL10NId . l10nId ) ;
410
- return nameOrL10NId . name ;
431
+ return nameOrOperationType . name ;
411
432
} ,
412
433
413
- _getResourceNameOrL10NIdFromRequest ( aRequest ) {
434
+ _getResourceNameOrOperationTypeFromRequest ( aRequest ) {
414
435
if (
415
436
aRequest . operationTypeForDisplay ==
416
437
Ci . nsIContentAnalysisRequest . eCustomDisplayString
417
438
) {
418
439
return { name : aRequest . operationDisplayString } ;
419
440
}
420
- let l10nId ;
421
- switch ( aRequest . operationTypeForDisplay ) {
422
- case Ci . nsIContentAnalysisRequest . eClipboard :
423
- l10nId = "contentanalysis-operationtype-clipboard" ;
424
- break ;
425
- case Ci . nsIContentAnalysisRequest . eDroppedText :
426
- l10nId = "contentanalysis-operationtype-dropped-text" ;
427
- break ;
428
- }
429
- if ( ! l10nId ) {
430
- console . error (
431
- "Unknown operationTypeForDisplay: " + aRequest . operationTypeForDisplay
432
- ) ;
433
- return { name : "" } ;
434
- }
435
- return { l10nId } ;
441
+ return { operationType : aRequest . operationTypeForDisplay } ;
436
442
} ,
437
443
438
444
/**
@@ -442,14 +448,12 @@ export const ContentAnalysis = {
442
448
_showSlowCAMessage (
443
449
aOperation ,
444
450
aRequest ,
445
- aResourceNameOrL10NId ,
451
+ aResourceNameOrOperationType ,
446
452
aBrowsingContext
447
453
) {
448
454
if ( ! this . _shouldShowBlockingNotification ( aOperation ) ) {
449
455
return this . _showMessage (
450
- this . l10n . formatValueSync ( "contentanalysis-slow-agent-notification" , {
451
- content : this . _getResourceNameFromNameOrL10NId ( aResourceNameOrL10NId ) ,
452
- } ) ,
456
+ this . _getSlowDialogMessage ( aResourceNameOrOperationType ) ,
453
457
aBrowsingContext
454
458
) ;
455
459
}
@@ -471,30 +475,59 @@ export const ContentAnalysis = {
471
475
return {
472
476
requestToken : aRequest . requestToken ,
473
477
dialogBrowsingContextArgs : {
474
- resourceNameOrL10NId : aResourceNameOrL10NId ,
478
+ resourceNameOrOperationType : aResourceNameOrOperationType ,
475
479
} ,
476
480
} ;
477
481
}
478
482
479
483
return this . _showSlowCABlockingMessage (
480
484
aBrowsingContext ,
481
485
aRequest . requestToken ,
482
- aResourceNameOrL10NId
486
+ aResourceNameOrOperationType
483
487
) ;
484
488
} ,
485
489
490
+ _getSlowDialogMessage ( aResourceNameOrOperationType ) {
491
+ if ( aResourceNameOrOperationType . name ) {
492
+ return this . l10n . formatValueSync (
493
+ "contentanalysis-slow-agent-dialog-body-file" ,
494
+ {
495
+ agent : lazy . agentName ,
496
+ filename : aResourceNameOrOperationType . name ,
497
+ }
498
+ ) ;
499
+ }
500
+ let l10nId = undefined ;
501
+ switch ( aResourceNameOrOperationType . operationType ) {
502
+ case Ci . nsIContentAnalysisRequest . eClipboard :
503
+ l10nId = "contentanalysis-slow-agent-dialog-body-clipboard" ;
504
+ break ;
505
+ case Ci . nsIContentAnalysisRequest . eDroppedText :
506
+ l10nId = "contentanalysis-slow-agent-dialog-body-dropped-text" ;
507
+ break ;
508
+ }
509
+ if ( ! l10nId ) {
510
+ console . error (
511
+ "Unknown operationTypeForDisplay: " + aResourceNameOrOperationType
512
+ ) ;
513
+ return "" ;
514
+ }
515
+ return this . l10n . formatValueSync ( l10nId , {
516
+ agent : lazy . agentName ,
517
+ } ) ;
518
+ } ,
519
+
486
520
_showSlowCABlockingMessage (
487
521
aBrowsingContext ,
488
522
aRequestToken ,
489
- aResourceNameOrL10NId
523
+ aResourceNameOrOperationType
490
524
) {
525
+ let bodyMessage = this . _getSlowDialogMessage ( aResourceNameOrOperationType ) ;
491
526
let promise = Services . prompt . asyncConfirmEx (
492
527
aBrowsingContext ,
493
528
Ci . nsIPromptService . MODAL_TYPE_TAB ,
494
- this . l10n . formatValueSync ( "contentanalysis-slow-agent-dialog-title" ) ,
495
- this . l10n . formatValueSync ( "contentanalysis-slow-agent-dialog-body" , {
496
- content : this . _getResourceNameFromNameOrL10NId ( aResourceNameOrL10NId ) ,
497
- } ) ,
529
+ this . l10n . formatValueSync ( "contentanalysis-slow-agent-dialog-header" ) ,
530
+ bodyMessage ,
498
531
Ci . nsIPromptService . BUTTON_POS_0 *
499
532
Ci . nsIPromptService . BUTTON_TITLE_CANCEL +
500
533
Ci . nsIPromptService . BUTTON_POS_1_DEFAULT +
@@ -537,7 +570,7 @@ export const ContentAnalysis = {
537
570
* @returns {object } a notification object (if shown)
538
571
*/
539
572
async _showCAResult (
540
- aResourceNameOrL10NId ,
573
+ aResourceNameOrOperationType ,
541
574
aBrowsingContext ,
542
575
aRequestToken ,
543
576
aCAResult
@@ -553,8 +586,8 @@ export const ContentAnalysis = {
553
586
message = await this . l10n . formatValue (
554
587
"contentanalysis-genericresponse-message" ,
555
588
{
556
- content : this . _getResourceNameFromNameOrL10NId (
557
- aResourceNameOrL10NId
589
+ content : this . _getResourceNameFromNameOrOperationType (
590
+ aResourceNameOrOperationType
558
591
) ,
559
592
response : "REPORT_ONLY" ,
560
593
}
@@ -567,8 +600,8 @@ export const ContentAnalysis = {
567
600
Ci . nsIPromptService . MODAL_TYPE_TAB ,
568
601
await this . l10n . formatValue ( "contentanalysis-warndialogtitle" ) ,
569
602
await this . l10n . formatValue ( "contentanalysis-warndialogtext" , {
570
- content : this . _getResourceNameFromNameOrL10NId (
571
- aResourceNameOrL10NId
603
+ content : this . _getResourceNameFromNameOrOperationType (
604
+ aResourceNameOrOperationType
572
605
) ,
573
606
} ) ,
574
607
Ci . nsIPromptService . BUTTON_POS_0 *
@@ -591,13 +624,17 @@ export const ContentAnalysis = {
591
624
return null ;
592
625
case Ci . nsIContentAnalysisResponse . eBlock :
593
626
message = await this . l10n . formatValue ( "contentanalysis-block-message" , {
594
- content : this . _getResourceNameFromNameOrL10NId ( aResourceNameOrL10NId ) ,
627
+ content : this . _getResourceNameFromNameOrOperationType (
628
+ aResourceNameOrOperationType
629
+ ) ,
595
630
} ) ;
596
631
timeoutMs = this . _RESULT_NOTIFICATION_TIMEOUT_MS ;
597
632
break ;
598
633
case Ci . nsIContentAnalysisResponse . eUnspecified :
599
634
message = await this . l10n . formatValue ( "contentanalysis-error-message" , {
600
- content : this . _getResourceNameFromNameOrL10NId ( aResourceNameOrL10NId ) ,
635
+ content : this . _getResourceNameFromNameOrOperationType (
636
+ aResourceNameOrOperationType
637
+ ) ,
601
638
} ) ;
602
639
timeoutMs = this . _RESULT_NOTIFICATION_TIMEOUT_MS ;
603
640
break ;
0 commit comments