Chromium Code Reviews| Index: mojo/apps/js/js_content_handler_app.cc |
| diff --git a/mojo/apps/js/js_content_handler_app.cc b/mojo/apps/js/js_content_handler_app.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..df26600284248aaa8faa4fbbc614934bea8698b4 |
| --- /dev/null |
| +++ b/mojo/apps/js/js_content_handler_app.cc |
| @@ -0,0 +1,66 @@ |
| +// 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/js_app.h" |
| +#include "mojo/apps/js/js_content_handler_app.h" |
| + |
| +namespace mojo { |
| +namespace apps { |
| + |
| +JSContentHandlerApp::JSContentHandlerApp() |
| + : applicationImpl_(NULL), content_handler_factory_(this) { |
| +} |
| + |
| +void JSContentHandlerApp::Initialize(ApplicationImpl* app) { |
| + applicationImpl_ = app; |
| +} |
| + |
| +JSContentHandlerApp::~JSContentHandlerApp() { |
| +} |
| + |
| +bool JSContentHandlerApp::ConfigureIncomingConnection( |
| + ApplicationConnection* connection) { |
| + connection->AddService(&content_handler_factory_); |
| + return true; |
| +} |
| + |
| +void JSContentHandlerApp::StartJSApp( |
| + const std::string& url, URLResponsePtr content) { |
| + JSApp* app = new JSApp(this, url, content.Pass()); |
| + apps_.push_back(app); |
|
Aaron Boodman
2014/09/10 02:22:09
There does not seem to be any instance of JSConten
hansmuller
2014/09/11 00:26:17
At the moment the apps_ list entries defined the l
|
| + // TODO(hansmuller): deal with the Start() return value. |
| + app->Start(); |
| +} |
| + |
| +void JSContentHandlerApp::QuitJSApp(JSApp* app) { |
| + Apps::iterator itr = std::find(apps_.begin(), apps_.end(), app); |
| + if (itr != apps_.end()) |
| + apps_.erase(itr); |
| +} |
| + |
| +void JSContentHandlerApp::ConnectToService(ScopedMessagePipeHandle pipe_handle1, |
|
Aaron Boodman
2014/09/10 02:22:09
Since there is only one pipe handle here, you don'
hansmuller
2014/09/11 00:26:17
That was just a reminder that the caller was holdi
|
| + const std::string& application_url, const std::string& interface_name) |
| +{ |
| + CHECK(applicationImpl_); |
| + ServiceProvider *service_provider = applicationImpl_->ConnectToApplication( |
|
Aaron Boodman
2014/09/10 02:22:09
Instead of saving the ptr to ApplicationImpl*, sav
hansmuller
2014/09/11 00:26:17
ApplicationImpl::ConnectToApplication() updates an
Aaron Boodman
2014/09/11 05:24:53
Huh. I'm not really sure. I guess this can be part
|
| + application_url)->GetServiceProvider(); |
| + service_provider->ConnectToService(interface_name, pipe_handle1.Pass()); |
| +} |
| + |
| +JSContentHandlerImpl::JSContentHandlerImpl(JSContentHandlerApp* app) |
| + : content_handler_app_(app) { |
| +} |
| + |
| +JSContentHandlerImpl::~JSContentHandlerImpl() { |
| +} |
| + |
| +void JSContentHandlerImpl::OnConnect( |
| + const mojo::String& url, |
| + URLResponsePtr content, |
| + InterfaceRequest<ServiceProvider> service_provider) { |
| + content_handler_app_->StartJSApp(url.To<std::string>(), content.Pass()); |
|
Aaron Boodman
2014/09/10 02:22:09
I'm not sure this is the right lifetime for these
Aaron Boodman
2014/09/11 05:24:53
We still need to figure this out. I suppose in can
|
| +} |
| + |
| +} // namespace apps |
| +} // namespace mojo |