43 lines
1.8 KiB
Java
43 lines
1.8 KiB
Java
// Copyright 2020 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package org.chromium.base;
|
|
|
|
/**
|
|
* Marker interface to be implemented by classes which makes them attachable to a host class that
|
|
* holds {@link UnownedUserDataHost} entries.
|
|
* <p>
|
|
* Marking something as a UnownedUserData has no other implications than that the class can be
|
|
* referenced from a {@link UnownedUserDataHost} as a {@link java.lang.ref.WeakReference}.
|
|
* <p>
|
|
* Implementors can also optionally implement the method
|
|
* {@link #onDetachedFromHost(UnownedUserDataHost)}
|
|
* to be informed whenever they have been detached from the host. This can happen when the
|
|
* particular {@link UnownedUserDataHost} they are attached to is destroyed.
|
|
*
|
|
* @see UnownedUserDataHost for more details on ownership and typical usage.
|
|
* @see UnownedUserDataKey for information about the type of key that is required.
|
|
*/
|
|
public interface UnownedUserData {
|
|
/**
|
|
* Invoked whenever the particular UnownedUserData has been removed from a particular host. If
|
|
* the UnownedUserData has been garbage collected before the UserDataHost is informed of its
|
|
* removal, this method will of course not be invoked.
|
|
* <p>
|
|
* This method is invoked asynchronously, but from the correct thread.
|
|
*
|
|
* @param host from which host the UnownedUserData was detached.
|
|
*/
|
|
default void onDetachedFromHost(UnownedUserDataHost host) {}
|
|
|
|
/**
|
|
* WARNING: This may be invoked in a re-entrant way, but will be invoked on the correct thread.
|
|
*
|
|
* @return true if the UnownedUserData wants to be informed asynchronously about detachments.
|
|
*/
|
|
default boolean informOnDetachmentFromHost() {
|
|
return true;
|
|
}
|
|
}
|