Commit 21ae462e authored by Cathy Li's avatar Cathy Li Committed by Commit Bot

[Explore Sites]: Add stub JNI bridge for explore sites.

This will later be used to fetch resources for the UI.

Bug: 852075
Change-Id: I58fa78a458c9cd329d55d7b4042c15b7f721aa97
Reviewed-on: https://chromium-review.googlesource.com/1095691Reviewed-by: default avatarJustin DeWitt <dewittj@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Cathy Li <chili@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566744}
parent eba7d720
// 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.explore_sites;
import android.graphics.Bitmap;
import org.chromium.base.Callback;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.chrome.browser.profiles.Profile;
import java.util.ArrayList;
import java.util.List;
/**
* The model and controller for a group of explore options.
*/
@JNINamespace("explore_sites")
public class ExploreSitesBridge {
private static final String TAG = "ExploreSitesBridge";
private long mNativeExploreSitesBridge;
/**
* Creates an explore sites bridge for a given profile.
*/
public ExploreSitesBridge(Profile profile) {
mNativeExploreSitesBridge = nativeInit(profile);
}
/**
* Fetches a JSON string from URL, returning the parsed JSONobject in a callback.
*/
public void getNtpCategories(
final String url, final Callback<List<ExploreSitesCategoryTile>> callback) {
List<ExploreSitesCategoryTile> result = new ArrayList<>();
nativeGetNtpCategories(mNativeExploreSitesBridge, url, result, callback);
}
/**
* Fetches an icon from a url and returns in a Bitmap image.
*/
public void getIcon(final String iconUrl, final Callback<Bitmap> callback) {}
/**
* Destroys the native object. Call only when no longer needed.
*/
public void destroy() {
nativeDestroy(mNativeExploreSitesBridge);
}
private native long nativeInit(Profile profile);
private native void nativeGetNtpCategories(long nativeExploreSitesBridge, String url,
List<ExploreSitesCategoryTile> result,
Callback<List<ExploreSitesCategoryTile>> callback);
private native void nativeDestroy(long nativeExploreSitesBridge);
}
// 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.explore_sites;
import android.graphics.drawable.Drawable;
/**
* Class encapsulating data needed to render a category tile for explore sites section
* on the NTP.
*/
public class ExploreSitesCategoryTile {
private String mNavigationUrl;
private String mIconUrl;
private String mCategoryName;
private Drawable mIconDrawable;
public ExploreSitesCategoryTile() {
mNavigationUrl = "";
mIconUrl = "";
mCategoryName = "";
}
public ExploreSitesCategoryTile(String categoryName, String iconUrl, String navigationUrl) {
mCategoryName = categoryName;
mIconUrl = iconUrl;
mNavigationUrl = navigationUrl;
}
public String getNavigationUrl() {
return mNavigationUrl;
}
public String getIconUrl() {
return mIconUrl;
}
public String getCategoryName() {
return mCategoryName;
}
public void setIconDrawable(Drawable iconDrawable) {
mIconDrawable = iconDrawable;
}
public Drawable getIconDrawable() {
return mIconDrawable;
}
}
...@@ -490,6 +490,8 @@ chrome_java_sources = [ ...@@ -490,6 +490,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/download/ui/SpaceDisplay.java", "java/src/org/chromium/chrome/browser/download/ui/SpaceDisplay.java",
"java/src/org/chromium/chrome/browser/download/ui/StorageSummary.java", "java/src/org/chromium/chrome/browser/download/ui/StorageSummary.java",
"java/src/org/chromium/chrome/browser/engagement/SiteEngagementService.java", "java/src/org/chromium/chrome/browser/engagement/SiteEngagementService.java",
"java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesBridge.java",
"java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesCategoryTile.java",
"java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java", "java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java",
"java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java", "java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java",
"java/src/org/chromium/chrome/browser/externalauth/VerifiedHandler.java", "java/src/org/chromium/chrome/browser/externalauth/VerifiedHandler.java",
......
...@@ -2058,6 +2058,8 @@ jumbo_split_static_library("browser") { ...@@ -2058,6 +2058,8 @@ jumbo_split_static_library("browser") {
"android/download/service/download_background_task.cc", "android/download/service/download_background_task.cc",
"android/download/service/download_task_scheduler.cc", "android/download/service/download_task_scheduler.cc",
"android/download/service/download_task_scheduler.h", "android/download/service/download_task_scheduler.h",
"android/explore_sites/explore_sites_bridge.cc",
"android/explore_sites/explore_sites_bridge.h",
"android/favicon_helper.cc", "android/favicon_helper.cc",
"android/favicon_helper.h", "android/favicon_helper.h",
"android/feature_engagement/tracker_factory_android.cc", "android/feature_engagement/tracker_factory_android.cc",
...@@ -4361,6 +4363,7 @@ if (is_android) { ...@@ -4361,6 +4363,7 @@ if (is_android) {
"../android/java/src/org/chromium/chrome/browser/download/service/DownloadBackgroundTask.java", "../android/java/src/org/chromium/chrome/browser/download/service/DownloadBackgroundTask.java",
"../android/java/src/org/chromium/chrome/browser/download/service/DownloadTaskScheduler.java", "../android/java/src/org/chromium/chrome/browser/download/service/DownloadTaskScheduler.java",
"../android/java/src/org/chromium/chrome/browser/engagement/SiteEngagementService.java", "../android/java/src/org/chromium/chrome/browser/engagement/SiteEngagementService.java",
"../android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesBridge.java",
"../android/java/src/org/chromium/chrome/browser/favicon/FaviconHelper.java", "../android/java/src/org/chromium/chrome/browser/favicon/FaviconHelper.java",
"../android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java", "../android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java",
"../android/java/src/org/chromium/chrome/browser/feature_engagement/TrackerFactory.java", "../android/java/src/org/chromium/chrome/browser/feature_engagement/TrackerFactory.java",
......
chili@chromium.org
dewittj@chromium.org
dimich@chromium.org
freedjm@chromium.org
# TEAM: offline-dev@chromium.org
// 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/explore_sites/explore_sites_bridge.h"
#include "base/android/callback_android.h"
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/bind.h"
#include "jni/ExploreSitesBridge_jni.h"
#include "services/network/public/cpp/simple_url_loader.h"
namespace explore_sites {
static jlong JNI_ExploreSitesBridge_Init(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
const base::android::JavaParamRef<jobject>& j_profile) {
ExploreSitesBridge* explore_sites_bridge = new ExploreSitesBridge(j_profile);
return reinterpret_cast<intptr_t>(explore_sites_bridge);
}
ExploreSitesBridge::ExploreSitesBridge(
const base::android::JavaRef<jobject>& j_profile)
: weak_ptr_factory_(this) {}
void ExploreSitesBridge::Destroy(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj) {
delete this;
}
void ExploreSitesBridge::GetNtpCategories(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
const base::android::JavaParamRef<jstring>& url,
const base::android::JavaParamRef<jobject>& j_result_obj,
const base::android::JavaParamRef<jobject>& j_callback_obj) {}
ExploreSitesBridge::~ExploreSitesBridge() {}
} // namespace explore_sites
// 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_EXPLORE_SITES_EXPLORE_SITES_BRIDGE_H_
#define CHROME_BROWSER_ANDROID_EXPLORE_SITES_EXPLORE_SITES_BRIDGE_H_
#include "base/android/jni_android.h"
#include "base/android/jni_weak_ref.h"
#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
namespace explore_sites {
/**
* Bridge between C++ and Java for fetching and decoding URLs and images.
*/
class ExploreSitesBridge {
public:
explicit ExploreSitesBridge(const base::android::JavaRef<jobject>& j_profile);
void Destroy(JNIEnv*, const base::android::JavaParamRef<jobject>& obj);
void GetNtpCategories(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
const base::android::JavaParamRef<jstring>& url,
const base::android::JavaParamRef<jobject>& j_result_obj,
const base::android::JavaParamRef<jobject>& j_callback_obj);
private:
virtual ~ExploreSitesBridge();
base::WeakPtrFactory<ExploreSitesBridge> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ExploreSitesBridge);
};
} // namespace explore_sites
#endif // CHROME_BROWSER_ANDROID_EXPLORE_SITES_EXPLORE_SITES_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