mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 18:55:30 +00:00
347603e672
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.
101 lines
2.9 KiB
C++
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__
|