From b347a96f2a923d2b08e677d0d1d075236be872c4 Mon Sep 17 00:00:00 2001 From: Anthony Tseng Date: Mon, 3 Oct 2016 11:39:38 -0400 Subject: [PATCH] Using temporarySiteSettings to store private tab preferences fix #4468 Auditors: @bbondy, @bridiver Test Plan: Test bravery panel, site permissions, mixed content, flash in private tabs and the preferences should not write to disk and affect regular tabs --- js/components/braveryPanel.js | 5 +- js/components/frame.js | 6 +-- js/components/main.js | 9 ++-- js/components/siteInfo.js | 4 -- js/state/contentSettings.js | 94 ++++++++++++++++++----------------- 5 files changed, 60 insertions(+), 58 deletions(-) diff --git a/js/components/braveryPanel.js b/js/components/braveryPanel.js index 06bf0a25492..206c76dbdf0 100644 --- a/js/components/braveryPanel.js +++ b/js/components/braveryPanel.js @@ -75,6 +75,9 @@ class BraveryPanel extends ImmutableComponent { get isFpShown () { return this.props.braveryPanelDetail.get('expandFp') } + get isPrivate () { + return this.props.frameProps.getIn(['isPrivate']) + } get redirectedResources () { return this.props.frameProps.get('httpsEverywhere') } @@ -144,7 +147,7 @@ class BraveryPanel extends ImmutableComponent { if (setting !== 'noScript' && (parsedUrl.protocol === 'https:' || parsedUrl.protocol === 'http:')) { ruleKey = `https?://${parsedUrl.host}` } - appActions.changeSiteSetting(ruleKey, setting, e.target.value) + appActions.changeSiteSetting(ruleKey, setting, e.target.value, this.isPrivate) this.onReload() } get displayHost () { diff --git a/js/components/frame.js b/js/components/frame.js index c9e5fb63d06..e0cf9327ac5 100644 --- a/js/components/frame.js +++ b/js/components/frame.js @@ -210,11 +210,11 @@ class Frame extends ImmutableComponent { } if (typeof activeSiteSettings.get('flash') === 'number') { if (activeSiteSettings.get('flash') < Date.now()) { - appActions.removeSiteSetting(origin, 'flash') + appActions.removeSiteSetting(origin, 'flash', this.props.isPrivate) } } if (activeSiteSettings.get('noScript') === 0) { - appActions.removeSiteSetting(origin, 'noScript') + appActions.removeSiteSetting(origin, 'noScript', this.props.isPrivate) } } @@ -314,7 +314,7 @@ class Frame extends ImmutableComponent { get zoomLevel () { const zoom = this.props.frameSiteSettings && this.props.frameSiteSettings.get('zoomLevel') - appActions.removeSiteSetting(this.origin, 'zoomLevel') + appActions.removeSiteSetting(this.origin, 'zoomLevel', this.props.isPrivate) return zoom } diff --git a/js/components/main.js b/js/components/main.js index c6571783102..69a1a226e72 100644 --- a/js/components/main.js +++ b/js/components/main.js @@ -715,6 +715,10 @@ class Main extends ImmutableComponent { } get allSiteSettings () { + const activeFrame = FrameStateUtil.getActiveFrame(this.props.windowState) + if (activeFrame && activeFrame.get('isPrivate')) { + return this.props.appState.get('temporarySiteSettings') + } return this.props.appState.get('siteSettings') } @@ -741,11 +745,6 @@ class Main extends ImmutableComponent { } get braveShieldsDisabled () { - const activeFrame = FrameStateUtil.getActiveFrame(this.props.windowState) - if (activeFrame && activeFrame.get('isPrivate')) { - return true - } - const activeRequestedLocation = this.activeRequestedLocation if (!activeRequestedLocation) { return true diff --git a/js/components/siteInfo.js b/js/components/siteInfo.js index 66cb1056703..428c74ccd83 100644 --- a/js/components/siteInfo.js +++ b/js/components/siteInfo.js @@ -101,10 +101,6 @@ class SiteInfo extends ImmutableComponent { } - // Disable in private mode for now - if (this.isPrivate) { - runInsecureContentInfo = null - } return