mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-13 18:27:35 +00:00
16a8fe4d37
Tab unloading should not unload "fresh" tabs i.e. tabs that were accessed very recently, even though one of them was the least recently used tab. To achieve it, this patch introduces the minimum inactive duration and we prevent tabs that were accessed in the last period of that duration from being unloaded. This patch sets the default value to 10 minutes based on the historgram `TAB_UNLOAD_TO_RELOAD` where the median was 60sec and the 75th percentile was 1040sec. This value can be overriden by the parameter of the TabUnloader's APIs so that about:unloads and the tests can unload those fresh tabs. Differential Revision: https://phabricator.services.mozilla.com/D125824
37 lines
1.4 KiB
Plaintext
37 lines
1.4 KiB
Plaintext
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
/**
|
|
* nsITabUnloader: interface to represent TabUnloader
|
|
*
|
|
* nsIAvailableMemoryWatcherBase: interface to watch the system's memory
|
|
* status and invoke a registered TabUnloader when it detected a low-memory
|
|
* and high-memory situation. The logic to detect such a memory situation
|
|
* is defined per platform.
|
|
*/
|
|
|
|
[scriptable, uuid(2e530956-6054-464f-9f4c-0ae6f8de5523)]
|
|
interface nsITabUnloader : nsISupports
|
|
{
|
|
/*
|
|
* Unload the least-recently-used tab.
|
|
* JS implementation of this interface TabUnloader.unloadTabAsync takes
|
|
* one parameter that defines a threshold to exclude fresh tabs from the
|
|
* unloading candidate tabs. Currently the memory watcher is the only one
|
|
* caller of this interface and it always expects the default threshold,
|
|
* so this interface takes no parameter.
|
|
*/
|
|
void unloadTabAsync();
|
|
};
|
|
|
|
[scriptable, uuid(b0b5701e-239d-49db-9009-37e89f86441c)]
|
|
interface nsIAvailableMemoryWatcherBase : nsISupports
|
|
{
|
|
void registerTabUnloader(in nsITabUnloader aTabUnloader);
|
|
void onUnloadAttemptCompleted(in nsresult aResult);
|
|
};
|