Skip to content

Commit 91e8e12

Browse files
committed
Simplify grip access
1 parent 584dc3e commit 91e8e12

File tree

5 files changed

+24
-169
lines changed

5 files changed

+24
-169
lines changed

lib/chrome/context.js

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ const { Trace, TraceError } = require("../core/trace.js").get(module.id);
1010
const { EventTarget } = require("sdk/event/target");
1111
const { Class } = require("sdk/core/heritage");
1212
const { defer } = require("sdk/core/promise");
13-
const { DomCache } = require("../dom/dom-cache.js");
1413
const { Obj } = require("../core/object.js");
1514
const { Url } = require("../core/url.js");
1615

@@ -75,27 +74,6 @@ const Context = Class(
7574
return this.chrome.getBrowserDoc();
7675
},
7776

78-
// Cache
79-
80-
getCache: function() {
81-
let deferred = defer();
82-
83-
// Use existing cache if possible.
84-
if (this.cache) {
85-
deferred.resolve(this.cache);
86-
return deferred.promise;
87-
}
88-
89-
// Initialize cache.
90-
let target = this.toolbox.target;
91-
target.activeTab.attachThread({}, (response, threadClient) => {
92-
this.cache = new DomCache(threadClient);
93-
deferred.resolve(this.cache);
94-
});
95-
96-
return deferred.promise;
97-
},
98-
9977
// Timeouts
10078

10179
// xxxHonza: all timeouts should be set/cleared through the context

lib/console/performance-timing.js

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ const { Reps } = require("../reps/reps.js");
1414
const { Dom } = require("../core/dom.js");
1515
const { Locale } = require("../core/locale.js");
1616
const { Str } = require("../core/string.js");
17-
const { DomCache } = require("../dom/dom-cache.js");
1817

1918
const { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
2019
const { Messages } = devtools["require"]("devtools/webconsole/console-output");
20+
const { GripProvider } = require("../dom/grip-provider.js");
2121

2222
const Heritage = require("sdk/core/heritage");
2323
const Simple = Messages.Simple;
@@ -47,18 +47,14 @@ function logPerformanceTiming(consoleOverlay, msg) {
4747
// Doing the log asynchronously could be too late and some other
4848
// logs could jump in.
4949

50-
let context = consoleOverlay.getContext();
51-
52-
// Get the current thread actor and render the object structure.
53-
context.getCache().then(cache => {
54-
let grip = msg.response.result;
55-
cache.getPrototypeAndProperties(grip).then(response => {
56-
let ownProperties = response.ownProperties;
57-
let timing = validateTiming(ownProperties);
58-
let result = calculateTiming(timing);
59-
let message = new PerformanceTimingMessage(result);
60-
hud.ui.output.addMessage(message);
61-
});
50+
let grip = msg.response.result;
51+
let provider = new GripProvider(target);
52+
provider.getPrototypeAndProperties(grip).then(response => {
53+
let ownProperties = response.ownProperties;
54+
let timing = validateTiming(ownProperties);
55+
let result = calculateTiming(timing);
56+
let message = new PerformanceTimingMessage(result);
57+
hud.ui.output.addMessage(message);
6258
});
6359
}
6460

lib/dom/dom-panel.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const { Str } = require("firebug.sdk/lib/core/string.js");
1818
const { Locale } = require("../core/locale.js");
1919
const { Trace, TraceError } = require("../core/trace.js").get(module.id);
2020
const { BasePanel } = require("../chrome/base-panel.js");
21+
const { GripProvider } = require("../dom/grip-provider.js");
2122

2223
// xxxHonza: part of the workaround for 1075490 (see the bottom of the file).
2324
// Use the same weird panel ID that is generated by the SDK.
@@ -150,8 +151,8 @@ const DomPanel = Class(
150151
},
151152

152153
onGetPrototypeAndProperties: function(grip) {
153-
let client = this.threadClient.pauseGrip(grip);
154-
client.getPrototypeAndProperties(response => {
154+
let provider = new GripProvider(this.toolbox.target);
155+
provider.getPrototypeAndProperties(grip).then(response => {
155156
this.postContentMessage("prototypeAndProperties",
156157
JSON.stringify(response));
157158
});

lib/dom/dom-provider.js

Lines changed: 0 additions & 101 deletions
This file was deleted.

lib/dom/dom-cache.js renamed to lib/dom/grip-provider.js

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,21 @@ module.metadata = {
66
"stability": "experimental"
77
};
88

9+
const { Cu } = require("chrome");
910
const { Trace, TraceError } = require("../core/trace.js").get(module.id);
1011
const { defer } = require("sdk/core/promise");
12+
const { ObjectClient } = Cu.import("resource://gre/modules/devtools/dbg-client.jsm", {});
1113

1214
// Implementation
13-
function DomCache(threadClient) {
14-
this.threadClient = threadClient;
15-
this.cache = new Map();
15+
16+
function GripProvider(target) {
17+
this.target = target;
1618
}
1719

1820
/**
19-
* This object is responsible for caching RDP responses an optimizing
20-
* wire data transfer.
21-
*
22-
* TODO:
23-
* 1) Make sure to clean up the cache (or specific entries) when necessary.
24-
* It might happen the properties of an object change and we need to
25-
* re-request it.
2621
*/
27-
DomCache.prototype =
28-
/** @lends DomCache */
22+
GripProvider.prototype =
23+
/** @lends GripProvider */
2924
{
3025
/**
3126
* Sends "prototypeAndProperties" packet to get properties for
@@ -34,37 +29,23 @@ DomCache.prototype =
3429
* @param {Grip} Grip object (remote reference to server side actor).
3530
*/
3631
getPrototypeAndProperties: function(grip) {
37-
Trace.sysout("domCache.getPrototypeAndProperties;", grip);
32+
Trace.sysout("GripProvider.getPrototypeAndProperties;", grip);
3833

3934
if (!grip.actor) {
40-
TraceError.sysout("domCache.getPrototypeAndProperties; no actor!", grip);
35+
TraceError.sysout("GripProvider.getPrototypeAndProperties; no actor!", grip);
4136
return;
4237
}
4338

4439
let deferred = defer();
4540

46-
// If the response is already in the cache resolve immediately.
47-
let cachedResponse = this.cache.get(grip.actor);
48-
if (cachedResponse) {
49-
Trace.sysout("domCache.getPrototypeAndProperties; " +
50-
"Response from cache:", { response: cachedResponse });
51-
52-
deferred.resolve(cachedResponse);
53-
return deferred.promise;
54-
}
55-
56-
// Fetch properties from the server side (asynchronously).
57-
let client = this.threadClient.pauseGrip(grip);
41+
let client = new ObjectClient(this.target.client, grip);
5842
client.getPrototypeAndProperties(response => {
5943
mergeProperties(response);
6044

61-
Trace.sysout("domCache.getPrototypeAndProperties; Response received:", {
45+
Trace.sysout("GripProvider.getPrototypeAndProperties; Response received:", {
6246
response: response,
6347
});
6448

65-
// Store the response in the cache.
66-
this.cache.set(grip.actor, response);
67-
6849
deferred.resolve(response);
6950
});
7051

@@ -92,4 +73,4 @@ function mergeProperties(response) {
9273
}
9374

9475
// Exports from this module
95-
exports.DomCache = DomCache;
76+
exports.GripProvider = GripProvider;

0 commit comments

Comments
 (0)