summaryrefslogtreecommitdiffstats
path: root/ui/base
diff options
context:
space:
mode:
authorvasilii@chromium.org <vasilii@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-27 11:06:23 +0000
committervasilii@chromium.org <vasilii@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-27 11:06:23 +0000
commitc978cb9be76044e3d2dbcf6a53c693c6fc1959de (patch)
treea3ce7445fb15c5414fd0ff209f71e3dded2ebde6 /ui/base
parent6cd128d23c9c576ce449fcc3022ce58876601f49 (diff)
downloadchromium_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.cc32
-rw-r--r--ui/base/clipboard/clipboard.h11
-rw-r--r--ui/base/clipboard/clipboard_android.cc1
-rw-r--r--ui/base/clipboard/clipboard_aurax11.cc3
-rw-r--r--ui/base/clipboard/clipboard_chromeos.cc3
-rw-r--r--ui/base/clipboard/clipboard_gtk.cc3
-rw-r--r--ui/base/clipboard/clipboard_mac.mm3
-rw-r--r--ui/base/clipboard/clipboard_win.cc3
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);
}