Index: chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java |
index 1dad91490f8f9a7ef446a422a1c4ee25131e2d72..a4456fb13df848fa5c903fed81d110848ed2cf21 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java |
@@ -206,6 +206,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
// Content layer Observers and Delegates |
private ContentViewClient mContentViewClient; |
private TabWebContentsObserver mWebContentsObserver; |
+ private TabBlimpContentsObserver mBlimpContentsObserver; |
private TabWebContentsDelegateAndroid mWebContentsDelegate; |
private BlimpContents mBlimpContents; |
@@ -1026,9 +1027,15 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
* @return a value between 0 and 100 reflecting what percentage of the page load is complete. |
*/ |
public int getProgress() { |
- TabWebContentsDelegateAndroid delegate = getTabWebContentsDelegateAndroid(); |
- if (delegate == null) return 0; |
- return isLoading() ? delegate.getMostRecentProgress() : 100; |
+ if (!isLoading()) return 100; |
+ |
+ if (mBlimp) { |
+ return mBlimpContentsObserver != null ? mBlimpContentsObserver.getMostRecentProgress() |
+ : 0; |
+ } else { |
+ TabWebContentsDelegateAndroid delegate = getTabWebContentsDelegateAndroid(); |
+ return delegate != null ? delegate.getMostRecentProgress() : 0; |
+ } |
} |
/** |
@@ -1471,7 +1478,8 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
mBlimpContents = nativeInitBlimpContents( |
mNativeTabAndroid, profile, mWindowAndroid.getNativePointer()); |
if (mBlimpContents != null) { |
- getBlimpContents().addObserver(new TabBlimpContentsObserver(this)); |
+ mBlimpContentsObserver = new TabBlimpContentsObserver(this); |
+ mBlimpContents.addObserver(mBlimpContentsObserver); |
} else { |
mBlimp = false; |
} |
@@ -1880,6 +1888,18 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, |
} |
/** |
+ * Notify observers when provisional load starts. |
+ * @param isMainFrame Whether the load is happening for the main frame. |
+ * @param validatedUrl The validated URL that is being navigated to. |
+ */ |
+ void handleDidStartProvisionalLoadForFrame(boolean isMainFrame, String validatedUrl) { |
+ RewindableIterator<TabObserver> observers = getTabObservers(); |
+ while (observers.hasNext()) { |
+ observers.next().onDidStartProvisionalLoadForFrame(this, isMainFrame, validatedUrl); |
+ } |
+ } |
+ |
+ /** |
* Update internal Tab state when provisional load gets committed. |
* @param url The URL that was loaded. |
* @param transitionType The transition type to the current URL. |