From 2b5a1b672797947bb8e8b4e3d228c8503611f9b4 Mon Sep 17 00:00:00 2001 From: Trevor Saunders Date: Wed, 17 Aug 2011 10:43:20 -0700 Subject: [PATCH] bug 679786 - telemetry reporting use of ISimpleDOM* interfaces r=surkov --- accessible/src/base/Statistics.h | 6 ++++++ accessible/src/msaa/nsAccessNodeWrap.cpp | 11 ++++++++--- accessible/src/msaa/nsDocAccessibleWrap.cpp | 12 +++++++----- accessible/src/msaa/nsTextAccessibleWrap.cpp | 12 +++++++++--- toolkit/components/telemetry/TelemetryHistograms.h | 1 + 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/accessible/src/base/Statistics.h b/accessible/src/base/Statistics.h index 06e4d0a03b7..332aa0153f7 100644 --- a/accessible/src/base/Statistics.h +++ b/accessible/src/base/Statistics.h @@ -49,6 +49,12 @@ namespace statistics { inline void A11yInitialized() { Telemetry::Accumulate(Telemetry::A11Y_INSTANTIATED, true); } + /** + * Report that ISimpleDOM* has been used. + */ + inline void ISimpleDOMUsed() + { Telemetry::Accumulate(Telemetry::ISIMPLE_DOM_USAGE, 1); } + } // namespace statistics } // namespace a11y } // namespace mozilla diff --git a/accessible/src/msaa/nsAccessNodeWrap.cpp b/accessible/src/msaa/nsAccessNodeWrap.cpp index 27ffcdec0cb..0b39c974105 100644 --- a/accessible/src/msaa/nsAccessNodeWrap.cpp +++ b/accessible/src/msaa/nsAccessNodeWrap.cpp @@ -46,6 +46,7 @@ #include "nsCoreUtils.h" #include "nsRootAccessible.h" #include "nsWinUtils.h" +#include "Statistics.h" #include "nsAttrName.h" #include "nsIDocument.h" @@ -59,6 +60,7 @@ #include "mozilla/Preferences.h" using namespace mozilla; +using namespace mozilla::a11y; /// the accessible library and cached methods HINSTANCE nsAccessNodeWrap::gmAccLib = nsnull; @@ -120,11 +122,14 @@ STDMETHODIMP nsAccessNodeWrap::QueryInterface(REFIID iid, void** ppv) { *ppv = nsnull; - if (IID_IUnknown == iid || IID_ISimpleDOMNode == iid) + if (IID_IUnknown == iid) { *ppv = static_cast(this); - - if (nsnull == *ppv) + } else if (IID_ISimpleDOMNode == iid) { + statistics::ISimpleDOMUsed(); + *ppv = static_cast(this); + } else { return E_NOINTERFACE; //iid not supported. + } (reinterpret_cast(*ppv))->AddRef(); return S_OK; diff --git a/accessible/src/msaa/nsDocAccessibleWrap.cpp b/accessible/src/msaa/nsDocAccessibleWrap.cpp index d4069a9d387..e6bd3440632 100644 --- a/accessible/src/msaa/nsDocAccessibleWrap.cpp +++ b/accessible/src/msaa/nsDocAccessibleWrap.cpp @@ -43,6 +43,7 @@ #include "nsIAccessibilityService.h" #include "nsRootAccessible.h" #include "nsWinUtils.h" +#include "Statistics.h" #include "nsIDocShell.h" #include "nsIDocShellTreeNode.h" @@ -54,6 +55,8 @@ #include "nsIViewManager.h" #include "nsIWebNavigation.h" +using namespace mozilla::a11y; + /* For documentation of the accessibility architecture, * see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html */ @@ -91,12 +94,11 @@ STDMETHODIMP nsDocAccessibleWrap::QueryInterface(REFIID iid, void** ppv) { *ppv = NULL; - if (IID_ISimpleDOMDocument == iid) - *ppv = static_cast(this); - - if (NULL == *ppv) + if (IID_ISimpleDOMDocument != iid) return nsHyperTextAccessibleWrap::QueryInterface(iid, ppv); - + + statistics::ISimpleDOMUsed(); + *ppv = static_cast(this); (reinterpret_cast(*ppv))->AddRef(); return S_OK; } diff --git a/accessible/src/msaa/nsTextAccessibleWrap.cpp b/accessible/src/msaa/nsTextAccessibleWrap.cpp index 0480ca3cfa5..887661c5778 100644 --- a/accessible/src/msaa/nsTextAccessibleWrap.cpp +++ b/accessible/src/msaa/nsTextAccessibleWrap.cpp @@ -41,6 +41,7 @@ #include "nsCoreUtils.h" #include "nsDocAccessible.h" +#include "Statistics.h" #include "nsIFrame.h" #include "nsFontMetrics.h" #include "nsPresContext.h" @@ -48,6 +49,8 @@ #include "gfxFont.h" +using namespace mozilla::a11y; + //////////////////////////////////////////////////////////////////////////////// // nsTextAccessibleWrap Accessible //////////////////////////////////////////////////////////////////////////////// @@ -72,11 +75,14 @@ STDMETHODIMP nsTextAccessibleWrap::QueryInterface(REFIID iid, void** ppv) { *ppv = nsnull; - if (IID_IUnknown == iid || IID_ISimpleDOMText == iid) + if (IID_IUnknown == iid) { *ppv = static_cast(this); - - if (nsnull == *ppv) + } else if (IID_ISimpleDOMText == iid) { + statistics::ISimpleDOMUsed(); + *ppv = static_cast(this); + } else { return nsAccessibleWrap::QueryInterface(iid, ppv); + } (reinterpret_cast(*ppv))->AddRef(); return S_OK; diff --git a/toolkit/components/telemetry/TelemetryHistograms.h b/toolkit/components/telemetry/TelemetryHistograms.h index a696161c140..afc1e74b5bc 100644 --- a/toolkit/components/telemetry/TelemetryHistograms.h +++ b/toolkit/components/telemetry/TelemetryHistograms.h @@ -53,6 +53,7 @@ * a11y telemetry */ HISTOGRAM(A11Y_INSTANTIATED, 0, 1, 2, BOOLEAN, "has accessibility support been instantiated") +HISTOGRAM(ISIMPLE_DOM_USAGE, 0, 1, 2, BOOLEAN, "have the ISimpleDOM* accessibility interfaces been used") HISTOGRAM(CYCLE_COLLECTOR, 1, 10000, 50, EXPONENTIAL, "Time spent on one cycle collection (ms)") HISTOGRAM(CYCLE_COLLECTOR_VISITED_REF_COUNTED, 1, 300000, 50, EXPONENTIAL, "Number of ref counted objects visited by the cycle collector")