Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(655)

Unified Diff: extensions/renderer/extension_frame_helper.cc

Issue 2337063003: [Extensions] Add metrics for asynchronous port creation (Closed)
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/extension_frame_helper.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/extension_frame_helper.cc
diff --git a/extensions/renderer/extension_frame_helper.cc b/extensions/renderer/extension_frame_helper.cc
index f590b01ccc4f54dc172f2b2076863bba01e1fc19..67b4671276cc32c6ca2a3f9a7fc42640e9dac720 100644
--- a/extensions/renderer/extension_frame_helper.cc
+++ b/extensions/renderer/extension_frame_helper.cc
@@ -6,6 +6,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_util.h"
+#include "base/timer/elapsed_timer.h"
#include "content/public/renderer/render_frame.h"
#include "extensions/common/api/messaging/message.h"
#include "extensions/common/constants.h"
@@ -81,8 +82,27 @@ void RunCallbacksWhileFrameIsValid(
}
}
+enum class PortType {
+ EXTENSION,
+ TAB,
+ NATIVE_APP,
+};
+
} // namespace
+struct ExtensionFrameHelper::PendingPortRequest {
+ PendingPortRequest(PortType type, const base::Callback<void(int)>& callback)
+ : type(type), callback(callback) {}
+ ~PendingPortRequest() {}
+
+ base::ElapsedTimer timer;
+ PortType type;
+ base::Callback<void(int)> callback;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(PendingPortRequest);
+};
+
ExtensionFrameHelper::ExtensionFrameHelper(content::RenderFrame* render_frame,
Dispatcher* extension_dispatcher)
: content::RenderFrameObserver(render_frame),
@@ -180,7 +200,8 @@ void ExtensionFrameHelper::RequestPortId(
bool include_tls_channel_id,
const base::Callback<void(int)>& callback) {
int port_request_id = next_port_request_id_++;
- pending_port_requests_[port_request_id] = callback;
+ pending_port_requests_[port_request_id] =
+ base::MakeUnique<PendingPortRequest>(PortType::EXTENSION, callback);
{
SCOPED_UMA_HISTOGRAM_TIMER(
"Extensions.Messaging.GetPortIdSyncTime.Extension");
@@ -196,7 +217,8 @@ void ExtensionFrameHelper::RequestTabPortId(
const std::string& channel_name,
const base::Callback<void(int)>& callback) {
int port_request_id = next_port_request_id_++;
- pending_port_requests_[port_request_id] = callback;
+ pending_port_requests_[port_request_id] =
+ base::MakeUnique<PendingPortRequest>(PortType::TAB, callback);
{
SCOPED_UMA_HISTOGRAM_TIMER("Extensions.Messaging.GetPortIdSyncTime.Tab");
render_frame()->Send(new ExtensionHostMsg_OpenChannelToTab(
@@ -209,7 +231,8 @@ void ExtensionFrameHelper::RequestNativeAppPortId(
const std::string& native_app_name,
const base::Callback<void(int)>& callback) {
int port_request_id = next_port_request_id_++;
- pending_port_requests_[port_request_id] = callback;
+ pending_port_requests_[port_request_id] =
+ base::MakeUnique<PendingPortRequest>(PortType::NATIVE_APP, callback);
{
SCOPED_UMA_HISTOGRAM_TIMER(
"Extensions.Messaging.GetPortIdSyncTime.NativeApp");
@@ -341,7 +364,25 @@ void ExtensionFrameHelper::OnExtensionMessageInvoke(
void ExtensionFrameHelper::OnAssignPortId(int port_id, int request_id) {
auto iter = pending_port_requests_.find(request_id);
DCHECK(iter != pending_port_requests_.end());
- iter->second.Run(port_id);
+ PendingPortRequest& request = *iter->second;
+ switch (request.type) {
+ case PortType::EXTENSION: {
+ UMA_HISTOGRAM_TIMES("Extensions.Messaging.GetPortIdAsyncTime.Extension",
+ request.timer.Elapsed());
+ break;
+ }
+ case PortType::TAB: {
+ UMA_HISTOGRAM_TIMES("Extensions.Messaging.GetPortIdAsyncTime.Tab",
+ request.timer.Elapsed());
+ break;
+ }
+ case PortType::NATIVE_APP: {
+ UMA_HISTOGRAM_TIMES("Extensions.Messaging.GetPortIdAsyncTime.NativeApp",
+ request.timer.Elapsed());
+ break;
+ }
+ }
+ request.callback.Run(port_id);
pending_port_requests_.erase(iter);
}
« no previous file with comments | « extensions/renderer/extension_frame_helper.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698