weak_service_provider.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/cpp/application/lib/weak_service_provider.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/cpp/application/service_provider_impl.h" 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/interfaces/application/service_provider.mojom.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace mojo { 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace internal { 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)WeakServiceProvider::WeakServiceProvider(ServiceProviderImpl* creator, 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ServiceProvider* service_provider) 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) : creator_(creator), 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) service_provider_(service_provider) {} 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)WeakServiceProvider::~WeakServiceProvider() { 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (creator_) 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) creator_->ClearRemote(); 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void WeakServiceProvider::Clear() { 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) creator_ = NULL; 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) service_provider_ = NULL; 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void WeakServiceProvider::ConnectToService( 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const String& service_name, 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScopedMessagePipeHandle client_handle) { 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (service_provider_) 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) service_provider_->ConnectToService(service_name, client_handle.Pass()); 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace internal 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace mojo 37