From fe10cde282f4a17086c832dc47a670c45a794b2e Mon Sep 17 00:00:00 2001 From: yan Date: Thu, 2 Mar 2017 23:51:07 +0000 Subject: [PATCH 1/2] fix "Cannot read property 'size' of undefined" error when getting persistent state When upgrading from 0.13.4 to 0.13.5, this was causing getting persistent state to fail on startup, thereby losing session state. Fix #7466 Test Plan: 1. copy your session-store-1 from Brave 0.13.4 into the brave-development profile folder 2. npm start 3. Brave should show tabs, bookmarks, settings, etc from the 0.13.4 profile --- app/common/state/tabState.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/common/state/tabState.js b/app/common/state/tabState.js index 73ba0e78c5e..8221170444e 100644 --- a/app/common/state/tabState.js +++ b/app/common/state/tabState.js @@ -184,6 +184,9 @@ const api = { state = makeImmutable(state) let tabs = state.get('tabs') + if (!tabs) { + return state + } for (let i = 0; i < tabs.size; i++) { tabs = tabs.deleteIn([i, field]) } From 0362926837eba404bae2f62b80ae50edaed64ae3 Mon Sep 17 00:00:00 2001 From: Brian Clifton Date: Thu, 2 Mar 2017 17:15:51 -0700 Subject: [PATCH 2/2] Test to ensure tabState.removeTabField handles falsey values Auditors: @diracdeltas Test Plan: `npm run unittest -- --grep='returns the state \(unchanged\) if tabs is falsey'` --- test/unit/app/common/state/tabStateTest.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/unit/app/common/state/tabStateTest.js b/test/unit/app/common/state/tabStateTest.js index 6f0f4480e89..5b00b776fd2 100644 --- a/test/unit/app/common/state/tabStateTest.js +++ b/test/unit/app/common/state/tabStateTest.js @@ -483,6 +483,11 @@ describe('tabState unit tests', function () { const expectedAppState = defaultAppState.set('tabs', tabsWithoutField) assert.deepEqual(newAppState, expectedAppState) }) + it('returns the state (unchanged) if tabs is falsey', function () { + const emptyTabState = defaultAppState.delete('tabs') + const newAppState = tabState.removeTabField(emptyTabState, 'loginRequiredDetail') + assert.equal(newAppState, emptyTabState) + }) }) describe('getPersistentState', function () {