155182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz/* 255182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * Copyright (C) 2017 The Android Open Source Project 355182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * 455182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * Licensed under the Apache License, Version 2.0 (the "License"); 555182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * you may not use this file except in compliance with the License. 655182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * You may obtain a copy of the License at 755182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * 855182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * http://www.apache.org/licenses/LICENSE-2.0 955182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * 1055182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * Unless required by applicable law or agreed to in writing, software 1155182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * distributed under the License is distributed on an "AS IS" BASIS, 1255182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * See the License for the specific language governing permissions and 1455182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz * limitations under the License. 1555182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz */ 1655182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 1755182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzpackage com.android.frameworks.coretests.binderproxycountingtestservice; 1855182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 1955182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzimport android.app.Service; 2055182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzimport android.content.Intent; 2155182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzimport android.os.IBinder; 2255182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzimport android.os.RemoteCallbackList; 2355182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 2455182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzimport com.android.frameworks.coretests.aidl.IBinderProxyCountingService; 2555182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzimport com.android.frameworks.coretests.aidl.ITestRemoteCallback; 2655182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 2755182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanzpublic class BinderProxyCountingService extends Service { 2855182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz private static final String TAG = BinderProxyCountingService.class.getSimpleName(); 2955182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 3055182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz private IBinderProxyCountingService.Stub mBinder = new IBinderProxyCountingService.Stub() { 3155182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 3255182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz final RemoteCallbackList<ITestRemoteCallback> mTestCallbacks = new RemoteCallbackList<>(); 3355182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 3455182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz @Override 3555182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz public void registerCallback(ITestRemoteCallback callback) { 3655182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz synchronized (this) { 3755182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz mTestCallbacks.register(callback); 3855182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz } 3955182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz } 4055182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 4155182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz @Override 4255182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz public void unregisterCallback(ITestRemoteCallback callback) { 4355182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz synchronized (this) { 4455182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz mTestCallbacks.unregister(callback); 4555182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz } 4655182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz } 4755182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz }; 4855182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz 4955182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz @Override 5055182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz public IBinder onBind(Intent intent) { 5155182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz return mBinder; 5255182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz } 5355182464fb9f6536ee500eac02a031e7b7226fc4Michael Wachenschwanz}