Commit d524c9a2 authored by Gang Wu's avatar Gang Wu Committed by Commit Bot

[Feed] Implement JNI bridge for logging

Bug: 867770

Change-Id: If1d986bfc6f77320d04701dac341c4a8f6f0fda2
Reviewed-on: https://chromium-review.googlesource.com/1250094
Commit-Queue: Gang Wu <gangwu@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595162}
parent 19595661
...@@ -11,7 +11,15 @@ import com.google.android.libraries.feed.host.logging.ContentLoggingData; ...@@ -11,7 +11,15 @@ import com.google.android.libraries.feed.host.logging.ContentLoggingData;
* Implementation of {@link BasicLoggingApi} that log actions performed on the Feed. * Implementation of {@link BasicLoggingApi} that log actions performed on the Feed.
*/ */
public class FeedBasicLogging implements BasicLoggingApi { public class FeedBasicLogging implements BasicLoggingApi {
// TODO(gangwu): implement BasicLoggingApi functionality. private FeedLoggingBridge mFeedLoggingBridge;
/**
* Creates a {@link FeedBasicLogging} for accessing native logging logic.
*/
public FeedBasicLogging() {
mFeedLoggingBridge = new FeedLoggingBridge();
}
@Override @Override
public void onContentViewed(ContentLoggingData data) {} public void onContentViewed(ContentLoggingData data) {}
@Override @Override
...@@ -26,8 +34,12 @@ public class FeedBasicLogging implements BasicLoggingApi { ...@@ -26,8 +34,12 @@ public class FeedBasicLogging implements BasicLoggingApi {
public void onMoreButtonViewed(int position) {} public void onMoreButtonViewed(int position) {}
@Override @Override
public void onMoreButtonClicked(int position) {} public void onMoreButtonClicked(int position) {}
@Override @Override
public void onOpenedWithContent(int timeToPopulateMs, int contentCount) {} public void onOpenedWithContent(int timeToPopulateMs, int contentCount) {
mFeedLoggingBridge.onOpenedWithContent(contentCount);
}
@Override @Override
public void onOpenedWithNoImmediateContent() {} public void onOpenedWithNoImmediateContent() {}
@Override @Override
......
...@@ -45,11 +45,6 @@ public class FeedContentBridge { ...@@ -45,11 +45,6 @@ public class FeedContentBridge {
@VisibleForTesting @VisibleForTesting
public FeedContentBridge() {} public FeedContentBridge() {}
/**
* Initializes the native side of this bridge.
*/
public void init() {}
/** Cleans up native half of this bridge. */ /** Cleans up native half of this bridge. */
public void destroy() { public void destroy() {
assert mNativeFeedContentBridge != 0; assert mNativeFeedContentBridge != 0;
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.feed;
import org.chromium.base.annotations.JNINamespace;
/**
* Provides access to native implementation of feed logging.
*/
@JNINamespace("feed")
public class FeedLoggingBridge {
private long mNativeFeedLoggingBridge;
/**
* Creates a {@link FeedLoggingBridge} for accessing native feed logging
* implementation for the current user, and initial native side bridge.
*/
public FeedLoggingBridge() {
mNativeFeedLoggingBridge = nativeInit();
}
/** Cleans up native half of this bridge. */
public void destroy() {
assert mNativeFeedLoggingBridge != 0;
nativeDestroy(mNativeFeedLoggingBridge);
mNativeFeedLoggingBridge = 0;
}
public void onOpenedWithContent(int contentCount) {
assert mNativeFeedLoggingBridge != 0;
nativeOnOpenedWithContent(mNativeFeedLoggingBridge, contentCount);
}
private native long nativeInit();
private native void nativeDestroy(long nativeFeedLoggingBridge);
private native void nativeOnOpenedWithContent(long nativeFeedLoggingBridge, int contentCount);
}
...@@ -17,6 +17,7 @@ if (enable_feed_in_chrome) { ...@@ -17,6 +17,7 @@ if (enable_feed_in_chrome) {
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoaderBridge.java", "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoaderBridge.java",
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedJournalBridge.java", "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedJournalBridge.java",
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedJournalStorage.java", "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedJournalStorage.java",
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java",
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNetworkBridge.java", "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNetworkBridge.java",
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java", "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java",
"//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPageMediator.java", "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPageMediator.java",
......
...@@ -4506,6 +4506,8 @@ jumbo_split_static_library("browser") { ...@@ -4506,6 +4506,8 @@ jumbo_split_static_library("browser") {
"android/feed/feed_image_loader_bridge.h", "android/feed/feed_image_loader_bridge.h",
"android/feed/feed_journal_bridge.cc", "android/feed/feed_journal_bridge.cc",
"android/feed/feed_journal_bridge.h", "android/feed/feed_journal_bridge.h",
"android/feed/feed_logging_bridge.cc",
"android/feed/feed_logging_bridge.h",
"android/feed/feed_network_bridge.cc", "android/feed/feed_network_bridge.cc",
"android/feed/feed_network_bridge.h", "android/feed/feed_network_bridge.h",
"android/feed/feed_offline_bridge.cc", "android/feed/feed_offline_bridge.cc",
...@@ -4786,6 +4788,7 @@ if (is_android) { ...@@ -4786,6 +4788,7 @@ if (is_android) {
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedContentBridge.java", "../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedContentBridge.java",
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoaderBridge.java", "../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoaderBridge.java",
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedJournalBridge.java", "../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedJournalBridge.java",
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java",
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNetworkBridge.java", "../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNetworkBridge.java",
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedOfflineBridge.java", "../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedOfflineBridge.java",
"../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSchedulerBridge.java", "../android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSchedulerBridge.java",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/feed/feed_logging_bridge.h"
#include <jni.h>
#include "jni/FeedLoggingBridge_jni.h"
namespace feed {
using base::android::JavaRef;
using base::android::JavaParamRef;
static jlong JNI_FeedLoggingBridge_Init(JNIEnv* env,
const JavaParamRef<jobject>& j_this) {
FeedLoggingBridge* native_logging_bridge = new FeedLoggingBridge();
return reinterpret_cast<intptr_t>(native_logging_bridge);
}
FeedLoggingBridge::FeedLoggingBridge() = default;
FeedLoggingBridge::~FeedLoggingBridge() = default;
void FeedLoggingBridge::Destroy(JNIEnv* env, const JavaRef<jobject>& j_this) {
delete this;
}
void FeedLoggingBridge::OnOpenedWithContent(JNIEnv* j_env,
const JavaRef<jobject>& j_this,
const jint j_content_count) {}
} // namespace feed
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ANDROID_FEED_FEED_LOGGING_BRIDGE_H_
#define CHROME_BROWSER_ANDROID_FEED_FEED_LOGGING_BRIDGE_H_
#include "base/android/scoped_java_ref.h"
namespace feed {
// Native counterpart of FeedLoggingBridge.java. Holds non-owning pointers
// to native implementation, to which operations are delegated. This bridge is
// instantiated, owned, and destroyed from Java.
class FeedLoggingBridge {
public:
FeedLoggingBridge();
~FeedLoggingBridge();
void Destroy(JNIEnv* j_env, const base::android::JavaRef<jobject>& j_this);
void OnOpenedWithContent(JNIEnv* j_env,
const base::android::JavaRef<jobject>& j_this,
const jint j_content_count);
private:
DISALLOW_COPY_AND_ASSIGN(FeedLoggingBridge);
};
} // namespace feed
#endif // CHROME_BROWSER_ANDROID_FEED_FEED_LOGGING_BRIDGE_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment