Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit ddc760b

Browse files
committed
Merge pull request #10558 from humphd/configurable-launcher
Make LiveDevMultiBrowser's Launcher instance configurable via public set Launcher() method
2 parents f9d7d41 + 7bc69e4 commit ddc760b

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

src/LiveDevelopment/LiveDevMultiBrowser.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ define(function (require, exports, module) {
8888
LiveDevServerManager = require("LiveDevelopment/LiveDevServerManager"),
8989
NodeSocketTransport = require("LiveDevelopment/MultiBrowserImpl/transports/NodeSocketTransport"),
9090
LiveDevProtocol = require("LiveDevelopment/MultiBrowserImpl/protocol/LiveDevProtocol"),
91-
Launcher = require("LiveDevelopment/MultiBrowserImpl/launchers/Launcher");
91+
DefaultLauncher = require("LiveDevelopment/MultiBrowserImpl/launchers/Launcher");
9292

9393
// Documents
9494
var LiveCSSDocument = require("LiveDevelopment/MultiBrowserImpl/documents/LiveCSSDocument"),
@@ -114,6 +114,12 @@ define(function (require, exports, module) {
114114
* Protocol handler that provides the actual live development API on top of the current transport.
115115
*/
116116
var _protocol = LiveDevProtocol;
117+
118+
/**
119+
* @private
120+
* Current browser launcher for preview.
121+
*/
122+
var _launcher;
117123

118124
/**
119125
* @private
@@ -515,7 +521,7 @@ define(function (require, exports, module) {
515521
// open default browser
516522
// TODO: fail?
517523
//
518-
Launcher.launch(url);
524+
_launcher.launch(url);
519525
}
520526

521527
/**
@@ -789,6 +795,23 @@ define(function (require, exports, module) {
789795
_protocol.setTransport(transport);
790796
}
791797

798+
/**
799+
* Sets the current browser launcher mechanism to be used by live development
800+
* (e.g., default browser, iframe-based browser, etc.)
801+
* The launcher must provide the following method:
802+
*
803+
* - launch(url): Launch the given URL in the appropriate browser.
804+
*
805+
* @param {{launch: function(string)}} launcher
806+
*/
807+
function setLauncher(launcher) {
808+
if (!(launcher && launcher.launch)) {
809+
console.log("Invalid launcher object: ", launcher, new Error("LiveDevMultiBrowser.setLauncher()"));
810+
return;
811+
}
812+
_launcher = launcher;
813+
}
814+
792815
/**
793816
* Initialize the LiveDevelopment module.
794817
*/
@@ -804,6 +827,9 @@ define(function (require, exports, module) {
804827
// Default transport for live connection messages - can be changed
805828
setTransport(NodeSocketTransport);
806829

830+
// Default launcher for preview browser - can be changed
831+
setLauncher(DefaultLauncher);
832+
807833
// Initialize exports.status
808834
_setStatus(STATUS_INACTIVE);
809835
}
@@ -908,4 +934,5 @@ define(function (require, exports, module) {
908934
exports.getServerBaseUrl = getServerBaseUrl;
909935
exports.getCurrentProjectServerConfig = getCurrentProjectServerConfig;
910936
exports.setTransport = setTransport;
937+
exports.setLauncher = setLauncher;
911938
});

0 commit comments

Comments
 (0)