Skip to content
This repository has been archived by the owner on Jan 4, 2019. It is now read-only.

Commit

Permalink
Merge pull request #208 from brave/tab-update-events
Browse files Browse the repository at this point in the history
Tab update events should only fire when data has changed
  • Loading branch information
bridiver authored Jun 7, 2017
2 parents 1e79785 + 58f78f0 commit 640b396
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/browser/api/extensions.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const {app, BrowserWindow, ipcMain, webContents, session} = require('electron')
const path = require('path')
const browserActions = require('./browser-actions')
const assert = require('assert')
const deepEqual = require('../../common/deep-equal')

// List of currently active background pages by extensionId
var backgroundPages = {}
Expand Down Expand Up @@ -288,7 +289,7 @@ const chromeTabsUpdated = function (tabId) {
let changeInfo = {}

for (var key in tabValue) {
if (tabValue[key] !== oldTabInfo[key]) {
if (!deepEqual(tabValue[key], oldTabInfo[key])) {
changeInfo[key] = tabValue[key]
}
}
Expand Down
27 changes: 27 additions & 0 deletions lib/common/deep-equal.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

const deepEqual = (x, y) => {
if (typeof x !== typeof y) {
return false
}
if (typeof x !== 'object') {
return x === y
}
const xKeys = Object.keys(x)
const yKeys = Object.keys(y)
if (xKeys.length !== yKeys.length) {
return false
}
for (let prop in x) {
if (x.hasOwnProperty(prop)) {
if (!deepEqual(x[prop], y[prop])) {
return false
}
}
}
return true
}

module.exports = deepEqual

0 comments on commit 640b396

Please sign in to comment.