Index: third_party/WebKit/Source/devtools/front_end/terminal/TerminalWidget.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/terminal/TerminalWidget.js b/third_party/WebKit/Source/devtools/front_end/terminal/TerminalWidget.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..895bd80742a1d2aa17fcfa2b0a24a44ff6a560cd |
--- /dev/null |
+++ b/third_party/WebKit/Source/devtools/front_end/terminal/TerminalWidget.js |
@@ -0,0 +1,78 @@ |
+// Copyright 2016 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. |
+ |
+/** |
+ * @constructor |
+ * @extends {WebInspector.VBox} |
+ */ |
+WebInspector.TerminalWidget = function() |
+{ |
+ WebInspector.VBox.call(this, false); |
+ this.registerRequiredCSS("terminal/xterm.js/build/xterm.css"); |
+ this.registerRequiredCSS("terminal/terminal.css"); |
+ WebInspector.serviceManager.lookupService("Terminal").then(this._init.bind(this)); |
+ this.element.addEventListener("mousemove", this._mouseMove.bind(this), false); |
+} |
+ |
+WebInspector.TerminalWidget.prototype = { |
+ /** |
+ * @param {?WebInspector.ServiceManager.Service} backend |
+ */ |
+ _init: function(backend) |
+ { |
+ if (!backend) { |
+ console.error("Terminal service not available."); |
dgozman
2016/09/27 19:25:48
Let's show something instead of completely white w
|
+ return; |
+ } |
+ |
+ this._backend = backend; |
+ this._term = new Terminal({ cursorBlink: true }); |
+ this._term.open(this.contentElement); |
+ this._term.on("data", data => { |
+ this._backend.send("write", { data: data }); |
+ }); |
+ this._term.on("resize", size => { |
+ this._backend.send("resize", { cols: size.cols, rows: size.rows }); |
+ }); |
+ this._backend.send("init", { colos: 80, rows: 25 }).then(result => { |
+ if (result) |
+ this._term.fit(); |
+ }); |
+ this._backend.on("data", result => { |
+ this._term.write(result.data); |
+ this._linkifyUpToDate = false; |
+ }); |
+ this._backend.on("disposed", this._disposed.bind(this)); |
+ }, |
+ |
+ _mouseMove: function() |
+ { |
+ if (this._linkifyUpToDate) |
+ return; |
+ this._term.linkify(); |
+ this._linkifyUpToDate = true; |
+ }, |
+ |
+ onResize: function() |
+ { |
+ if (this._term) |
+ this._term.fit(); |
+ }, |
+ |
+ _disposed: function() |
+ { |
+ this.contentElement.classList.add("disabled"); |
+ }, |
+ |
+ /** |
+ * @override |
+ */ |
+ wasDetachedFromHierarchy: function() |
dgozman
2016/09/27 19:25:48
Does this ever happen in the drawer?
|
+ { |
+ if (this._backend) |
+ this._backend.dispose(); |
+ }, |
+ |
+ __proto__: WebInspector.VBox.prototype |
+} |