| Index: ui/base/clipboard/clipboard.cc
|
| diff --git a/ui/base/clipboard/clipboard.cc b/ui/base/clipboard/clipboard.cc
|
| index e384c6528d70dbc4bdd01ad8832b5704d1f3864e..32cea0edd7e73c88cd2b2ca67245353b7ef6e77b 100644
|
| --- a/ui/base/clipboard/clipboard.cc
|
| +++ b/ui/base/clipboard/clipboard.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/metrics/histogram.h"
|
| #include "base/synchronization/lock.h"
|
| #include "ui/gfx/size.h"
|
|
|
| @@ -103,6 +104,8 @@ union SourceTag2BinaryHelper {
|
|
|
| } // namespace
|
|
|
| +const Clipboard::SourceTag Clipboard::kInvalidSourceTag =
|
| + reinterpret_cast<void*>(1);
|
| const char Clipboard::kMimeTypeText[] = "text/plain";
|
| const char Clipboard::kMimeTypeURIList[] = "text/uri-list";
|
| const char Clipboard::kMimeTypeDownloadURL[] = "downloadurl";
|
| @@ -186,6 +189,8 @@ void Clipboard::WriteObjects(Buffer buffer,
|
| WriteObjectsImpl(buffer, objects, tag);
|
| if (!write_objects_callback_.is_null())
|
| write_objects_callback_.Run(buffer);
|
| + ReportAction(buffer, tag == SourceTag() ? WRITE_CLIPBOARD_NO_SOURCE_TAG
|
| + : WRITE_CLIPBOARD_SOURCE_TAG);
|
| }
|
|
|
| void Clipboard::DispatchObject(ObjectType type, const ObjectMapParams& params) {
|
| @@ -299,4 +304,31 @@ void Clipboard::ReplaceSharedMemHandle(ObjectMap* objects,
|
| }
|
| }
|
|
|
| +void Clipboard::ReportAction(Buffer buffer, TrackedAction action) const
|
| +{
|
| + if (buffer != BUFFER_STANDARD)
|
| + return;
|
| +
|
| + switch (action) {
|
| + case WRITE_CLIPBOARD_NO_SOURCE_TAG:
|
| + case WRITE_CLIPBOARD_SOURCE_TAG:
|
| + UMA_HISTOGRAM_ENUMERATION("Clipboard.IncognitoUseCase",
|
| + action,
|
| + MAX_TRACKED_ACTION);
|
| + break;
|
| + // The code below counts cases when there is the kInvalidSourceTag in the
|
| + // clipboard. That is, original data came from Incognito window and was
|
| + // destroyed with that window.
|
| + case READ_TEXT:
|
| + if (kInvalidSourceTag == ReadSourceTag(buffer)) {
|
| + UMA_HISTOGRAM_ENUMERATION("Clipboard.IncognitoUseCase",
|
| + action,
|
| + MAX_TRACKED_ACTION);
|
| + }
|
| + break;
|
| + case MAX_TRACKED_ACTION:
|
| + break;
|
| + }
|
| +}
|
| +
|
| } // namespace ui
|
|
|