Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsService.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsService.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsService.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7d573d09546449f1e80445c5790d514138c078e9 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsService.java |
| @@ -0,0 +1,100 @@ |
| +// Copyright 2015 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.ntp; |
|
Marc Treib
2015/09/11 16:02:14
All the other code in that folder seems to be more
tache
2015/09/18 09:41:21
Can't really think for a good place for it, either
|
| + |
| +import org.chromium.base.annotations.CalledByNative; |
| +import org.chromium.chrome.browser.profiles.Profile; |
| + |
| +/** |
| + * Retrieve the user's interests. |
| + */ |
| +public class InterestsService { |
| + private long mNativeInterestsService; |
| + |
| + /** |
| + * A user's interest. |
| + */ |
| + public static class Interest { |
| + private String mName; |
| + private String mImageUrl; |
| + private double mRelevance; |
| + |
| + public Interest(String name, String imageUrl, double relevance) { |
| + this.mName = name; |
| + this.mImageUrl = imageUrl; |
| + this.mRelevance = relevance; |
| + } |
| + |
| + public String getName() { |
| + return mName; |
| + } |
| + |
| + public String getImageUrl() { |
| + return mImageUrl; |
| + } |
| + |
| + public double getRelevance() { |
| + return this.mRelevance; |
| + } |
| + } |
| + /** |
| + * Interface for receiving the interests of a user. |
| + */ |
| + public interface GetInterestsCallback { |
| + /** |
| + * Callback method for fetching the interests of a user. |
| + * In case of an error an empty array will be returned. |
| + * |
| + * @param interests The array of interests. |
| + */ |
| + @CalledByNative("GetInterestsCallback") |
| + public void onInterestsAvailableCallback(Interest[] interests); |
| + } |
| + |
| + /** |
| + * InterestsService constructor requires a valid user profile object. |
| + * |
| + * @param profile The profile for which to fetch the interests |
| + */ |
| + public InterestsService(Profile profile) { |
| + mNativeInterestsService = nativeInit(profile); |
| + } |
| + |
| + /** |
| + * Cleans up the C++ side of this class. This instance must not be used after calling destroy(). |
| + */ |
| + public void destroy() { |
| + assert mNativeInterestsService != 0; |
| + nativeDestroy(mNativeInterestsService); |
| + mNativeInterestsService = 0; |
| + } |
| + |
| + public void getInterests(String accessToken, final GetInterestsCallback callback) { |
| + GetInterestsCallback wrappedCallback = new GetInterestsCallback() { |
| + @Override |
| + public void onInterestsCallback(Interest[] interests) { |
| + // Don't notify callback if we've already been destroyed. |
| + if (mNativeInterestsService != 0) { |
| + callback.onInterestsCallback(interests); |
| + } |
| + } |
| + }; |
| + |
| + nativeGetInterests(mNativeInterestsService, accessToken, wrappedCallback); |
| + } |
| + |
| + /* |
| + * Helper method for the native part. |
| + */ |
| + @CalledByNative |
| + public static Interest createInterest(String name, String imageUrl, double relevance) { |
| + return new Interest(name, imageUrl, relevance); |
| + } |
| + |
| + private native long nativeInit(Profile profile); |
| + private native void nativeDestroy(long nativeInterestsService); |
| + private native void nativeGetInterests( |
| + long nativeInterestsService, String token, GetInterestsCallback callback); |
| +} |