diff --git a/services/ui/launcher/BUILD.gn b/services/ui/launcher/BUILD.gn
index 289104e..4b37039 100644
--- a/services/ui/launcher/BUILD.gn
+++ b/services/ui/launcher/BUILD.gn
@@ -50,4 +50,6 @@
   sources = [
     "launcher.mojom",
   ]
+
+  import_dirs = [ get_path_info("../../../mojo/services", "abspath") ]
 }
diff --git a/services/ui/launcher/launch_instance.cc b/services/ui/launcher/launch_instance.cc
index 9c65fcd..ce3149e 100644
--- a/services/ui/launcher/launch_instance.cc
+++ b/services/ui/launcher/launch_instance.cc
@@ -12,18 +12,19 @@
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_impl.h"
 #include "mojo/public/cpp/application/connect.h"
-#include "mojo/services/ui/views/interfaces/view_provider.mojom.h"
 #include "services/ui/launcher/launcher_view_tree.h"
 
 namespace launcher {
 
 LaunchInstance::LaunchInstance(mojo::ApplicationImpl* app_impl,
-                               const std::string& app_url,
+                               mojo::NativeViewportPtr viewport,
+                               mojo::ui::ViewProviderPtr view_provider,
                                mojo::gfx::composition::Compositor* compositor,
                                mojo::ui::ViewManager* view_manager,
                                const base::Closure& shutdown_callback)
     : app_impl_(app_impl),
-      app_url_(app_url),
+      viewport_(viewport.Pass()),
+      view_provider_(view_provider.Pass()),
       compositor_(compositor),
       view_manager_(view_manager),
       shutdown_callback_(shutdown_callback),
@@ -32,21 +33,15 @@
 LaunchInstance::~LaunchInstance() {}
 
 void LaunchInstance::Launch() {
-  DVLOG(1) << "Launching " << app_url_;
   TRACE_EVENT0("launcher", __func__);
 
   InitViewport();
 
-  mojo::ui::ViewProviderPtr client_view_provider;
-  mojo::ConnectToService(app_impl_->shell(), app_url_,
-                         GetProxy(&client_view_provider));
-
-  client_view_provider->CreateView(GetProxy(&client_view_owner_), nullptr);
+  view_provider_->CreateView(GetProxy(&client_view_owner_), nullptr);
+  view_provider_.reset();
 }
 
 void LaunchInstance::InitViewport() {
-  mojo::ConnectToService(app_impl_->shell(), "mojo:native_viewport_service",
-                         GetProxy(&viewport_));
   viewport_.set_connection_error_handler(base::Bind(
       &LaunchInstance::OnViewportConnectionError, base::Unretained(this)));
 
diff --git a/services/ui/launcher/launch_instance.h b/services/ui/launcher/launch_instance.h
index 6a9c71b..9e63db0 100644
--- a/services/ui/launcher/launch_instance.h
+++ b/services/ui/launcher/launch_instance.h
@@ -15,6 +15,7 @@
 #include "mojo/services/native_viewport/interfaces/native_viewport.mojom.h"
 #include "mojo/services/native_viewport/interfaces/native_viewport_event_dispatcher.mojom.h"
 #include "mojo/services/ui/views/interfaces/view_manager.mojom.h"
+#include "mojo/services/ui/views/interfaces/view_provider.mojom.h"
 
 namespace launcher {
 
@@ -23,7 +24,8 @@
 class LaunchInstance : public mojo::NativeViewportEventDispatcher {
  public:
   LaunchInstance(mojo::ApplicationImpl* app_impl,
-                 const std::string& app_url,
+                 mojo::NativeViewportPtr viewport,
+                 mojo::ui::ViewProviderPtr view_provider,
                  mojo::gfx::composition::Compositor* compositor,
                  mojo::ui::ViewManager* view_manager,
                  const base::Closure& shutdown_callback);
@@ -43,13 +45,13 @@
   void RequestUpdatedViewportMetrics();
 
   mojo::ApplicationImpl* app_impl_;
-  std::string app_url_;
+  mojo::NativeViewportPtr viewport_;
+  mojo::ui::ViewProviderPtr view_provider_;
 
   mojo::gfx::composition::Compositor* compositor_;
   mojo::ui::ViewManager* view_manager_;
   base::Closure shutdown_callback_;
 
-  mojo::NativeViewportPtr viewport_;
   mojo::Binding<NativeViewportEventDispatcher>
       viewport_event_dispatcher_binding_;
 
diff --git a/services/ui/launcher/launcher.mojom b/services/ui/launcher/launcher.mojom
index 2303732..ae25ad0 100644
--- a/services/ui/launcher/launcher.mojom
+++ b/services/ui/launcher/launcher.mojom
@@ -4,9 +4,16 @@
 
 module launcher;
 
+import "mojo/services/native_viewport/interfaces/native_viewport.mojom";
+import "mojo/services/ui/views/interfaces/view_provider.mojom";
+
 // Private interface for the shell. Allows the shell to start an ui
 // application.
 [ServiceName="launcher::Launcher"]
 interface Launcher {
   Launch(string application_url);
+  // Displays the view provided by |view_provider| in the provided |viewport|.
+  // Used by https://manganese.googlesource.com/.
+  LaunchOnViewport(mojo.NativeViewport viewport,
+                   mojo.ui.ViewProvider view_provider);
 };
diff --git a/services/ui/launcher/launcher_app.cc b/services/ui/launcher/launcher_app.cc
index c231ce6..b29f831 100644
--- a/services/ui/launcher/launcher_app.cc
+++ b/services/ui/launcher/launcher_app.cc
@@ -105,11 +105,32 @@
 }
 
 void LauncherApp::Launch(const mojo::String& application_url) {
+  DVLOG(1) << "Launching " << application_url;
+
+  mojo::NativeViewportPtr viewport;
+  mojo::ConnectToService(app_impl_->shell(), "mojo:native_viewport_service",
+                         GetProxy(&viewport));
+
+  mojo::ui::ViewProviderPtr view_provider;
+  mojo::ConnectToService(app_impl_->shell(), application_url,
+                         GetProxy(&view_provider));
+
+  LaunchInternal(viewport.Pass(), view_provider.Pass());
+}
+void LauncherApp::LaunchOnViewport(
+    mojo::InterfaceHandle<mojo::NativeViewport> viewport,
+    mojo::InterfaceHandle<mojo::ui::ViewProvider> view_provider) {
+  LaunchInternal(mojo::NativeViewportPtr::Create(viewport.Pass()),
+                 mojo::ui::ViewProviderPtr::Create(view_provider.Pass()));
+}
+
+void LauncherApp::LaunchInternal(mojo::NativeViewportPtr viewport,
+                                 mojo::ui::ViewProviderPtr view_provider) {
   uint32_t next_id = next_id_++;
   std::unique_ptr<LaunchInstance> instance(new LaunchInstance(
-      app_impl_, application_url, compositor_.get(), view_manager_.get(),
-      base::Bind(&LauncherApp::OnLaunchTermination, base::Unretained(this),
-                 next_id)));
+      app_impl_, viewport.Pass(), view_provider.Pass(), compositor_.get(),
+      view_manager_.get(), base::Bind(&LauncherApp::OnLaunchTermination,
+                                      base::Unretained(this), next_id)));
   instance->Launch();
   launch_instances_.emplace(next_id, std::move(instance));
 }
diff --git a/services/ui/launcher/launcher_app.h b/services/ui/launcher/launcher_app.h
index f04e645..e15ca4e 100644
--- a/services/ui/launcher/launcher_app.h
+++ b/services/ui/launcher/launcher_app.h
@@ -32,7 +32,12 @@
 
   // |Launcher|:
   void Launch(const mojo::String& application_url) override;
+  void LaunchOnViewport(
+      mojo::InterfaceHandle<mojo::NativeViewport> viewport,
+      mojo::InterfaceHandle<mojo::ui::ViewProvider> view_provider) override;
 
+  void LaunchInternal(mojo::NativeViewportPtr viewport,
+                      mojo::ui::ViewProviderPtr view_provider);
   void OnLaunchTermination(uint32_t id);
 
   void OnCompositorConnectionError();
