Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(727)

Unified Diff: third_party/WebKit/Source/core/frame/VisualViewport.cpp

Issue 1358173008: Add UMA stats for pinch-zoom behavior on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/frame/VisualViewport.cpp
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.cpp b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
index d6472c65beed2a7c3115a1f23f3a9c20361bebe0..1172fab5091b7af5b5dd26ed62b8a64a37b4cee3 100644
--- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp
+++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
@@ -71,12 +71,15 @@ VisualViewport::VisualViewport(FrameHost& owner)
: m_frameHost(&owner)
, m_scale(1)
, m_topControlsAdjustment(0)
+ , m_maxPageScale(-1)
+ , m_trackPinchZoomStatsForPage(false)
{
reset();
}
VisualViewport::~VisualViewport()
{
+ sendUMAMetrics();
Rick Byers 2015/09/28 18:43:58 Is there already an established pattern for render
bokan 2015/09/29 20:33:20 I copied this pattern from the Blink useCounter wh
bokan 2015/10/01 20:58:15 Right, so this wont report stats for a page if the
Rick Byers 2015/10/02 00:53:22 Ugh, that's a pain. I didn't realize UseCounter d
}
DEFINE_TRACE(VisualViewport)
@@ -654,6 +657,55 @@ IntPoint VisualViewport::rootFrameToViewport(const IntPoint& pointInRootFrame) c
return flooredIntPoint(FloatPoint(rootFrameToViewport(FloatPoint(pointInRootFrame))));
}
+void VisualViewport::startTrackingPinchStats()
+{
+#if !OS(ANDROID)
+ return;
Rick Byers 2015/09/28 18:43:58 Always sucks to add more #if OS(ANDROID (eg. makes
bokan 2015/10/01 20:18:31 Gone in latest patch.
+#endif
+
+ if (!mainFrame())
+ return;
+
+ Document* document = mainFrame()->document();
+ if (!document)
+ return;
+
+ if (!document->url().protocolIsInHTTPFamily())
+ return;
+
+ const ViewportDescription& desc = mainFrame()->document()->viewportDescription();
+ bool isNonMobile =
Rick Byers 2015/09/28 18:43:58 I thought this logic (along with "am I on Android"
bokan 2015/09/29 20:33:20 WebViewImpl::shouldDisableDesktopWorkarounds. It's
bokan 2015/10/01 20:18:31 Latest patch replaces this with the shouldDisableD
+ !desc.isSpecifiedByAuthor()
+ || (desc.isMetaViewportType() && desc.maxWidth.type() == blink::Fixed);
+
+ m_trackPinchZoomStatsForPage = isNonMobile;
+}
+
+void VisualViewport::userDidChangeScale()
+{
+ if (!m_trackPinchZoomStatsForPage)
+ return;
+
+ m_maxPageScale = std::max(m_maxPageScale, m_scale);
Rick Byers 2015/09/28 18:43:58 I assume this gets called only at GesturePinchEnd
bokan 2015/09/29 20:33:20 Good point. I do think capturing the scale only at
+}
+
+void VisualViewport::sendUMAMetrics()
+{
+ if (m_trackPinchZoomStatsForPage) {
+ bool didScale = m_maxPageScale > 0;
+
+ Platform::current()->histogramEnumeration("Viewport.DidScalePage", didScale ? 1 : 0, 2);
+
+ if (didScale) {
+ int zoomPercentage = floor(m_maxPageScale * 100);
+ Platform::current()->histogramEnumeration("Viewport.MaxPageScale", zoomPercentage, 501);
Ilya Sherman 2015/09/30 04:30:28 This allocates a histogram with 500 buckets, which
bokan 2015/10/01 20:18:31 Ok, I mapped the percentages into ~20 buckets comp
+ }
+ }
+
+ m_maxPageScale = -1;
+ m_trackPinchZoomStatsForPage = false;
+}
+
String VisualViewport::debugName(const GraphicsLayer* graphicsLayer)
{
String name;

Powered by Google App Engine
This is Rietveld 408576698