gecko-dev/widget/android/Telemetry.h
Jim Chen 347603e672 Bug 1292323 - Update usage of UsesNativeCallProxy; r=snorp
Remove uses of UsesNativeCallProxy and UsesGeckoThreadProxy, now that
they are not needed.

Remove cases where we had to invoke a call in a proxy, because the call
is now specified to be invoked directly in the WrapForJNI annotation,
without the need to go through the proxy.

For SmsManager and AlarmReceiver, we no longer need to manually dispatch
everything to the Gecko thread because that's now handled automatically.
2016-08-12 23:15:53 -04:00

101 lines
2.9 KiB
C++

/* -*- Mode: c++; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_widget_Telemetry_h__
#define mozilla_widget_Telemetry_h__
#include "GeneratedJNINatives.h"
#include "nsAppShell.h"
#include "nsIAndroidBridge.h"
#include "mozilla/Telemetry.h"
namespace mozilla {
namespace widget {
class Telemetry final
: public java::Telemetry::Natives<Telemetry>
{
Telemetry() = delete;
static already_AddRefed<nsIUITelemetryObserver>
GetObserver()
{
nsAppShell* const appShell = nsAppShell::Get();
if (!appShell) {
return nullptr;
}
nsCOMPtr<nsIAndroidBrowserApp> browserApp = appShell->GetBrowserApp();
nsCOMPtr<nsIUITelemetryObserver> obs;
if (!browserApp || NS_FAILED(browserApp->GetUITelemetryObserver(
getter_AddRefs(obs))) || !obs) {
return nullptr;
}
return obs.forget();
}
public:
static void
AddHistogram(jni::String::Param aName, int32_t aValue)
{
MOZ_ASSERT(aName);
mozilla::Telemetry::Accumulate(aName->ToCString().get(), aValue);
}
static void
AddKeyedHistogram(jni::String::Param aName, jni::String::Param aKey,
int32_t aValue)
{
MOZ_ASSERT(aName && aKey);
mozilla::Telemetry::Accumulate(aName->ToCString().get(),
aKey->ToCString(), aValue);
}
static void
StartUISession(jni::String::Param aName, int64_t aTimestamp)
{
MOZ_ASSERT(aName);
nsCOMPtr<nsIUITelemetryObserver> obs = GetObserver();
if (obs) {
obs->StartSession(aName->ToString().get(), aTimestamp);
}
}
static void
StopUISession(jni::String::Param aName, jni::String::Param aReason,
int64_t aTimestamp)
{
MOZ_ASSERT(aName);
nsCOMPtr<nsIUITelemetryObserver> obs = GetObserver();
if (obs) {
obs->StopSession(aName->ToString().get(),
aReason ? aReason->ToString().get() : nullptr,
aTimestamp);
}
}
static void
AddUIEvent(jni::String::Param aAction, jni::String::Param aMethod,
int64_t aTimestamp, jni::String::Param aExtras)
{
MOZ_ASSERT(aAction);
nsCOMPtr<nsIUITelemetryObserver> obs = GetObserver();
if (obs) {
obs->AddEvent(aAction->ToString().get(),
aMethod ? aMethod->ToString().get() : nullptr,
aTimestamp,
aExtras ? aExtras->ToString().get() : nullptr);
}
}
};
} // namespace widget
} // namespace mozilla
#endif // mozilla_widget_Telemetry_h__