Index: mojo/apps/js/application_delegate_impl.cc |
diff --git a/mojo/apps/js/application_delegate_impl.cc b/mojo/apps/js/application_delegate_impl.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..81cff286b047a416e9fb8c3ec862a0ba723d33aa |
--- /dev/null |
+++ b/mojo/apps/js/application_delegate_impl.cc |
@@ -0,0 +1,71 @@ |
+// Copyright 2014 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. |
+ |
+#include "mojo/apps/js/application_delegate_impl.h" |
+ |
+#include "mojo/apps/js/js_app.h" |
+#include "mojo/public/cpp/application/application_impl.h" |
+ |
+namespace mojo { |
+namespace apps { |
+ |
+ContentHandlerImpl::ContentHandlerImpl(ApplicationDelegateImpl* app) |
+ : content_handler_(app) { |
+} |
+ |
+ContentHandlerImpl::~ContentHandlerImpl() { |
+} |
+ |
+void ContentHandlerImpl::OnConnect( |
+ const mojo::String& url, |
+ URLResponsePtr content, |
+ InterfaceRequest<ServiceProvider> service_provider) { |
+ content_handler_->StartJSApp(url.To<std::string>(), content.Pass()); |
+} |
+ |
+ApplicationDelegateImpl::ApplicationDelegateImpl() |
+ : application_impl_(NULL), content_handler_factory_(this) { |
+} |
+ |
+void ApplicationDelegateImpl::Initialize(ApplicationImpl* app) { |
+ application_impl_ = app; |
+} |
+ |
+ApplicationDelegateImpl::~ApplicationDelegateImpl() { |
+} |
+ |
+bool ApplicationDelegateImpl::ConfigureIncomingConnection( |
+ ApplicationConnection* connection) { |
+ connection->AddService(&content_handler_factory_); |
+ return true; |
+} |
+ |
+void ApplicationDelegateImpl::StartJSApp(const std::string& url, |
+ URLResponsePtr content) { |
+ JSApp* app = new JSApp(this, url, content.Pass()); |
+ app_vector_.push_back(app); |
+ // TODO(hansmuller): deal with the Start() return value. |
+ app->Start(); |
+} |
+ |
+void ApplicationDelegateImpl::QuitJSApp(JSApp* app) { |
+ AppVector::iterator itr = |
+ std::find(app_vector_.begin(), app_vector_.end(), app); |
+ if (itr != app_vector_.end()) |
+ app_vector_.erase(itr); |
+} |
+ |
+void ApplicationDelegateImpl::ConnectToService( |
+ ScopedMessagePipeHandle pipe_handle, |
+ const std::string& application_url, |
+ const std::string& interface_name) { |
+ CHECK(application_impl_); |
+ ServiceProvider* service_provider = |
+ application_impl_->ConnectToApplication(application_url) |
+ ->GetServiceProvider(); |
+ service_provider->ConnectToService(interface_name, pipe_handle.Pass()); |
+} |
+ |
+} // namespace apps |
+} // namespace mojo |