diff options
-rw-r--r-- | chrome/common/histogram_synchronizer.cc | 2 | ||||
-rw-r--r-- | chrome/common/histogram_synchronizer.h | 9 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 6 |
3 files changed, 17 insertions, 0 deletions
diff --git a/chrome/common/histogram_synchronizer.cc b/chrome/common/histogram_synchronizer.cc index 54ff230..aaf23e8 100644 --- a/chrome/common/histogram_synchronizer.cc +++ b/chrome/common/histogram_synchronizer.cc @@ -241,6 +241,8 @@ int HistogramSynchronizer::GetNextAvaibleSequenceNumber( RendererHistogramRequester requester) { AutoLock auto_lock(lock_); ++next_available_sequence_number_; + if (next_available_sequence_number_ < STARTING_SEQUENCE_NUMBER) + next_available_sequence_number_ = STARTING_SEQUENCE_NUMBER; if (requester == ASYNC_HISTOGRAMS) { async_sequence_number_ = next_available_sequence_number_; async_renderers_pending_ = 0; diff --git a/chrome/common/histogram_synchronizer.h b/chrome/common/histogram_synchronizer.h index ed866fc..29c34e2 100644 --- a/chrome/common/histogram_synchronizer.h +++ b/chrome/common/histogram_synchronizer.h @@ -32,6 +32,15 @@ class HistogramSynchronizer : public SYNCHRONOUS_HISTOGRAMS }; + // We reserve 0 through 9 sequence numbers for special purposes. For example, + // sequence number 0 is used by renderer to send its histograms before it + // closing renderer. We wanted to reserve the rest of sequence numbers for + // future purposes. + enum SequenceNumbers { + RENDERER_CLOSING_SEQUENCE_NUMBER = 0, + STARTING_SEQUENCE_NUMBER = 10 + }; + HistogramSynchronizer(); ~HistogramSynchronizer(); diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 09fbe86..1ec124d 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -26,6 +26,7 @@ #include "chrome/common/child_process_logging.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_constants.h" +#include "chrome/common/histogram_synchronizer.h" #include "chrome/common/jstemplate_builder.h" #include "chrome/common/page_zoom.h" #include "chrome/common/plugin_messages.h" @@ -3161,6 +3162,11 @@ void RenderView::OnClosePage(const ViewMsg_ClosePage_Params& params) { } webview()->dispatchUnloadEvent(); + // Send histogram data before renderer closes. + if (RenderThread::current()) + RenderThread::current()->SendHistograms( + HistogramSynchronizer::RENDERER_CLOSING_SEQUENCE_NUMBER); + // Just echo back the params in the ACK. Send(new ViewHostMsg_ClosePage_ACK(routing_id_, params)); } |