1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/shell/view_manager_loader.h" 6 7 #include "mojo/public/cpp/application/application_connection.h" 8 #include "mojo/public/cpp/application/application_impl.h" 9 #include "mojo/services/view_manager/view_manager_init_service_impl.h" 10 11 namespace mojo { 12 13 using service::ViewManagerInitServiceImpl; 14 15 namespace shell { 16 17 ViewManagerLoader::ViewManagerLoader() { 18 } 19 20 ViewManagerLoader::~ViewManagerLoader() { 21 } 22 23 void ViewManagerLoader::Load(ApplicationManager* manager, 24 const GURL& url, 25 scoped_refptr<LoadCallbacks> callbacks) { 26 ScopedMessagePipeHandle shell_handle = callbacks->RegisterApplication(); 27 if (!shell_handle.is_valid()) 28 return; 29 30 // TODO(sky): this needs some sort of authentication as well as making sure 31 // we only ever have one active at a time. 32 scoped_ptr<ApplicationImpl> app( 33 new ApplicationImpl(this, shell_handle.Pass())); 34 apps_.push_back(app.release()); 35 } 36 37 void ViewManagerLoader::OnApplicationError(ApplicationManager* manager, 38 const GURL& url) { 39 } 40 41 bool ViewManagerLoader::ConfigureIncomingConnection( 42 ApplicationConnection* connection) { 43 context_.ConfigureIncomingConnection(connection); 44 connection->AddService(this); 45 return true; 46 } 47 48 void ViewManagerLoader::Create( 49 ApplicationConnection* connection, 50 InterfaceRequest<ViewManagerInitService> request) { 51 BindToRequest(new ViewManagerInitServiceImpl(connection, &context_), 52 &request); 53 } 54 55 } // namespace shell 56 } // namespace mojo 57