From 317f114c3aff3109a69931356cf07e4d62356a1b Mon Sep 17 00:00:00 2001 From: David Humphrey Date: Mon, 9 Feb 2015 19:07:02 -0500 Subject: [PATCH 1/2] Make LiveDevMultiBrowser's Launcher instance configurable via public setLauncher() method --- src/LiveDevelopment/LiveDevMultiBrowser.js | 30 ++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/LiveDevelopment/LiveDevMultiBrowser.js b/src/LiveDevelopment/LiveDevMultiBrowser.js index 01fac227f39..ca8e2728c10 100644 --- a/src/LiveDevelopment/LiveDevMultiBrowser.js +++ b/src/LiveDevelopment/LiveDevMultiBrowser.js @@ -87,7 +87,7 @@ define(function (require, exports, module) { LiveDevServerManager = require("LiveDevelopment/LiveDevServerManager"), NodeSocketTransport = require("LiveDevelopment/MultiBrowserImpl/transports/NodeSocketTransport"), LiveDevProtocol = require("LiveDevelopment/MultiBrowserImpl/protocol/LiveDevProtocol"), - Launcher = require("LiveDevelopment/MultiBrowserImpl/launchers/Launcher"); + DefaultLauncher = require("LiveDevelopment/MultiBrowserImpl/launchers/Launcher"); // Documents var LiveCSSDocument = require("LiveDevelopment/MultiBrowserImpl/documents/LiveCSSDocument"), @@ -113,6 +113,12 @@ define(function (require, exports, module) { * Protocol handler that provides the actual live development API on top of the current transport. */ var _protocol = LiveDevProtocol; + + /** + * @private + * Current browser launcher for preview. + */ + var _launcher; /** * @private @@ -525,7 +531,7 @@ define(function (require, exports, module) { // open default browser // TODO: fail? // - Launcher.launch(url); + _launcher.launch(url); } /** @@ -799,6 +805,22 @@ define(function (require, exports, module) { _protocol.setTransport(transport); } + /** + * Sets the current browser launcher mechanism to be used by live development + * (e.g., default browser, iframe-based browser, etc.) + * The launcher must provide the following method: + * + * - launch(url): Launch the given URL in the appropriate browser. + * + * @param {{launch: function(string)}} launcher + */ + function setLauncher(launcher) { + if (!(launcher && launcher.launch)) { + throw new Error("LiveDevMultiBrowser.setLauncher(): launcher must have `launch` method"); + } + _launcher = launcher; + } + /** * Initialize the LiveDevelopment module. */ @@ -814,6 +836,9 @@ define(function (require, exports, module) { // Default transport for live connection messages - can be changed setTransport(NodeSocketTransport); + // Default launcher for preview browser - can be changed + setLauncher(DefaultLauncher); + // Initialize exports.status _setStatus(STATUS_INACTIVE); } @@ -918,4 +943,5 @@ define(function (require, exports, module) { exports.getServerBaseUrl = getServerBaseUrl; exports.getCurrentProjectServerConfig = getCurrentProjectServerConfig; exports.setTransport = setTransport; + exports.setLauncher = setLauncher; }); From 7bc69e414ed3e509cdbf6de4cdae8910285a2050 Mon Sep 17 00:00:00 2001 From: "David Humphrey (:humph) david.humphrey@senecacollege.ca" Date: Tue, 3 Mar 2015 14:22:21 -0500 Subject: [PATCH 2/2] Fixes for review comments. --- src/LiveDevelopment/LiveDevMultiBrowser.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/LiveDevelopment/LiveDevMultiBrowser.js b/src/LiveDevelopment/LiveDevMultiBrowser.js index ca8e2728c10..9638319b74e 100644 --- a/src/LiveDevelopment/LiveDevMultiBrowser.js +++ b/src/LiveDevelopment/LiveDevMultiBrowser.js @@ -816,7 +816,8 @@ define(function (require, exports, module) { */ function setLauncher(launcher) { if (!(launcher && launcher.launch)) { - throw new Error("LiveDevMultiBrowser.setLauncher(): launcher must have `launch` method"); + console.log("Invalid launcher object: ", launcher, new Error("LiveDevMultiBrowser.setLauncher()")); + return; } _launcher = launcher; }