 Issue 29333043:
  Issue 3452 - Bring back $ping type option (Core changes)  (Closed)
    
  
    Issue 29333043:
  Issue 3452 - Bring back $ping type option (Core changes)  (Closed) 
  | Index: lib/contentPolicy.js | 
| =================================================================== | 
| --- a/lib/contentPolicy.js | 
| +++ b/lib/contentPolicy.js | 
| @@ -38,27 +38,27 @@ let {ElemHide} = require("elemHide"); | 
| var Policy = exports.Policy = | 
| { | 
| /** | 
| * Set of explicitly supported content types | 
| * @type Set.<string> | 
| */ | 
| contentTypes: new Set([ | 
| "OTHER", "SCRIPT", "IMAGE", "STYLESHEET", "OBJECT", "SUBDOCUMENT", "DOCUMENT", | 
| - "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT", "MEDIA", "ELEMHIDE", "POPUP", | 
| - "GENERICHIDE", "GENERICBLOCK" | 
| + "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT", "MEDIA", "PING", "ELEMHIDE", | 
| + "POPUP", "GENERICHIDE", "GENERICBLOCK" | 
| ]), | 
| /** | 
| * Set of content types that aren't associated with a visual document area | 
| * @type Set.<string> | 
| */ | 
| nonVisualTypes: new Set([ | 
| "SCRIPT", "STYLESHEET", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT", | 
| - "ELEMHIDE", "POPUP", "GENERICHIDE", "GENERICBLOCK" | 
| + "PING", "ELEMHIDE", "POPUP", "GENERICHIDE", "GENERICBLOCK" | 
| ]), | 
| /** | 
| * Map containing all schemes that should be ignored by content policy. | 
| * @type Set.<string> | 
| */ | 
| whitelistSchemes: new Set(), | 
| @@ -120,16 +120,21 @@ var Policy = exports.Policy = | 
| { | 
| return {allow, collapse, hits}; | 
| } | 
| // Ignore whitelisted schemes | 
| if (!this.isBlockableScheme(location)) | 
| return response(true, false); | 
| + // Treat navigator.sendBeacon() the same as <a ping>, it's essentially the | 
| + // same concept - merely generalized. | 
| 
Sebastian Noack
2015/12/23 13:34:45
I'm inclined to also add a note that we cannot dis
 
Wladimir Palant
2015/12/23 14:14:34
That means fairly little for Firefox - we wouldn't
 
Sebastian Noack
2015/12/23 14:18:18
Well, given that Chrome is our largest platform, I
 | 
| + if (contentType == "BEACON") | 
| + contentType = "PING"; | 
| + | 
| // Interpret unknown types as "other" | 
| if (!this.contentTypes.has(contentType)) | 
| contentType = "OTHER"; | 
| let wndLocation = frames[0].location; | 
| let docDomain = getHostname(wndLocation); | 
| let match = null; | 
| let [sitekey, sitekeyFrame] = getSitekey(frames); |