// Copyright 2015 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 "base/guid.h" #include "base/macros.h" #include "base/message_loop/message_loop.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "chromeos/binder/command_broker.h" #include "chromeos/binder/driver.h" #include "chromeos/binder/local_object.h" #include "chromeos/binder/service_manager_proxy.h" #include "chromeos/binder/transaction_data.h" #include "testing/gtest/include/gtest/gtest.h" namespace binder { namespace { class DummyTransactionHandler : public LocalObject::TransactionHandler { public: DummyTransactionHandler() {} ~DummyTransactionHandler() override {} scoped_ptr OnTransact(CommandBroker* command_broker, const TransactionData& data) override { return scoped_ptr(); } private: DISALLOW_COPY_AND_ASSIGN(DummyTransactionHandler); }; } // namespace class BinderServiceManagerProxyTest : public ::testing::Test { public: BinderServiceManagerProxyTest() : command_broker_(&driver_) {} ~BinderServiceManagerProxyTest() override {} void SetUp() override { ASSERT_TRUE(driver_.Initialize()); } protected: base::MessageLoop message_loop_; Driver driver_; CommandBroker command_broker_; }; TEST_F(BinderServiceManagerProxyTest, AddAndCheck) { const base::string16 kServiceName = base::ASCIIToUTF16("org.chromium.TestService-" + base::GenerateGUID()); // Service not available yet. EXPECT_FALSE( ServiceManagerProxy::CheckService(&command_broker_, kServiceName)); // Add service. scoped_refptr object( new LocalObject(make_scoped_ptr(new DummyTransactionHandler()))); EXPECT_TRUE(ServiceManagerProxy::AddService(&command_broker_, kServiceName, object, 0)); // Service is available. scoped_refptr result = ServiceManagerProxy::CheckService(&command_broker_, kServiceName); ASSERT_TRUE(result); ASSERT_EQ(LocalObject::TYPE_LOCAL, result->GetType()); EXPECT_EQ(object.get(), result.get()); } } // namespace binder