Chromium Code Reviews| Index: ui/base/clipboard/clipboard.cc |
| diff --git a/ui/base/clipboard/clipboard.cc b/ui/base/clipboard/clipboard.cc |
| index e384c6528d70dbc4bdd01ad8832b5704d1f3864e..3b4fdbacf77b34c4eab0f827a706b2e79e0469db 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,33 @@ 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); |
|
battre
2013/02/21 15:54:22
Should we only handle WRITE_CLIPBOARD_SOURCE_TAG h
vasilii
2013/02/21 18:04:03
No. This gives us an idea how often users copy som
|
| + 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: |
| + case READ_ASCII_TEXT: |
| + case READ_RTF: |
| + if (kInvalidSourceTag == ReadSourceTag(buffer)) { |
| + UMA_HISTOGRAM_ENUMERATION("Clipboard.IncognitoUseCase", |
| + action, |
| + MAX_TRACKED_ACTION); |
| + } |
| + break; |
| + case MAX_TRACKED_ACTION: |
| + break; |
| + } |
| +} |
| + |
| } // namespace ui |