diff options
author | vasilii@chromium.org <vasilii@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-27 11:06:23 +0000 |
---|---|---|
committer | vasilii@chromium.org <vasilii@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-27 11:06:23 +0000 |
commit | c978cb9be76044e3d2dbcf6a53c693c6fc1959de (patch) | |
tree | a3ce7445fb15c5414fd0ff209f71e3dded2ebde6 /ui/base | |
parent | 6cd128d23c9c576ce449fcc3022ce58876601f49 (diff) | |
download | chromium_src-c978cb9be76044e3d2dbcf6a53c693c6fc1959de.zip chromium_src-c978cb9be76044e3d2dbcf6a53c693c6fc1959de.tar.gz chromium_src-c978cb9be76044e3d2dbcf6a53c693c6fc1959de.tar.bz2 |
The purpose of this patch is to collect some statistics on how often a user copies something from incognito window, closes it and tries to paste. The statistics will serve to justify or delay the whole feature described in the bug.
BUG=171974
Review URL: https://chromiumcodereview.appspot.com/12313009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184931 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base')
-rw-r--r-- | ui/base/clipboard/clipboard.cc | 32 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard.h | 11 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_android.cc | 1 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_aurax11.cc | 3 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_chromeos.cc | 3 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_gtk.cc | 3 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_mac.mm | 3 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_win.cc | 3 |
8 files changed, 59 insertions, 0 deletions
diff --git a/ui/base/clipboard/clipboard.cc b/ui/base/clipboard/clipboard.cc index e384c65..32cea0e 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 diff --git a/ui/base/clipboard/clipboard.h b/ui/base/clipboard/clipboard.h index ae72165..1f5cf20 100644 --- a/ui/base/clipboard/clipboard.h +++ b/ui/base/clipboard/clipboard.h @@ -173,6 +173,8 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { // WriteObject() caller can use the SourceTag that will be stored in the // clipboard. NULL value means "no tag". typedef void* SourceTag; + // kInvalidSourceTag is not NULL but a special value != any pointer. + static const SourceTag kInvalidSourceTag; static ObjectMapParam SourceTag2Binary(SourceTag tag); static SourceTag Binary2SourceTag(const std::string& serialization); @@ -355,6 +357,15 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { size_t data_len); void WriteSourceTag(SourceTag tag); + + enum TrackedAction { + WRITE_CLIPBOARD_NO_SOURCE_TAG, + WRITE_CLIPBOARD_SOURCE_TAG, + READ_TEXT, + MAX_TRACKED_ACTION, + }; + + void ReportAction(Buffer buffer, TrackedAction action) const; #if defined(OS_WIN) void WriteBitmapFromHandle(HBITMAP source_hbitmap, const gfx::Size& size); diff --git a/ui/base/clipboard/clipboard_android.cc b/ui/base/clipboard/clipboard_android.cc index e972a3a..52748e8 100644 --- a/ui/base/clipboard/clipboard_android.cc +++ b/ui/base/clipboard/clipboard_android.cc @@ -254,6 +254,7 @@ void Clipboard::ReadText(Clipboard::Buffer buffer, string16* result) const { void Clipboard::ReadAsciiText(Clipboard::Buffer buffer, std::string* result) const { DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); *result = g_map.Get().Get(kPlainTextFormat); } diff --git a/ui/base/clipboard/clipboard_aurax11.cc b/ui/base/clipboard/clipboard_aurax11.cc index 44cbe42..291a033 100644 --- a/ui/base/clipboard/clipboard_aurax11.cc +++ b/ui/base/clipboard/clipboard_aurax11.cc @@ -961,6 +961,7 @@ void Clipboard::ReadAvailableTypes(Buffer buffer, std::vector<string16>* types, void Clipboard::ReadText(Buffer buffer, string16* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); scoped_ptr<SelectionData> data(aurax11_details_->RequestAndWaitForTypes( buffer, aurax11_details_->GetTextAtoms())); @@ -972,6 +973,7 @@ void Clipboard::ReadText(Buffer buffer, string16* result) const { void Clipboard::ReadAsciiText(Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); scoped_ptr<SelectionData> data(aurax11_details_->RequestAndWaitForTypes( buffer, aurax11_details_->GetTextAtoms())); @@ -1020,6 +1022,7 @@ void Clipboard::ReadHTML(Buffer buffer, void Clipboard::ReadRTF(Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); scoped_ptr<SelectionData> data(aurax11_details_->RequestAndWaitForTypes( buffer, aurax11_details_->GetAtomsForFormat(GetRtfFormatType()))); diff --git a/ui/base/clipboard/clipboard_chromeos.cc b/ui/base/clipboard/clipboard_chromeos.cc index 86cffb7..4517563 100644 --- a/ui/base/clipboard/clipboard_chromeos.cc +++ b/ui/base/clipboard/clipboard_chromeos.cc @@ -543,11 +543,13 @@ void Clipboard::ReadAvailableTypes(Buffer buffer, std::vector<string16>* types, void Clipboard::ReadText(Buffer buffer, string16* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); GetClipboard()->ReadText(result); } void Clipboard::ReadAsciiText(Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); GetClipboard()->ReadAsciiText(result); } @@ -562,6 +564,7 @@ void Clipboard::ReadHTML(Buffer buffer, void Clipboard::ReadRTF(Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); GetClipboard()->ReadRTF(result); } diff --git a/ui/base/clipboard/clipboard_gtk.cc b/ui/base/clipboard/clipboard_gtk.cc index 5642653..03b45c9 100644 --- a/ui/base/clipboard/clipboard_gtk.cc +++ b/ui/base/clipboard/clipboard_gtk.cc @@ -463,6 +463,7 @@ void Clipboard::ReadAvailableTypes(Clipboard::Buffer buffer, void Clipboard::ReadText(Clipboard::Buffer buffer, string16* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); GtkClipboard* clipboard = LookupBackingClipboard(buffer); if (clipboard == NULL) return; @@ -481,6 +482,7 @@ void Clipboard::ReadText(Clipboard::Buffer buffer, string16* result) const { void Clipboard::ReadAsciiText(Clipboard::Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); GtkClipboard* clipboard = LookupBackingClipboard(buffer); if (clipboard == NULL) return; @@ -542,6 +544,7 @@ void Clipboard::ReadHTML(Clipboard::Buffer buffer, string16* markup, void Clipboard::ReadRTF(Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); + ReportAction(buffer, READ_TEXT); ReadData(GetRtfFormatType(), result); } diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm index 89febe7..99a24a6 100644 --- a/ui/base/clipboard/clipboard_mac.mm +++ b/ui/base/clipboard/clipboard_mac.mm @@ -293,6 +293,7 @@ void Clipboard::ReadAvailableTypes(Clipboard::Buffer buffer, void Clipboard::ReadText(Clipboard::Buffer buffer, string16* result) const { DCHECK(CalledOnValidThread()); DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); NSPasteboard* pb = GetPasteboard(); NSString* contents = [pb stringForType:NSStringPboardType]; @@ -305,6 +306,7 @@ void Clipboard::ReadAsciiText(Clipboard::Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); NSPasteboard* pb = GetPasteboard(); NSString* contents = [pb stringForType:NSStringPboardType]; @@ -348,6 +350,7 @@ void Clipboard::ReadHTML(Clipboard::Buffer buffer, string16* markup, void Clipboard::ReadRTF(Buffer buffer, std::string* result) const { DCHECK(CalledOnValidThread()); DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); return ReadData(GetRtfFormatType(), result); } diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc index 238e047..08f14b1 100644 --- a/ui/base/clipboard/clipboard_win.cc +++ b/ui/base/clipboard/clipboard_win.cc @@ -437,6 +437,7 @@ void Clipboard::ReadAvailableTypes(Clipboard::Buffer buffer, void Clipboard::ReadText(Clipboard::Buffer buffer, string16* result) const { DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); if (!result) { NOTREACHED(); return; @@ -460,6 +461,7 @@ void Clipboard::ReadText(Clipboard::Buffer buffer, string16* result) const { void Clipboard::ReadAsciiText(Clipboard::Buffer buffer, std::string* result) const { DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); if (!result) { NOTREACHED(); return; @@ -532,6 +534,7 @@ void Clipboard::ReadHTML(Clipboard::Buffer buffer, string16* markup, void Clipboard::ReadRTF(Buffer buffer, std::string* result) const { DCHECK_EQ(buffer, BUFFER_STANDARD); + ReportAction(buffer, READ_TEXT); ReadData(GetRtfFormatType(), result); } |