Index: chrome/browser/android/offline_pages/prerendering_loader.cc |
diff --git a/chrome/browser/android/offline_pages/prerendering_loader.cc b/chrome/browser/android/offline_pages/prerendering_loader.cc |
index f6e1b6e435b50bdf91776f1b4446b41b388834fe..7b1ab65eec40cec598011da8f2c0e0abe3b8c6fc 100644 |
--- a/chrome/browser/android/offline_pages/prerendering_loader.cc |
+++ b/chrome/browser/android/offline_pages/prerendering_loader.cc |
@@ -88,7 +88,8 @@ PrerenderingLoader::~PrerenderingLoader() { |
} |
bool PrerenderingLoader::LoadPage(const GURL& url, |
- const LoadPageCallback& callback) { |
+ const LoadPageCallback& load_done_callback, |
+ const ProgressCallback& progress_callback) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
if (!IsIdle()) { |
DVLOG(1) |
@@ -115,7 +116,8 @@ bool PrerenderingLoader::LoadPage(const GURL& url, |
new SnapshotController(base::ThreadTaskRunnerHandle::Get(), this, |
kOfflinePageDclDelayMs, |
kOfflinePageOnloadDelayMs)); |
- callback_ = callback; |
+ load_done_callback_ = load_done_callback; |
+ progress_callback_ = progress_callback; |
session_contents_.swap(new_web_contents); |
state_ = State::LOADING; |
return true; |
@@ -170,6 +172,11 @@ void PrerenderingLoader::OnPrerenderStop() { |
HandleLoadingStopped(); |
} |
+void PrerenderingLoader::OnPrerenderNetworkBytesChanged(int64_t bytes) { |
+ if (state_ == State::LOADING) |
+ progress_callback_.Run(bytes); |
+} |
+ |
void PrerenderingLoader::StartSnapshot() { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
HandleLoadEvent(); |
@@ -190,8 +197,8 @@ void PrerenderingLoader::HandleLoadEvent() { |
if (web_contents) { |
state_ = State::LOADED; |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, |
- base::Bind(callback_, Offliner::RequestStatus::LOADED, web_contents)); |
+ FROM_HERE, base::Bind(load_done_callback_, |
+ Offliner::RequestStatus::LOADED, web_contents)); |
} else { |
// No WebContents means that the load failed (and it stopped). |
HandleLoadingStopped(); |
@@ -245,7 +252,7 @@ void PrerenderingLoader::HandleLoadingStopped() { |
session_contents_.reset(nullptr); |
state_ = State::IDLE; |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(callback_, request_status, nullptr)); |
+ FROM_HERE, base::Bind(load_done_callback_, request_status, nullptr)); |
} |
void PrerenderingLoader::CancelPrerender() { |