Skip to content
This repository was archived by the owner on Feb 9, 2020. It is now read-only.

Commit 1304979

Browse files
gary-bbtford
authored andcommitted
fix(background.js) buffer de-serialized model info
After devTools was closed and reopened the jsonTree showed raw json. This was because background.js was storing the model values as a json string. Since background.js and inspectedApp now both need the de-serialized representation of the model, moving the parsing code into background.js and replacing the string model with the de-serialized representation on the message itself, thus DRYing up the code. Fixes issue #246
1 parent 392b49a commit 1304979

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

background.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var inspectedTabs = {};
55
// tabId -> buffered data
66
var data = {};
77

8-
function bufferOrForward(message, sender) {
8+
function brokerMessage(message, sender) {
99
var tabId = sender.tab.id,
1010
devToolsPort = inspectedTabs[tabId];
1111

@@ -17,7 +17,7 @@ function bufferOrForward(message, sender) {
1717
}
1818

1919
if (message !== 'refresh') {
20-
addMessageHelperProperties(tabId, message);
20+
transformMessage(tabId, message);
2121
bufferData(tabId, message);
2222
}
2323
if (devToolsPort) {
@@ -32,7 +32,7 @@ function resetState(tabId) {
3232
};
3333
}
3434

35-
function addMessageHelperProperties(tabId, message) {
35+
function transformMessage(tabId, message) {
3636
var scopes = data[tabId].scopes;
3737
var hintables = [
3838
'Controllers',
@@ -42,15 +42,20 @@ function addMessageHelperProperties(tabId, message) {
4242
];
4343
message.isHint = (hintables.indexOf(message.module) > -1);
4444

45-
if(message.event === 'scope:destroy'){
45+
if (message.event === 'scope:destroy') {
4646
message.data.subTree = getSubTree(scopes, message.data.id);
4747
}
48+
49+
if (message.event === 'model:change') {
50+
message.data.value = (typeof message.data.value === 'undefined') ?
51+
undefined : JSON.parse(message.data.value)
52+
}
4853
}
4954

5055
function getSubTree(scopes, id){
5156
var subTree = [id], scope;
52-
for(var i = 0; i < subTree.length; i++) {
53-
if(scope = scopes[subTree[i]]) {
57+
for (var i = 0; i < subTree.length; i++) {
58+
if (scope = scopes[subTree[i]]) {
5459
subTree.push.apply(subTree, scope.children);
5560
}
5661
}
@@ -80,12 +85,11 @@ function bufferData(tabId, message) {
8085
var parentScope = tabData.scopes[scope.parent];
8186
parentScope.children.splice(parentScope.children.indexOf(message.data.id), 1);
8287
}
83-
for(var i = 0; i < message.data.subTree.length; i++){
88+
for (var i = 0; i < message.data.subTree.length; i++) {
8489
delete tabData.scopes[message.data.subTree[i]];
8590
}
8691
} else if (message.event === 'model:change') {
87-
scope.models[message.data.path] = (typeof message.data.value === 'undefined') ?
88-
undefined : message.data.value;
92+
scope.models[message.data.path] = message.data.value;
8993
} else if (message.event === 'scope:link') {
9094
scope.descriptor = message.data.descriptor;
9195
}
@@ -95,7 +99,7 @@ function bufferData(tabId, message) {
9599
}
96100

97101
// context script –> background
98-
chrome.runtime.onMessage.addListener(bufferOrForward);
102+
chrome.runtime.onMessage.addListener(brokerMessage);
99103

100104
chrome.runtime.onConnect.addListener(function(devToolsPort) {
101105

panel/components/inspected-app/inspected-app.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,11 @@ function inspectedAppService($rootScope, $q) {
9595
var parentScope = scopes[scope.parent];
9696
parentScope.children.splice(parentScope.children.indexOf(message.data.id), 1);
9797
}
98-
for(var i = 0; i < message.data.subTree.length; i++){
98+
for (var i = 0; i < message.data.subTree.length; i++){
9999
delete scopes[message.data.subTree[i]];
100100
}
101101
} else if (message.event === 'model:change') {
102-
scope.models[message.data.path] = (typeof message.data.value === 'undefined') ?
103-
undefined : JSON.parse(message.data.value);
102+
scope.models[message.data.path] = message.data.value;
104103
} else if (message.event === 'scope:link') {
105104
scope.descriptor = message.data.descriptor;
106105
}

panel/components/inspected-app/inspected-app.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ describe('inspectedApp', function() {
108108
data: {
109109
id: id,
110110
path: '',
111-
value: '"jsonHere"'
111+
value: 'modelValue'
112112
}
113113
});
114114

115-
expect(inspectedApp.scopes[id].models['']).toEqual("jsonHere");
115+
expect(inspectedApp.scopes[id].models['']).toEqual('modelValue');
116116
});
117117

118118
it('should track model changes without throwing exception when values are missing', function () {

0 commit comments

Comments
 (0)