From 6d212dbf0d56e3abfa641132c0aa31a5a9c038d3 Mon Sep 17 00:00:00 2001 From: "Brian R. Bondy" Date: Sun, 4 Sep 2016 01:42:37 -0400 Subject: [PATCH] Fix sending messages in hangouts on gmail Test Plan: Run the STR in the issue on both inbox.google.com and mail.google.com Fix #3703 Auditors: @bridiver --- app/siteHacks.js | 2 +- js/components/frame.js | 2 +- js/data/siteHacks.js | 11 ++++++++++- js/state/contentSettings.js | 3 +++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/siteHacks.js b/app/siteHacks.js index 05255081d98..3a60d638884 100644 --- a/app/siteHacks.js +++ b/app/siteHacks.js @@ -6,7 +6,7 @@ const URL = require('url') const Filtering = require('./filtering') -const siteHacks = require('../js/data/siteHacks') +const {siteHacks} = require('../js/data/siteHacks') const appConfig = require('../js/constants/appConfig') const resourceName = 'siteHacks' diff --git a/js/components/frame.js b/js/components/frame.js index b14e196dab1..6a68a6c7963 100644 --- a/js/components/frame.js +++ b/js/components/frame.js @@ -15,7 +15,7 @@ const FrameStateUtil = require('../state/frameStateUtil') const UrlUtil = require('../lib/urlutil') const messages = require('../constants/messages.js') const contextMenus = require('../contextMenus') -const siteHacks = require('../data/siteHacks') +const {siteHacks} = require('../data/siteHacks') const ipc = global.require('electron').ipcRenderer const clipboard = global.require('electron').clipboard const FullScreenWarning = require('./fullScreenWarning') diff --git a/js/data/siteHacks.js b/js/data/siteHacks.js index cd1f83b0536..efdb33de33a 100644 --- a/js/data/siteHacks.js +++ b/js/data/siteHacks.js @@ -20,7 +20,16 @@ const emptyDataURI = { } } -module.exports = { +/** + * Holds an array of [Primary URL, subresource URL] to allow 3rd party cookies for. + * Subresource URL can be '*' or undefined to indicate all. + */ +module.exports.cookieExceptions = [ + ['https://inbox.google.com', 'https://hangouts.google.com'], + ['https://mail.google.com', 'https://hangouts.google.com'] +] + +module.exports.siteHacks = { 'sp1.nypost.com': emptyDataURI, 'sp.nasdaq.com': emptyDataURI, 'forbes.com': { diff --git a/js/state/contentSettings.js b/js/state/contentSettings.js index 7f08c597bda..dc70e9f02d2 100644 --- a/js/state/contentSettings.js +++ b/js/state/contentSettings.js @@ -8,6 +8,7 @@ const AppConstants = require('../constants/appConstants') const appConfig = require('../constants/appConfig') const config = require('../constants/config') const settings = require('../constants/settings') +const {cookieExceptions} = require('../data/siteHacks') const {passwordManagers, defaultPasswordManager} = require('../constants/passwordManagers') const urlParse = require('url').parse const siteSettings = require('./siteSettings') @@ -137,6 +138,8 @@ const getContentSettingsFromSiteSettings = (appState) => { addContentSettings(contentSettings.cookies, hostPattern, '*', 'block') addContentSettings(contentSettings.cookies, hostPattern, parseSiteSettingsPattern(hostPattern), 'allow') addContentSettings(contentSettings.referer, hostPattern, '*', 'block') + cookieExceptions.forEach((exceptionPair) => + addContentSettings(contentSettings.cookies, exceptionPair[0], exceptionPair[1], 'allow')) } else { addContentSettings(contentSettings.cookies, hostPattern, '*', 'allow') addContentSettings(contentSettings.referer, hostPattern, '*', 'allow')