From e6fba422590773ba0e5a17af2a619e394f0631d3 Mon Sep 17 00:00:00 2001 From: "Brian R. Bondy" Date: Tue, 28 Mar 2017 13:36:35 -0400 Subject: [PATCH] Allow Brave extension in private tabs Fix #7912 - Main frame loads are not allowed with spanning incognito mode, so changed to split. Sync shouldn't be allowed in incognito, so disabled that. - Added handling in ledger to not log pages for private tabs. Auditors: @bridiver --- app/extensions.js | 4 ++-- app/extensions/brave/content/scripts/pageInformation.js | 5 +++++ js/about/newtab.js | 5 +++++ js/components/frame.js | 4 +++- js/stores/eventStore.js | 8 +++++++- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/extensions.js b/app/extensions.js index 5051ddecda0..d5f29d912c0 100644 --- a/app/extensions.js +++ b/app/extensions.js @@ -137,7 +137,7 @@ let generateBraveManifest = () => { web_accessible_resources: [ 'img/favicon.ico' ], - incognito: 'spanning', + incognito: 'split', key: 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAupOLMy5Fd4dCSOtjcApsAQOnuBdTs+OvBVt/3P93noIrf068x0xXkvxbn+fpigcqfNamiJ5CjGyfx9zAIs7zcHwbxjOw0Uih4SllfgtK+svNTeE0r5atMWE0xR489BvsqNuPSxYJUmW28JqhaSZ4SabYrRx114KcU6ko7hkjyPkjQa3P+chStJjIKYgu5tWBiMJp5QVLelKoM+xkY6S7efvJ8AfajxCViLGyDQPDviGr2D0VvIBob0D1ZmAoTvYOWafcNCaqaejPDybFtuLFX3pZBqfyOCyyzGhucyCmfBXJALKbhjRAqN5glNsUmGhhPK87TuGATQfVuZtenMvXMQIDAQAB' } @@ -250,7 +250,7 @@ let generateSyncManifest = () => { 48: 'img/sync-48.png', 16: 'img/sync-16.png' }, - incognito: 'spanning', + incognito: 'not_allowed', key: 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxOmBmOVzntEY6zrcrGSAyrhzL2FJt4FaP12nb899+SrV0LgpOgyqDjytuXT5IlHS74j7ZK2zTOTQy5/E9hqo6ioi1GA3PQU8E71DTaN6kW+XzP+VyZmgPoQHIxPg8jkYk/H4erfP9kMhkVOtu/XqDTqluNhOT0BvVlBpWd4unTQFWdgpCYlPrI6PsYya4FSuIDe6rCKtJABfuKFEr7U9d9MNAOJEnRS8vdBHWCuhWHqsfAaAPyKHQhnwFSFZ4eB+JznBQf7cQtB3EpOoBElyR9QvmbWFrYu87eGL5XxsojKHCrxlQ4X5ANsALa1Mdd2DHDMVqLMIiEEU42DVB0ZDewIDAQAB' } } diff --git a/app/extensions/brave/content/scripts/pageInformation.js b/app/extensions/brave/content/scripts/pageInformation.js index 700da68f0ef..2aca83bcf9c 100644 --- a/app/extensions/brave/content/scripts/pageInformation.js +++ b/app/extensions/brave/content/scripts/pageInformation.js @@ -129,6 +129,11 @@ if (window.top !== window.self) return + // Don't allow ledger to run in incognito + if (chrome.extension.inIncognitoContext) { + return + } + var results = { timestamp: new Date().getTime(), protocol: document.location.protocol } var node = document.head.querySelector("link[rel='icon']") diff --git a/js/about/newtab.js b/js/about/newtab.js index 6ab17b2772d..6097cde692e 100644 --- a/js/about/newtab.js +++ b/js/about/newtab.js @@ -234,6 +234,11 @@ class NewTabPage extends React.Component { if (this.state.showEmptyPage) { return
} + + if (window.chrome.extension.inIncognitoContext) { + return
+ } + // don't render until object is found if (!this.state.newTabData) { return null diff --git a/js/components/frame.js b/js/components/frame.js index d32ddef1a22..fe2f90c667b 100644 --- a/js/components/frame.js +++ b/js/components/frame.js @@ -166,7 +166,9 @@ class Frame extends ImmutableComponent { prevProps.adblockCount !== this.props.adblockCount || prevProps.httpsUpgradedCount !== this.props.httpsUpgradedCount || !Immutable.is(prevProps.newTabDetail, this.props.newTabDetail)) { - const showEmptyPage = getSetting(settings.NEWTAB_MODE) === newTabMode.EMPTY_NEW_TAB + const showEmptyPage = getSetting(settings.NEWTAB_MODE) === newTabMode.EMPTY_NEW_TAB || + // TODO: This can be removed once we're on muon 2.57.8 or above + this.props.isPrivate const showImages = getSetting(settings.SHOW_DASHBOARD_IMAGES) && !showEmptyPage this.webview.send(messages.NEWTAB_DATA_UPDATED, { showEmptyPage, diff --git a/js/stores/eventStore.js b/js/stores/eventStore.js index 5b441281be8..27face354dd 100644 --- a/js/stores/eventStore.js +++ b/js/stores/eventStore.js @@ -9,6 +9,7 @@ const EventEmitter = require('events').EventEmitter const Immutable = require('immutable') const windowConstants = require('../constants/windowConstants') const debounce = require('../lib/debounce') +const tabs = require('../../app/browser/tabs') const {isSourceAboutUrl} = require('../lib/appUrlUtil') const {responseHasContent} = require('../../app/common/lib/httpUtil') @@ -48,7 +49,12 @@ let lastActivePageUrl = null let lastActiveTabId = null const addPageView = (url, tabId) => { - if (url && isSourceAboutUrl(url)) { + const tab = tabs.getWebContents(tabId) + const isPrivate = !tab || + tab.isDestroyed() || + !tab.session.partition.startsWith('persist:') + + if (url && isSourceAboutUrl(url) || isPrivate) { url = null }