// Copyright 2012 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.
package org.chromium.chrome.browser;
import org.chromium.base.ObserverList;
import org.chromium.base.annotations.CalledByNative;
/**
* Watches for when Chrome is told to restart itself.
*/
public class ApplicationLifetime {
/**
* Interface to be implemented to be notified of application termination.
*/
public interface Observer {
/**
* Called when the application should be terminated.
* @param restart Whether or not to restart Chrome.
*/
void onTerminate(boolean restart);
}
private static ObserverList<Observer> sObservers = new ObserverList<Observer>();
/**
* Adds an observer to watch for application termination.
* @param observer The observer to add.
*/
public static void addObserver(Observer observer) {
sObservers.addObserver(observer);
}
/**
* Removes an observer from watching for application termination.
* @oparam observer The observer to remove.
*/
public static void removeObserver(Observer observer) {
sObservers.removeObserver(observer);
}
@CalledByNative
public static void terminate(boolean restart) {
for (Observer observer : sObservers) {
observer.onTerminate(restart);
}
}
}