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..d069246f71bb6a595271491370bfabde4ee771d7 |
| --- /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; |
| + |
| +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; |
|
Bernhard Bauer
2015/09/29 14:04:04
Make these final?
PEConn
2015/10/07 13:55:21
Done.
|
| + |
| + 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; |
|
Bernhard Bauer
2015/09/29 14:04:04
You can remove the `this.`.
PEConn
2015/10/07 13:55:21
Done.
|
| + } |
| + } |
| + /** |
| + * 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. |
|
Bernhard Bauer
2015/09/29 14:04:04
Generally, it's useful to be able to distinguish b
PEConn
2015/10/07 13:55:21
Done.
|
| + * |
| + * @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(final GetInterestsCallback callback) { |
| + GetInterestsCallback wrappedCallback = new GetInterestsCallback() { |
| + @Override |
| + public void onInterestsAvailableCallback(Interest[] interests) { |
| + // Don't notify callback if we've already been destroyed. |
|
Bernhard Bauer
2015/09/29 14:04:04
Is this actually going to be necessary? The native
PEConn
2015/10/07 13:55:21
Done.
|
| + if (mNativeInterestsService != 0) { |
| + callback.onInterestsAvailableCallback(interests); |
| + } |
| + } |
| + }; |
| + |
| + nativeGetInterests(mNativeInterestsService, wrappedCallback); |
| + } |
| + |
| + /* |
| + * Helper method for the native part. |
| + */ |
| + @CalledByNative |
| + public static Interest createInterest(String name, String imageUrl, double relevance) { |
|
Bernhard Bauer
2015/09/29 14:04:04
If this method is only meant to be called from nat
PEConn
2015/10/07 13:55:21
Done.
|
| + return new Interest(name, imageUrl, relevance); |
| + } |
| + |
| + private native long nativeInit(Profile profile); |
| + private native void nativeDestroy(long nativeInterestsService); |
| + private native void nativeGetInterests( |
| + long nativeInterestsService, GetInterestsCallback callback); |
| +} |