Bug 1147806 - Content frame filtering is confused when profiling FxOS, r=jsantell
authorVictor Porof <vporof@mozilla.com>
Thu, 26 Mar 2015 12:16:31 -0400
changeset 266185 3a604f52306d7a420add1237ff535c5dbface24e
parent 266184 54f37e45c70b1b6e0079c422049d5b9e18f5cbf2
child 266186 ad9f9f565c3947ddf871acc2392709b32ac78de2
push id830
push userraliiev@mozilla.com
push dateFri, 19 Jun 2015 19:24:37 +0000
treeherdermozilla-release@932614382a68 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjsantell
bugs1147806
milestone39.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1147806 - Content frame filtering is confused when profiling FxOS, r=jsantell
browser/devtools/performance/test/browser_profiler_tree-model-04.js
browser/devtools/shared/profiler/tree-model.js
--- a/browser/devtools/performance/test/browser_profiler_tree-model-04.js
+++ b/browser/devtools/performance/test/browser_profiler_tree-model-04.js
@@ -32,18 +32,21 @@ function test() {
   is(Object.keys(root.calls["http://A"].calls)[0], "https://E",
     "The '.A' node's only child call is correct.");
 
   is(Object.keys(root.calls["http://A"].calls["https://E"].calls).length, 1,
     "The correct number of child calls were calculated for the '.A.E' node.");
   is(Object.keys(root.calls["http://A"].calls["https://E"].calls)[0], "file://F",
     "The '.A.E' node's only child call is correct.");
 
-  is(Object.keys(root.calls["http://A"].calls["https://E"].calls["file://F"].calls).length, 0,
+  is(Object.keys(root.calls["http://A"].calls["https://E"].calls["file://F"].calls).length, 1,
     "The correct number of child calls were calculated for the '.A.E.F' node.");
+  is(Object.keys(root.calls["http://A"].calls["https://E"].calls["file://F"].calls)[0], "app://H",
+    "The '.A.E.F' node's only child call is correct.");
+
   is(Object.keys(root.calls["http://D"].calls).length, 0,
     "The correct number of child calls were calculated for the '.D' node.");
 
   finish();
 }
 
 let gSamples = [{
   time: 5,
@@ -54,25 +57,27 @@ let gSamples = [{
     { location: "http://C" }
   ]
 }, {
   time: 5 + 6,
   frames: [
     { location: "(root)" },
     { location: "chrome://A" },
     { location: "resource://B" },
+    { location: "jar:file://G" },
     { location: "http://D" }
   ]
 }, {
   time: 5 + 6 + 7,
   frames: [
     { location: "(root)" },
     { location: "http://A" },
     { location: "https://E" },
-    { location: "file://F" }
+    { location: "file://F" },
+    { location: "app://H" },
   ]
 }, {
   time: 5 + 6 + 7 + 8,
   frames: [
     { location: "(root)" },
     { location: "http://A" },
     { location: "http://B" },
     { location: "http://C" },
--- a/browser/devtools/shared/profiler/tree-model.js
+++ b/browser/devtools/shared/profiler/tree-model.js
@@ -8,18 +8,18 @@ const {Cc, Ci, Cu, Cr} = require("chrome
 loader.lazyRequireGetter(this, "Services");
 loader.lazyRequireGetter(this, "L10N",
   "devtools/shared/profiler/global", true);
 loader.lazyRequireGetter(this, "CATEGORY_MAPPINGS",
   "devtools/shared/profiler/global", true);
 loader.lazyRequireGetter(this, "CATEGORY_JIT",
   "devtools/shared/profiler/global", true);
 
-const CHROME_SCHEMES = ["chrome://", "resource://"];
-const CONTENT_SCHEMES = ["http://", "https://", "file://"];
+const CHROME_SCHEMES = ["chrome://", "resource://", "jar:file://"];
+const CONTENT_SCHEMES = ["http://", "https://", "file://", "app://"];
 
 exports.ThreadNode = ThreadNode;
 exports.FrameNode = FrameNode;
 exports.FrameNode.isContent = isContent;
 
 /**
  * A call tree for a thread. This is essentially a linkage between all frames
  * of all samples into a single tree structure, with additional information