| // 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/shell/view_manager_loader.h" |
| |
| #include "mojo/public/cpp/application/application_connection.h" |
| #include "mojo/public/cpp/application/application_impl.h" |
| #include "mojo/services/view_manager/view_manager_init_service_impl.h" |
| |
| namespace mojo { |
| |
| using service::ViewManagerInitServiceImpl; |
| |
| namespace shell { |
| |
| ViewManagerLoader::ViewManagerLoader() { |
| } |
| |
| ViewManagerLoader::~ViewManagerLoader() { |
| } |
| |
| void ViewManagerLoader::Load(ApplicationManager* manager, |
| const GURL& url, |
| scoped_refptr<LoadCallbacks> callbacks) { |
| ScopedMessagePipeHandle shell_handle = callbacks->RegisterApplication(); |
| if (!shell_handle.is_valid()) |
| return; |
| |
| // TODO(sky): this needs some sort of authentication as well as making sure |
| // we only ever have one active at a time. |
| scoped_ptr<ApplicationImpl> app( |
| new ApplicationImpl(this, shell_handle.Pass())); |
| apps_.push_back(app.release()); |
| } |
| |
| void ViewManagerLoader::OnServiceError(ApplicationManager* manager, |
| const GURL& url) { |
| } |
| |
| bool ViewManagerLoader::ConfigureIncomingConnection( |
| ApplicationConnection* connection) { |
| context_.ConfigureIncomingConnection(connection); |
| connection->AddService(this); |
| return true; |
| } |
| |
| void ViewManagerLoader::Create( |
| ApplicationConnection* connection, |
| InterfaceRequest<ViewManagerInitService> request) { |
| BindToRequest(new ViewManagerInitServiceImpl(connection, &context_), |
| &request); |
| } |
| |
| } // namespace shell |
| } // namespace mojo |