| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_FEED_ANDROID_FEED_RELIABILITY_LOGGING_BRIDGE_H_ |
| #define CHROME_BROWSER_FEED_ANDROID_FEED_RELIABILITY_LOGGING_BRIDGE_H_ |
| |
| #include "base/android/jni_android.h" |
| #include "base/android/scoped_java_ref.h" |
| |
| #include "base/time/time.h" |
| #include "components/feed/core/proto/v2/wire/reliability_logging_enums.pb.h" |
| #include "components/feed/core/v2/public/reliability_logging_bridge.h" |
| #include "components/feed/core/v2/public/types.h" |
| |
| namespace feed { |
| namespace android { |
| |
| class FeedReliabilityLoggingBridge : public ::feed::ReliabilityLoggingBridge { |
| public: |
| explicit FeedReliabilityLoggingBridge( |
| const base::android::JavaRef<jobject>& j_this); |
| FeedReliabilityLoggingBridge(const FeedReliabilityLoggingBridge&) = delete; |
| FeedReliabilityLoggingBridge& operator=(const FeedReliabilityLoggingBridge&) = |
| delete; |
| ~FeedReliabilityLoggingBridge() override; |
| |
| // Called by Java to delete this object. |
| void Destroy(JNIEnv* env); |
| |
| // ::feed::ReliabilityLogger implementation. |
| void LogFeedLaunchOtherStart(base::TimeTicks timestamp) override; |
| void LogCacheReadStart(base::TimeTicks timestamp) override; |
| void LogCacheReadEnd(base::TimeTicks timestamp, |
| feedwire::DiscoverCardReadCacheResult result) override; |
| void LogFeedRequestStart(NetworkRequestId id, |
| base::TimeTicks timestamp) override; |
| void LogActionsUploadRequestStart(NetworkRequestId id, |
| base::TimeTicks timestamp) override; |
| void LogWebFeedRequestStart(NetworkRequestId id, |
| base::TimeTicks timestamp) override; |
| void LogSingleWebFeedRequestStart(NetworkRequestId id, |
| base::TimeTicks timestamp) override; |
| void LogRequestSent(NetworkRequestId id, base::TimeTicks timestamp) override; |
| void LogResponseReceived(NetworkRequestId id, |
| int64_t server_receive_timestamp_ns, |
| int64_t server_send_timestamp_ns, |
| base::TimeTicks client_receive_timestamp) override; |
| void LogRequestFinished(NetworkRequestId id, |
| base::TimeTicks timestamp, |
| int combined_network_status_code) override; |
| void LogLoadingIndicatorShown(base::TimeTicks timestamp) override; |
| void LogAboveTheFoldRender( |
| base::TimeTicks timestamp, |
| feedwire::DiscoverAboveTheFoldRenderResult result) override; |
| void LogLaunchFinishedAfterStreamUpdate( |
| feedwire::DiscoverLaunchResult result) override; |
| void LogLoadMoreStarted() override; |
| void LogLoadMoreActionUploadRequestStarted() override; |
| void LogLoadMoreRequestSent() override; |
| void LogLoadMoreResponseReceived(int64_t server_receive_timestamp_ns, |
| int64_t server_send_timestamp_ns) override; |
| void LogLoadMoreRequestFinished(int combined_network_status_code) override; |
| void LogLoadMoreEnded(bool success) override; |
| void ReportExperiments(const std::vector<int32_t>& experiment_ids) override; |
| |
| private: |
| base::android::ScopedJavaGlobalRef<jobject> java_ref_; |
| }; |
| |
| } // namespace android |
| } // namespace feed |
| |
| #endif // CHROME_BROWSER_FEED_ANDROID_FEED_RELIABILITY_LOGGING_BRIDGE_H_ |