1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file. 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "mojo/shell/view_manager_loader.h" 6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_connection.h" 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_impl.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "mojo/services/view_manager/view_manager_init_service_impl.h" 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace mojo { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)using service::ViewManagerInitServiceImpl; 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace shell { 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)ViewManagerLoader::ViewManagerLoader() { 18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)ViewManagerLoader::~ViewManagerLoader() { 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void ViewManagerLoader::Load(ApplicationManager* manager, 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& url, 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_refptr<LoadCallbacks> callbacks) { 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ScopedMessagePipeHandle shell_handle = callbacks->RegisterApplication(); 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!shell_handle.is_valid()) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return; 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // TODO(sky): this needs some sort of authentication as well as making sure 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // we only ever have one active at a time. 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<ApplicationImpl> app( 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new ApplicationImpl(this, shell_handle.Pass())); 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) apps_.push_back(app.release()); 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ViewManagerLoader::OnApplicationError(ApplicationManager* manager, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const GURL& url) { 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool ViewManagerLoader::ConfigureIncomingConnection( 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ApplicationConnection* connection) { 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) context_.ConfigureIncomingConnection(connection); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) connection->AddService(this); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return true; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void ViewManagerLoader::Create( 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ApplicationConnection* connection, 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) InterfaceRequest<ViewManagerInitService> request) { 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) BindToRequest(new ViewManagerInitServiceImpl(connection, &context_), 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &request); 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace shell 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace mojo 57