@@ -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