Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(834)

Unified Diff: chrome/browser/resources/tracing/measuring_stick.js

Issue 8359025: Tons of timeline tweaks (Closed)
Patch Set: Disable eliding due to perf issues Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/tracing/measuring_stick.js
diff --git a/chrome/browser/resources/tracing/measuring_stick.js b/chrome/browser/resources/tracing/measuring_stick.js
new file mode 100644
index 0000000000000000000000000000000000000000..022b43f1379035857d7e5f53677f5248d41a82ad
--- /dev/null
+++ b/chrome/browser/resources/tracing/measuring_stick.js
@@ -0,0 +1,50 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+cr.define('tracing', function() {
+ /**
+ * Uses an embedded iframe to measure provided elements without forcing layout
+ * on the main document.
+ * @constructor
+ * @extends {Object}
+ */
+ function MeasuringStick() {
+ var iframe = document.createElement('iframe');
+ iframe.style.cssText = 'width:100%;height:0;border:0;visibility:hidden';
+ document.body.appendChild(iframe);
+ this._doc = iframe.contentDocument;
+ this._window = iframe.contentWindow;
+ this._doc.body.style.cssText = 'padding:0;margin:0;overflow:hidden';
+
+ var stylesheets = document.querySelectorAll('link[rel=stylesheet]');
+ for (var i = 0; i < stylesheets.length; i++) {
+ var stylesheet = stylesheets[i];
+ var link = this._doc.createElement('link');
+ link.rel = 'stylesheet';
+ link.href = stylesheet.href;
+ this._doc.head.appendChild(link);
+ }
+ }
+
+ MeasuringStick.prototype = {
+ __proto__: Object.prototype,
+
+ /**
+ * Measures the provided element without forcing layout on the main
+ * document.
+ */
+ measure: function(element) {
+ this._doc.body.appendChild(element);
+ var style = this._window.getComputedStyle(element);
+ var width = parseInt(style.width, 10);
+ var height = parseInt(style.height, 10);
+ this._doc.body.removeChild(element);
+ return { width: width, height: height };
+ }
+ };
+
+ return {
+ MeasuringStick: MeasuringStick
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698