blob: 8ec753a8d735aea59127fe85482874fff002e635 [file] [log] [blame]
// Copyright 2014 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.tabmodel;
import org.chromium.chrome.browser.tab.Tab;
import java.util.List;
/**
* An interface to be notified about changes to a TabModel.
*/
public interface TabModelObserver {
/**
* Called when a tab is selected.
*
* @param tab The newly selected tab.
* @param type The type of selection.
* @param lastId The ID of the last selected tab, or {@link Tab#INVALID_TAB_ID} if no tab was
* selected.
*/
void didSelectTab(Tab tab, @TabSelectionType int type, int lastId);
/**
* Called when a tab starts closing.
*
* @param tab The tab to close.
* @param animate Whether or not to animate the closing.
*/
void willCloseTab(Tab tab, boolean animate);
/**
* Called right after {@code tab} has been destroyed.
*
* @param tabId The ID of the tab that was destroyed.
* @param incognito True if the closed tab was incognito.
*/
void didCloseTab(int tabId, boolean incognito);
/**
* Called before a tab will be added to the {@link TabModel}.
*
* @param tab The tab about to be added.
* @param type The type of tab launch.
*/
void willAddTab(Tab tab, @TabLaunchType int type);
/**
* Called after a tab has been added to the {@link TabModel}.
*
* @param tab The newly added tab.
* @param type The type of tab launch.
*/
void didAddTab(Tab tab, @TabLaunchType int type);
/**
* Called after a tab has been moved from one position in the {@link TabModel} to another.
*
* @param tab The tab which has been moved.
* @param newIndex The new index of the tab in the model.
* @param curIndex The old index of the tab in the model.
*/
void didMoveTab(Tab tab, int newIndex, int curIndex);
/**
* Called when a tab is pending closure, i.e. the user has just closed it, but it can still be
* undone. At this point, the Tab has been removed from the TabModel and can only be accessed
* via {@link TabModel#getComprehensiveModel()}.
*
* @param tab The tab that is pending closure.
*/
void tabPendingClosure(Tab tab);
/**
* Called when a tab closure is undone.
*
* @param tab The tab that has been reopened.
*/
void tabClosureUndone(Tab tab);
/**
* Called when a tab closure is committed and can't be undone anymore.
*
* @param tab The tab that has been closed.
*/
void tabClosureCommitted(Tab tab);
/**
* Called when multiple tabs are pending closure.
*
* @param tabs The tabs that are pending closure.
* @param isAllTabs Whether |tabs| are all the tabs.
*/
void multipleTabsPendingClosure(List<Tab> tabs, boolean isAllTabs);
/**
* Called when an "all tabs" closure has been committed and can't be undone anymore.
*/
void allTabsClosureCommitted();
/**
* Called after a tab has been removed. At this point, the tab is no longer in the tab model.
*
* @param tab The tab that has been removed.
*/
void tabRemoved(Tab tab);
/**
* Called after all {@link org.chromium.chrome.browser.tab.TabState}s within {@link TabModel}
* are loaded from storage.
*/
void restoreCompleted();
}