Bug 976426 - Update progress on LOCATION_CHANGE and LOADED only if tab is loading. r=lucasr

This commit is contained in:
Brian Nicholson 2014-03-07 09:54:52 -08:00
parent f016a787f6
commit 316891bb1b

View File

@ -67,7 +67,7 @@ public class Tab {
private Context mAppContext;
private ErrorType mErrorType = ErrorType.NONE;
private static final int MAX_HISTORY_LIST_SIZE = 50;
private int mLoadProgress;
private volatile int mLoadProgress;
public static final int STATE_DELAYED = 0;
public static final int STATE_LOADING = 1;
@ -635,7 +635,7 @@ public class Tab {
setHasTouchListeners(false);
setBackgroundColor(DEFAULT_BACKGROUND_COLOR);
setErrorType(ErrorType.NONE);
setLoadProgress(LOAD_PROGRESS_LOCATION_CHANGE);
setLoadProgressIfLoading(LOAD_PROGRESS_LOCATION_CHANGE);
Tabs.getInstance().notifyListeners(this, Tabs.TabEvents.LOCATION_CHANGE, oldUrl);
}
@ -672,7 +672,7 @@ public class Tab {
}
void handleContentLoaded() {
setLoadProgress(LOAD_PROGRESS_LOADED);
setLoadProgressIfLoading(LOAD_PROGRESS_LOADED);
}
protected void saveThumbnailToDB() {
@ -776,6 +776,22 @@ public class Tab {
mLoadProgress = progressPercentage;
}
/**
* Sets the tab load progress to the given percentage only if the tab is
* currently loading.
*
* about:neterror can trigger a STOP before other page load events (bug
* 976426), so any post-START events should make sure the page is loading
* before updating progress.
*
* @param progressPercentage Percentage to set progress to (0-100)
*/
void setLoadProgressIfLoading(int progressPercentage) {
if (getState() == STATE_LOADING) {
setLoadProgress(progressPercentage);
}
}
/**
* Gets the tab load progress percentage.
*