Log SharingMessage histograms with message type suffix.
Bug: 1010515
Change-Id: If62345aba1aed10d3e679140ee66aeb2f074115f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1841331
Reviewed-by: Ilya Sherman <[email protected]>
Reviewed-by: Alex Chau <[email protected]>
Commit-Queue: Michael van Ouwerkerk <[email protected]>
Auto-Submit: Michael van Ouwerkerk <[email protected]>
Cr-Commit-Position: refs/heads/master@{#706831}
diff --git a/chrome/browser/sharing/ack_message_handler.cc b/chrome/browser/sharing/ack_message_handler.cc
index 5f93d0f..f4489185 100644
--- a/chrome/browser/sharing/ack_message_handler.cc
+++ b/chrome/browser/sharing/ack_message_handler.cc
@@ -13,7 +13,8 @@
void AckMessageHandler::OnMessage(
const chrome_browser_sharing::SharingMessage& message) {
for (AckMessageObserver& observer : observers_)
- observer.OnAckReceived(message.ack_message().original_message_id());
+ observer.OnAckReceived(message.ack_message().original_message_type(),
+ message.ack_message().original_message_id());
}
void AckMessageHandler::AddObserver(AckMessageObserver* observer) {
diff --git a/chrome/browser/sharing/ack_message_handler.h b/chrome/browser/sharing/ack_message_handler.h
index 8e00dad..71ecc7f 100644
--- a/chrome/browser/sharing/ack_message_handler.h
+++ b/chrome/browser/sharing/ack_message_handler.h
@@ -11,15 +11,21 @@
#include "base/observer_list.h"
#include "chrome/browser/sharing/sharing_message_handler.h"
+namespace chrome_browser_sharing {
+enum MessageType : int;
+} // namespace chrome_browser_sharing
+
// Class to managae ack message and notify observers.
class AckMessageHandler : public SharingMessageHandler {
public:
// Interface for objects observing ack message received events.
class AckMessageObserver : public base::CheckedObserver {
public:
- // Called when an ack message is received, where the identifier of original
- // message is |message_id|.
- virtual void OnAckReceived(const std::string& message_id) = 0;
+ // Called when an ack message is received, where |message_type| is the type
+ // of the original message, and |message_id| is the identifier of the
+ // original message.
+ virtual void OnAckReceived(chrome_browser_sharing::MessageType message_type,
+ const std::string& message_id) = 0;
};
AckMessageHandler();
diff --git a/chrome/browser/sharing/ack_message_handler_unittest.cc b/chrome/browser/sharing/ack_message_handler_unittest.cc
index 6addf3d..1a3cb39 100644
--- a/chrome/browser/sharing/ack_message_handler_unittest.cc
+++ b/chrome/browser/sharing/ack_message_handler_unittest.cc
@@ -11,13 +11,20 @@
class TestObserver : public AckMessageHandler::AckMessageObserver {
public:
- void OnAckReceived(const std::string& message_id) override {
+ void OnAckReceived(chrome_browser_sharing::MessageType message_type,
+ const std::string& message_id) override {
+ received_message_type_ = message_type;
received_message_id_ = message_id;
}
+ chrome_browser_sharing::MessageType received_message_type() const {
+ return received_message_type_;
+ }
+
std::string received_message_id() const { return received_message_id_; }
private:
+ chrome_browser_sharing::MessageType received_message_type_;
std::string received_message_id_;
};
@@ -37,8 +44,12 @@
chrome_browser_sharing::SharingMessage sharing_message;
sharing_message.mutable_ack_message()->set_original_message_id(
kTestMessageId);
+ sharing_message.mutable_ack_message()->set_original_message_type(
+ chrome_browser_sharing::CLICK_TO_CALL_MESSAGE);
ack_message_handler_.OnMessage(sharing_message);
EXPECT_EQ(kTestMessageId, test_observer_.received_message_id());
+ EXPECT_EQ(chrome_browser_sharing::CLICK_TO_CALL_MESSAGE,
+ test_observer_.received_message_type());
}
diff --git a/chrome/browser/sharing/proto/sharing_message.proto b/chrome/browser/sharing/proto/sharing_message.proto
index 29bda1a..d6cc93c 100644
--- a/chrome/browser/sharing/proto/sharing_message.proto
+++ b/chrome/browser/sharing/proto/sharing_message.proto
@@ -12,6 +12,18 @@
// Required in Chrome.
option optimize_for = LITE_RUNTIME;
+// Enum for identifying a message type.
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused. Keep this in sync with
+// SharingMessageType in enums.xml.
+enum MessageType {
+ UNKNOWN_MESSAGE = 0;
+ PING_MESSAGE = 1;
+ ACK_MESSAGE = 2;
+ CLICK_TO_CALL_MESSAGE = 3;
+ SHARED_CLIPBOARD_MESSAGE = 4;
+}
+
// Message for sending between devices in Sharing.
message SharingMessage {
// Identifier of sender. required.
@@ -41,6 +53,9 @@
message AckMessage {
// required.
string original_message_id = 1;
+
+ // The type of message that this is acknowledging. optional.
+ MessageType original_message_type = 2;
}
// Message for data necessary to send an AckMessage to the sender.
diff --git a/chrome/browser/sharing/sharing_fcm_handler.cc b/chrome/browser/sharing/sharing_fcm_handler.cc
index 477217a2..ccf11c78 100644
--- a/chrome/browser/sharing/sharing_fcm_handler.cc
+++ b/chrome/browser/sharing/sharing_fcm_handler.cc
@@ -105,7 +105,17 @@
DCHECK(sharing_message.payload_case() != SharingMessage::PAYLOAD_NOT_SET)
<< "No payload set in SharingMessage received";
- LogSharingMessageReceived(sharing_message.payload_case());
+ chrome_browser_sharing::MessageType message_type =
+ chrome_browser_sharing::UNKNOWN_MESSAGE;
+ if (sharing_message.payload_case() ==
+ chrome_browser_sharing::SharingMessage::kAckMessage) {
+ DCHECK(sharing_message.has_ack_message());
+ message_type = sharing_message.ack_message().original_message_type();
+ } else {
+ message_type =
+ SharingPayloadCaseToMessageType(sharing_message.payload_case());
+ }
+ LogSharingMessageReceived(message_type, sharing_message.payload_case());
auto it = sharing_handlers_.find(sharing_message.payload_case());
if (it == sharing_handlers_.end()) {
@@ -152,26 +162,33 @@
SharingMessage ack_message;
ack_message.mutable_ack_message()->set_original_message_id(
original_message_id);
+ chrome_browser_sharing::MessageType original_message_type =
+ SharingPayloadCaseToMessageType(original_message.payload_case());
+ ack_message.mutable_ack_message()->set_original_message_type(
+ original_message_type);
base::Optional<syncer::DeviceInfo::SharingInfo> sharing_info =
GetSharingInfo(original_message);
if (!sharing_info) {
LOG(ERROR) << "Unable to find sharing info";
- LogSendSharingAckMessageResult(SharingSendMessageResult::kDeviceNotFound);
+ LogSendSharingAckMessageResult(original_message_type,
+ SharingSendMessageResult::kDeviceNotFound);
return;
}
sharing_fcm_sender_->SendMessageToDevice(
std::move(*sharing_info), kAckTimeToLive, std::move(ack_message),
base::BindOnce(&SharingFCMHandler::OnAckMessageSent,
- weak_ptr_factory_.GetWeakPtr(), original_message_id));
+ weak_ptr_factory_.GetWeakPtr(), original_message_id,
+ original_message_type));
}
void SharingFCMHandler::OnAckMessageSent(
const std::string& original_message_id,
+ chrome_browser_sharing::MessageType original_message_type,
SharingSendMessageResult result,
base::Optional<std::string> message_id) {
- LogSendSharingAckMessageResult(result);
+ LogSendSharingAckMessageResult(original_message_type, result);
if (result != SharingSendMessageResult::kSuccessful)
LOG(ERROR) << "Failed to send ack mesage for " << original_message_id;
}
diff --git a/chrome/browser/sharing/sharing_fcm_handler.h b/chrome/browser/sharing/sharing_fcm_handler.h
index 6d0c3ee..c6e389da 100644
--- a/chrome/browser/sharing/sharing_fcm_handler.h
+++ b/chrome/browser/sharing/sharing_fcm_handler.h
@@ -76,9 +76,11 @@
void SendAckMessage(const SharingMessage& original_message,
const std::string& original_message_id);
- void OnAckMessageSent(const std::string& original_message_id,
- SharingSendMessageResult result,
- base::Optional<std::string> message_id);
+ void OnAckMessageSent(
+ const std::string& original_message_id,
+ chrome_browser_sharing::MessageType original_message_type,
+ SharingSendMessageResult result,
+ base::Optional<std::string> message_id);
gcm::GCMDriver* const gcm_driver_;
SharingFCMSender* sharing_fcm_sender_;
diff --git a/chrome/browser/sharing/sharing_fcm_handler_unittest.cc b/chrome/browser/sharing/sharing_fcm_handler_unittest.cc
index 3a32ac75..3aae1a10 100644
--- a/chrome/browser/sharing/sharing_fcm_handler_unittest.cc
+++ b/chrome/browser/sharing/sharing_fcm_handler_unittest.cc
@@ -50,7 +50,7 @@
MOCK_METHOD4(SendMessageToDevice,
void(syncer::DeviceInfo::SharingInfo target,
base::TimeDelta time_to_live,
- chrome_browser_sharing::SharingMessage message,
+ SharingMessage message,
SendMessageCallback callback));
};
@@ -142,6 +142,8 @@
SharingMessage sharing_ack_message;
sharing_ack_message.mutable_ack_message()->set_original_message_id(
kTestMessageId);
+ sharing_ack_message.mutable_ack_message()->set_original_message_type(
+ chrome_browser_sharing::PING_MESSAGE);
// Tests OnMessage flow in SharingFCMHandler when no handler is registered.
EXPECT_CALL(mock_sharing_message_handler_, OnMessage(_)).Times(0);
@@ -183,6 +185,8 @@
SharingMessage sharing_ack_message;
sharing_ack_message.mutable_ack_message()->set_original_message_id(
kTestMessageId);
+ sharing_ack_message.mutable_ack_message()->set_original_message_type(
+ chrome_browser_sharing::PING_MESSAGE);
// Tests OnMessage flow in SharingFCMHandler after handler is added.
EXPECT_CALL(mock_sharing_message_handler_,
@@ -212,6 +216,8 @@
SharingMessage sharing_ack_message;
sharing_ack_message.mutable_ack_message()->set_original_message_id(
kTestMessageId);
+ sharing_ack_message.mutable_ack_message()->set_original_message_type(
+ chrome_browser_sharing::PING_MESSAGE);
EXPECT_CALL(mock_sharing_message_handler_,
OnMessage(ProtoEquals(sharing_message)));
diff --git a/chrome/browser/sharing/sharing_metrics.cc b/chrome/browser/sharing/sharing_metrics.cc
index f49fbd2..7ab85015 100644
--- a/chrome/browser/sharing/sharing_metrics.cc
+++ b/chrome/browser/sharing/sharing_metrics.cc
@@ -18,34 +18,6 @@
#include "services/metrics/public/cpp/ukm_source_id.h"
namespace {
-
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class SharingMessageType {
- kUnknownMessage = 0,
- kPingMessage = 1,
- kAckMessage = 2,
- kClickToCallMessage = 3,
- kSharedClipboardMessage = 4,
- kMaxValue = kSharedClipboardMessage,
-};
-
-SharingMessageType PayloadCaseToMessageType(
- chrome_browser_sharing::SharingMessage::PayloadCase payload_case) {
- switch (payload_case) {
- case chrome_browser_sharing::SharingMessage::PAYLOAD_NOT_SET:
- return SharingMessageType::kUnknownMessage;
- case chrome_browser_sharing::SharingMessage::kPingMessage:
- return SharingMessageType::kPingMessage;
- case chrome_browser_sharing::SharingMessage::kAckMessage:
- return SharingMessageType::kAckMessage;
- case chrome_browser_sharing::SharingMessage::kClickToCallMessage:
- return SharingMessageType::kClickToCallMessage;
- case chrome_browser_sharing::SharingMessage::kSharedClipboardMessage:
- return SharingMessageType::kSharedClipboardMessage;
- }
-}
-
const char* GetEnumStringValue(SharingFeatureName feature) {
DCHECK(feature != SharingFeatureName::kUnknown)
<< "Feature needs to be specified for metrics logging.";
@@ -59,12 +31,54 @@
return "SharedClipboard";
}
}
+
+const std::string& MessageTypeToMessageSuffix(
+ chrome_browser_sharing::MessageType message_type) {
+ // For proto3 enums unrecognized enum values are kept when parsing and their
+ // name is an empty string. We don't want to use that as a histogram suffix.
+ // The returned values must match the values of the SharingMessage suffixes
+ // defined in histograms.xml.
+ if (!chrome_browser_sharing::MessageType_IsValid(message_type)) {
+ return chrome_browser_sharing::MessageType_Name(
+ chrome_browser_sharing::UNKNOWN_MESSAGE);
+ }
+ return chrome_browser_sharing::MessageType_Name(message_type);
+}
} // namespace
-void LogSharingMessageReceived(
+chrome_browser_sharing::MessageType SharingPayloadCaseToMessageType(
chrome_browser_sharing::SharingMessage::PayloadCase payload_case) {
- base::UmaHistogramEnumeration("Sharing.MessageReceivedType",
- PayloadCaseToMessageType(payload_case));
+ switch (payload_case) {
+ case chrome_browser_sharing::SharingMessage::PAYLOAD_NOT_SET:
+ return chrome_browser_sharing::UNKNOWN_MESSAGE;
+ case chrome_browser_sharing::SharingMessage::kPingMessage:
+ return chrome_browser_sharing::PING_MESSAGE;
+ case chrome_browser_sharing::SharingMessage::kAckMessage:
+ return chrome_browser_sharing::ACK_MESSAGE;
+ case chrome_browser_sharing::SharingMessage::kClickToCallMessage:
+ return chrome_browser_sharing::CLICK_TO_CALL_MESSAGE;
+ case chrome_browser_sharing::SharingMessage::kSharedClipboardMessage:
+ return chrome_browser_sharing::SHARED_CLIPBOARD_MESSAGE;
+ }
+ // For proto3 enums unrecognized enum values are kept when parsing, and a new
+ // payload case received over the network would not default to
+ // PAYLOAD_NOT_SET. Explicitly return UNKNOWN_MESSAGE here to handle this
+ // case.
+ return chrome_browser_sharing::UNKNOWN_MESSAGE;
+}
+
+void LogSharingMessageReceived(
+ chrome_browser_sharing::MessageType original_message_type,
+ chrome_browser_sharing::SharingMessage::PayloadCase payload_case) {
+ chrome_browser_sharing::MessageType actual_message_type =
+ SharingPayloadCaseToMessageType(payload_case);
+ base::UmaHistogramExactLinear("Sharing.MessageReceivedType",
+ actual_message_type,
+ chrome_browser_sharing::MessageType_ARRAYSIZE);
+ base::UmaHistogramExactLinear(
+ base::StrCat({"Sharing.MessageReceivedType.",
+ MessageTypeToMessageSuffix(original_message_type)}),
+ actual_message_type, chrome_browser_sharing::MessageType_ARRAYSIZE);
}
void LogSharingRegistrationResult(SharingDeviceRegistrationResult result) {
@@ -150,8 +164,13 @@
/*value_max=*/20);
}
-void LogSharingMessageAckTime(base::TimeDelta time) {
+void LogSharingMessageAckTime(chrome_browser_sharing::MessageType message_type,
+ base::TimeDelta time) {
base::UmaHistogramMediumTimes("Sharing.MessageAckTime", time);
+ base::UmaHistogramMediumTimes(
+ base::StrCat({"Sharing.MessageAckTime.",
+ MessageTypeToMessageSuffix(message_type)}),
+ time);
}
void LogSharingDialogShown(SharingFeatureName feature, SharingDialogType type) {
@@ -164,12 +183,24 @@
base::UmaHistogramEnumeration("Sharing.ClickToCallHelpTextClicked", type);
}
-void LogSendSharingMessageResult(SharingSendMessageResult result) {
+void LogSendSharingMessageResult(
+ chrome_browser_sharing::MessageType message_type,
+ SharingSendMessageResult result) {
base::UmaHistogramEnumeration("Sharing.SendMessageResult", result);
+ base::UmaHistogramEnumeration(
+ base::StrCat({"Sharing.SendMessageResult.",
+ MessageTypeToMessageSuffix(message_type)}),
+ result);
}
-void LogSendSharingAckMessageResult(SharingSendMessageResult result) {
+void LogSendSharingAckMessageResult(
+ chrome_browser_sharing::MessageType message_type,
+ SharingSendMessageResult result) {
base::UmaHistogramEnumeration("Sharing.SendAckMessageResult", result);
+ base::UmaHistogramEnumeration(
+ base::StrCat({"Sharing.SendAckMessageResult.",
+ MessageTypeToMessageSuffix(message_type)}),
+ result);
}
void LogClickToCallUKM(content::WebContents* web_contents,
diff --git a/chrome/browser/sharing/sharing_metrics.h b/chrome/browser/sharing/sharing_metrics.h
index f3fcb81c..efc6736f 100644
--- a/chrome/browser/sharing/sharing_metrics.h
+++ b/chrome/browser/sharing/sharing_metrics.h
@@ -5,9 +5,8 @@
#ifndef CHROME_BROWSER_SHARING_SHARING_METRICS_H_
#define CHROME_BROWSER_SHARING_SHARING_METRICS_H_
-#include "chrome/browser/sharing/proto/sharing_message.pb.h"
-
#include "base/time/time.h"
+#include "chrome/browser/sharing/proto/sharing_message.pb.h"
#include "chrome/browser/sharing/sharing_constants.h"
#include "chrome/browser/sharing/sharing_send_message_result.h"
@@ -72,9 +71,15 @@
const char kSharingClickToCallUiContextMenu[] = "ContextMenu";
const char kSharingClickToCallUiDialog[] = "Dialog";
+chrome_browser_sharing::MessageType SharingPayloadCaseToMessageType(
+ chrome_browser_sharing::SharingMessage::PayloadCase payload_case);
+
// Logs the |payload_case| to UMA. This should be called when a SharingMessage
-// is received.
+// is received. Additionally, a suffixed version of the histogram is logged
+// using |original_message_type| which is different from the actual message type
+// for ack messages.
void LogSharingMessageReceived(
+ chrome_browser_sharing::MessageType original_message_type,
chrome_browser_sharing::SharingMessage::PayloadCase payload_case);
// Logs the |result| to UMA. This should be called after attempting register
@@ -126,7 +131,8 @@
// Logs to UMA the time from sending a FCM message from the Sharing service
// until an ack message is received for it.
-void LogSharingMessageAckTime(base::TimeDelta time);
+void LogSharingMessageAckTime(chrome_browser_sharing::MessageType message_type,
+ base::TimeDelta time);
// Logs to UMA the |type| of dialog shown for sharing feature.
void LogSharingDialogShown(SharingFeatureName feature, SharingDialogType type);
@@ -137,10 +143,14 @@
// Logs to UMA result of sending a SharingMessage. This should not be called for
// sending ack messages.
-void LogSendSharingMessageResult(SharingSendMessageResult result);
+void LogSendSharingMessageResult(
+ chrome_browser_sharing::MessageType message_type,
+ SharingSendMessageResult result);
// Logs to UMA result of sendin an ack of a SharingMessage.
-void LogSendSharingAckMessageResult(SharingSendMessageResult result);
+void LogSendSharingAckMessageResult(
+ chrome_browser_sharing::MessageType message_type,
+ SharingSendMessageResult result);
// Records a Click to Call selection to UKM. This is logged after a completed
// action like selecting an app or a device to send the phone number to.
diff --git a/chrome/browser/sharing/sharing_service.cc b/chrome/browser/sharing/sharing_service.cc
index 51230dd0..85c94be0 100644
--- a/chrome/browser/sharing/sharing_service.cc
+++ b/chrome/browser/sharing/sharing_service.cc
@@ -268,18 +268,20 @@
SendMessageCallback callback) {
std::string message_guid = base::GenerateGUID();
send_message_callbacks_.emplace(message_guid, std::move(callback));
+ chrome_browser_sharing::MessageType message_type =
+ SharingPayloadCaseToMessageType(message.payload_case());
base::PostDelayedTask(
FROM_HERE, {base::TaskPriority::USER_VISIBLE, content::BrowserThread::UI},
base::BindOnce(&SharingService::InvokeSendMessageCallback,
- weak_ptr_factory_.GetWeakPtr(), message_guid,
+ weak_ptr_factory_.GetWeakPtr(), message_guid, message_type,
SharingSendMessageResult::kAckTimeout),
kSendMessageTimeout);
base::Optional<syncer::DeviceInfo::SharingInfo> sharing_info =
sync_prefs_->GetSharingInfo(device_guid);
if (!sharing_info) {
- InvokeSendMessageCallback(message_guid,
+ InvokeSendMessageCallback(message_guid, message_type,
SharingSendMessageResult::kDeviceNotFound);
return;
}
@@ -288,7 +290,7 @@
std::move(*sharing_info), time_to_live, std::move(message),
base::BindOnce(&SharingService::OnMessageSent,
weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now(),
- message_guid));
+ message_guid, message_type));
}
void SharingService::SetDeviceInfoTrackerForTesting(
@@ -296,12 +298,14 @@
device_info_tracker_ = tracker;
}
-void SharingService::OnMessageSent(base::TimeTicks start_time,
- const std::string& message_guid,
- SharingSendMessageResult result,
- base::Optional<std::string> message_id) {
+void SharingService::OnMessageSent(
+ base::TimeTicks start_time,
+ const std::string& message_guid,
+ chrome_browser_sharing::MessageType message_type,
+ SharingSendMessageResult result,
+ base::Optional<std::string> message_id) {
if (result != SharingSendMessageResult::kSuccessful) {
- InvokeSendMessageCallback(message_guid, result);
+ InvokeSendMessageCallback(message_guid, message_type, result);
return;
}
@@ -309,10 +313,13 @@
message_guids_.emplace(*message_id, message_guid);
}
-void SharingService::OnAckReceived(const std::string& message_id) {
+void SharingService::OnAckReceived(
+ chrome_browser_sharing::MessageType message_type,
+ const std::string& message_id) {
auto times_iter = send_message_times_.find(message_id);
if (times_iter != send_message_times_.end()) {
- LogSharingMessageAckTime(base::TimeTicks::Now() - times_iter->second);
+ LogSharingMessageAckTime(message_type,
+ base::TimeTicks::Now() - times_iter->second);
send_message_times_.erase(times_iter);
}
@@ -322,12 +329,13 @@
std::string message_guid = std::move(iter->second);
message_guids_.erase(iter);
- InvokeSendMessageCallback(message_guid,
+ InvokeSendMessageCallback(message_guid, message_type,
SharingSendMessageResult::kSuccessful);
}
void SharingService::InvokeSendMessageCallback(
const std::string& message_guid,
+ chrome_browser_sharing::MessageType message_type,
SharingSendMessageResult result) {
auto iter = send_message_callbacks_.find(message_guid);
if (iter == send_message_callbacks_.end())
@@ -336,7 +344,7 @@
SendMessageCallback callback = std::move(iter->second);
send_message_callbacks_.erase(iter);
std::move(callback).Run(result);
- LogSendSharingMessageResult(result);
+ LogSendSharingMessageResult(message_type, result);
}
void SharingService::OnDeviceInfoChange() {
diff --git a/chrome/browser/sharing/sharing_service.h b/chrome/browser/sharing/sharing_service.h
index eb885618..5bb5b0e 100644
--- a/chrome/browser/sharing/sharing_service.h
+++ b/chrome/browser/sharing/sharing_service.h
@@ -134,7 +134,8 @@
void OnSyncCycleCompleted(syncer::SyncService* sync) override;
// AckMessageHandler::AckMessageObserver override.
- void OnAckReceived(const std::string& message_id) override;
+ void OnAckReceived(chrome_browser_sharing::MessageType message_type,
+ const std::string& message_id) override;
// syncer::DeviceInfoTracker::Observer.
void OnDeviceInfoChange() override;
@@ -149,10 +150,13 @@
void OnMessageSent(base::TimeTicks start_time,
const std::string& message_guid,
+ chrome_browser_sharing::MessageType message_type,
SharingSendMessageResult result,
base::Optional<std::string> message_id);
- void InvokeSendMessageCallback(const std::string& message_guid,
- SharingSendMessageResult result);
+ void InvokeSendMessageCallback(
+ const std::string& message_guid,
+ chrome_browser_sharing::MessageType message_type,
+ SharingSendMessageResult result);
// Returns true if required sync feature is enabled.
bool IsSyncEnabled() const;
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index ff4d6cad..ecf5470 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -133692,6 +133692,8 @@
</histogram>
<histogram name="Sharing.MessageAckTime" units="ms" expires_after="2020-02-02">
+<!-- Name completed by histogram_suffixes name="SharingMessage" -->
+
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
@@ -133702,6 +133704,8 @@
<histogram name="Sharing.MessageReceivedType" enum="SharingMessageType"
expires_after="2020-02-02">
+<!-- Name completed by histogram_suffixes name="SharingMessage" -->
+
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
@@ -133713,6 +133717,8 @@
<histogram name="Sharing.SendAckMessageResult" enum="SharingSendMessageResult"
expires_after="M80">
+<!-- Name completed by histogram_suffixes name="SharingMessage" -->
+
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
@@ -133736,6 +133742,8 @@
<histogram name="Sharing.SendMessageResult" enum="SharingSendMessageResult"
expires_after="M80">
+<!-- Name completed by histogram_suffixes name="SharingMessage" -->
+
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
@@ -178566,6 +178574,18 @@
<affected-histogram name="Sharing.ClickToCallSelectedDeviceIndex"/>
</histogram_suffixes>
+<histogram_suffixes name="SharingMessage" separator=".">
+ <suffix name="ACK_MESSAGE" label="Ack Message"/>
+ <suffix name="CLICK_TO_CALL_MESSAGE" label="Click To Call Message"/>
+ <suffix name="PING_MESSAGE" label="Ping Message"/>
+ <suffix name="SHARED_CLIPBOARD_MESSAGE" label="Shared Clipboard Message"/>
+ <suffix name="UNKNOWN_MESSAGE" label="Unknown Message"/>
+ <affected-histogram name="Sharing.MessageAckTime"/>
+ <affected-histogram name="Sharing.MessageReceivedType"/>
+ <affected-histogram name="Sharing.SendAckMessageResult"/>
+ <affected-histogram name="Sharing.SendMessageResult"/>
+</histogram_suffixes>
+
<histogram_suffixes name="ShillCumulativeTimeOnline" separator=".">
<suffix name="Any" label="Any connection type"/>
<suffix name="Cellular" label="Cellular connection"/>