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 0b2f878764963cadf74a4cf1ec95240527f95c2f..5fc09f9af5f99853c68cf6263ddc857610491c33 100644 |
--- a/chrome/browser/android/offline_pages/prerendering_loader.cc |
+++ b/chrome/browser/android/offline_pages/prerendering_loader.cc |
@@ -8,6 +8,7 @@ |
#include "base/logging.h" |
#include "base/metrics/histogram_macros.h" |
#include "base/threading/thread_task_runner_handle.h" |
+#include "base/time/time.h" |
#include "chrome/browser/profiles/profile.h" |
#include "content/public/browser/browser_context.h" |
#include "content/public/browser/browser_thread.h" |
@@ -88,6 +89,19 @@ PrerenderingLoader::~PrerenderingLoader() { |
CancelPrerender(); |
} |
+void PrerenderingLoader::SetSnapshotStartTime() { |
Dmitry Titov
2017/03/29 23:26:29
looks like nobody calls it.
Pete Williamson
2017/03/31 00:29:48
Oops, fixed. LoadPage now calls this instead of a
|
+ snapshot_start_time_ = base::TimeTicks::Now(); |
+} |
+ |
+void PrerenderingLoader::AddLoadingSignal(const char* signal_name) { |
+ std::string signal(signal_name); |
+ signal += ": "; |
+ base::TimeTicks current_time = base::TimeTicks::Now(); |
+ base::TimeDelta delay_so_far = current_time - snapshot_start_time_; |
+ signal += std::to_string(delay_so_far.InMilliseconds()); |
+ signal_data_.push_back(signal); |
+} |
+ |
bool PrerenderingLoader::LoadPage(const GURL& url, |
const LoadPageCallback& load_done_callback, |
const ProgressCallback& progress_callback) { |
@@ -98,6 +112,9 @@ bool PrerenderingLoader::LoadPage(const GURL& url, |
return false; |
} |
+ // Add this signal to signal_data_. |
+ AddLoadingSignal("StartLoading"); |
+ |
// Create a WebContents instance to define and hold a SessionStorageNamespace |
// for this load request. |
DCHECK(!session_contents_.get()); |
@@ -152,6 +169,9 @@ void PrerenderingLoader::OnPrerenderStopLoading() { |
// Inform SnapshotController of OnLoad event so it can determine |
// when to consider it really LOADED. |
snapshot_controller_->DocumentOnLoadCompletedInMainFrame(); |
+ |
+ // Add this signal to signal_data_. |
+ AddLoadingSignal("OnLoad"); |
} |
void PrerenderingLoader::OnPrerenderDomContentLoaded() { |
@@ -168,6 +188,9 @@ void PrerenderingLoader::OnPrerenderDomContentLoaded() { |
// second delay from this event). |
snapshot_controller_->DocumentAvailableInMainFrame(); |
} |
+ |
+ // Add this signal to signal_data_. |
+ AddLoadingSignal("OnDomContentLoaded"); |
} |
} |
@@ -183,6 +206,10 @@ void PrerenderingLoader::OnPrerenderNetworkBytesChanged(int64_t bytes) { |
void PrerenderingLoader::StartSnapshot() { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
+ |
+ // Add this signal to signal_data_. |
+ AddLoadingSignal("Snapshotting"); |
+ |
HandleLoadEvent(); |
} |