| OLD | NEW |
| (Empty) |
| 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 package org.chromium.mojo.bindings; | |
| 6 | |
| 7 import org.chromium.mojo.system.MojoException; | |
| 8 | |
| 9 import java.util.Collections; | |
| 10 import java.util.Set; | |
| 11 import java.util.WeakHashMap; | |
| 12 | |
| 13 /** | |
| 14 * A {@link ConnectionErrorHandler} that delegate the errors to a list of regist
ered handlers. This | |
| 15 * class will use weak pointers to prevent keeping references to any handlers it
delegates to. | |
| 16 */ | |
| 17 public class DelegatingConnectionErrorHandler implements ConnectionErrorHandler
{ | |
| 18 | |
| 19 /** | |
| 20 * The registered handlers. This uses a {@link WeakHashMap} so that it doesn
't prevent the | |
| 21 * handler from being garbage collected. | |
| 22 */ | |
| 23 private final Set<ConnectionErrorHandler> mHandlers = | |
| 24 Collections.newSetFromMap(new WeakHashMap<ConnectionErrorHandler, Bo
olean>()); | |
| 25 | |
| 26 /** | |
| 27 * @see ConnectionErrorHandler#onConnectionError(MojoException) | |
| 28 */ | |
| 29 @Override | |
| 30 public void onConnectionError(MojoException e) { | |
| 31 for (ConnectionErrorHandler handler : mHandlers) { | |
| 32 handler.onConnectionError(e); | |
| 33 } | |
| 34 } | |
| 35 | |
| 36 /** | |
| 37 * Add a handler that will be notified of any error this object receives. | |
| 38 */ | |
| 39 public void addConnectionErrorHandler(ConnectionErrorHandler handler) { | |
| 40 mHandlers.add(handler); | |
| 41 } | |
| 42 | |
| 43 /** | |
| 44 * Remove a previously registered handler. | |
| 45 */ | |
| 46 public void removeConnectionErrorHandler(ConnectionErrorHandler handler) { | |
| 47 mHandlers.remove(handler); | |
| 48 } | |
| 49 } | |
| OLD | NEW |