Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java |
| index 26c1a291f8b4adb39918cb5f7f8e4857a4db16e1..11568152c4103068e9c51ab590c4c77fb4663ea6 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java |
| @@ -53,10 +53,8 @@ public abstract class InfoBar implements InfoBarView { |
| private boolean mIsDismissed; |
| private boolean mControlsEnabled; |
| - // This cannot be private until the swap in place infrastructure is |
| - // improved since subclasses need to access a possibly replaced native |
| - // pointer. |
| - protected long mNativeInfoBarPtr; |
| + // This points to the InfoBarAndroid class not any of its subclasses. |
| + private long mNativeInfoBarPtr; |
|
David Trainor- moved to gerrit
2015/06/02 17:51:55
Where do we ever clear this pointer? I don't see
Changwan Ryu
2015/06/03 04:55:41
I was addressing this in a separate CL but merged
|
| // Used by tests to reference infobars. |
| private final int mId; |
| @@ -82,9 +80,10 @@ public abstract class InfoBar implements InfoBarView { |
| /** |
| * Stores a pointer to the native-side counterpart of this InfoBar. |
| - * @param nativeInfoBarPtr Pointer to the NativeInfoBar. |
| + * @param nativeInfoBarPtr Pointer to the native InfoBarAndroid, not to its subclass. |
| */ |
| - protected void setNativeInfoBar(long nativeInfoBarPtr) { |
| + @CalledByNative |
| + private void setNativeInfoBar(long nativeInfoBarPtr) { |
| if (nativeInfoBarPtr != 0) { |
| // The native code takes care of expiring infobars on navigations. |
| mExpireOnNavigation = false; |
| @@ -237,8 +236,19 @@ public abstract class InfoBar implements InfoBarView { |
| @Override |
| public void onLinkClicked() { |
| + if (mNativeInfoBarPtr != 0) nativeOnLinkClicked(mNativeInfoBarPtr); |
| + } |
| + |
| + protected void onButtonClicked(int action, String actionValue) { |
| + if (mNativeInfoBarPtr != 0) nativeOnButtonClicked(mNativeInfoBarPtr, action, actionValue); |
| + } |
| + |
| + @Override |
| + public void onCloseButtonClicked() { |
| if (mNativeInfoBarPtr != 0) { |
| - nativeOnLinkClicked(mNativeInfoBarPtr); |
| + nativeOnCloseButtonClicked(mNativeInfoBarPtr); |
| + } else { |
| + dismissJavaOnlyInfoBar(); |
| } |
| } |
| @@ -263,8 +273,8 @@ public abstract class InfoBar implements InfoBarView { |
| mListener = listener; |
| } |
| - protected native void nativeOnLinkClicked(long nativeInfoBarAndroid); |
| - protected native void nativeOnButtonClicked( |
| + private native void nativeOnLinkClicked(long nativeInfoBarAndroid); |
| + private native void nativeOnButtonClicked( |
| long nativeInfoBarAndroid, int action, String actionValue); |
| - protected native void nativeOnCloseButtonClicked(long nativeInfoBarAndroid); |
| + private native void nativeOnCloseButtonClicked(long nativeInfoBarAndroid); |
| } |