Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java |
index bbfa1820c22aab12a54a743c8d6f0ba11328a4c8..145222b866c248d6f12b00d6dc1ed20ca33d1d7c 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java |
@@ -13,6 +13,7 @@ import android.text.style.ClickableSpan; |
import android.view.View; |
import android.widget.CheckBox; |
+import org.chromium.base.CalledByNative; |
import org.chromium.chrome.R; |
import org.chromium.ui.base.DeviceFormFactor; |
@@ -34,25 +35,30 @@ public class TranslateInfoBar extends InfoBar implements SubPanelListener { |
public static final int ALWAYS_PANEL = 3; |
public static final int MAX_PANEL_INDEX = 4; |
+ private long mNativeTranslateInfoBarPtr; |
private int mInfoBarType; |
private final TranslateOptions mOptions; |
private int mOptionsPanelViewType; |
private TranslateSubPanel mSubPanel; |
private final boolean mShouldShowNeverBar; |
- private final TranslateInfoBarDelegate mTranslateDelegate; |
- public TranslateInfoBar(long nativeInfoBarPtr, TranslateInfoBarDelegate delegate, |
- int infoBarType, int sourceLanguageIndex, int targetLanguageIndex, |
- boolean autoTranslatePair, boolean shouldShowNeverBar, |
+ @CalledByNative |
+ private static InfoBar show(int translateBarType, int sourceLanguageIndex, |
+ int targetLanguageIndex, boolean autoTranslatePair, boolean showNeverInfobar, |
boolean triggeredFromMenu, String[] languages) { |
+ return new TranslateInfoBar(translateBarType, sourceLanguageIndex, targetLanguageIndex, |
+ autoTranslatePair, showNeverInfobar, triggeredFromMenu, languages); |
+ } |
+ |
+ public TranslateInfoBar(int infoBarType, int sourceLanguageIndex, int targetLanguageIndex, |
David Trainor- moved to gerrit
2015/06/03 19:38:45
Javadoc. Or make private because it's built from
Changwan Ryu
2015/06/04 01:42:27
Changed to private.
|
+ boolean autoTranslatePair, boolean shouldShowNeverBar, boolean triggeredFromMenu, |
+ String[] languages) { |
super(null, R.drawable.infobar_translate, null, null); |
- mTranslateDelegate = delegate; |
mOptions = new TranslateOptions(sourceLanguageIndex, targetLanguageIndex, languages, |
autoTranslatePair, triggeredFromMenu); |
mInfoBarType = infoBarType; |
mShouldShowNeverBar = shouldShowNeverBar; |
mOptionsPanelViewType = NO_PANEL; |
- setNativeInfoBar(nativeInfoBarPtr); |
} |
@Override |
@@ -61,7 +67,7 @@ public class TranslateInfoBar extends InfoBar implements SubPanelListener { |
// Make it behave exactly as the Nope Button. |
onButtonClicked(false); |
} else { |
- nativeOnCloseButtonClicked(mNativeInfoBarPtr); |
+ super.onCloseButtonClicked(); |
} |
} |
@@ -208,8 +214,7 @@ public class TranslateInfoBar extends InfoBar implements SubPanelListener { |
// We need to re-check if the pointer is null now because applying options (like never |
// translate this site) can sometimes trigger closing the InfoBar. |
- if (mNativeInfoBarPtr == 0) return; |
- nativeOnButtonClicked(mNativeInfoBarPtr, action, ""); |
+ onButtonClicked(action, ""); |
} |
@Override |
@@ -226,15 +231,12 @@ public class TranslateInfoBar extends InfoBar implements SubPanelListener { |
@Override |
public void onOptionsChanged() { |
- if (mNativeInfoBarPtr == 0) return; |
+ if (mNativeTranslateInfoBarPtr == 0) return; |
if (mOptions.optionsChanged()) { |
- mTranslateDelegate.applyTranslateOptions(mNativeInfoBarPtr, |
- mOptions.sourceLanguageIndex(), |
- mOptions.targetLanguageIndex(), |
- mOptions.alwaysTranslateLanguageState(), |
- mOptions.neverTranslateLanguageState(), |
- mOptions.neverTranslateDomainState()); |
+ nativeApplyTranslateOptions(mNativeTranslateInfoBarPtr, mOptions.sourceLanguageIndex(), |
+ mOptions.targetLanguageIndex(), mOptions.alwaysTranslateLanguageState(), |
+ mOptions.neverTranslateLanguageState(), mOptions.neverTranslateDomainState()); |
} |
} |
@@ -331,13 +333,33 @@ public class TranslateInfoBar extends InfoBar implements SubPanelListener { |
return mInfoBarType; |
} |
- void changeInfoBarTypeAndNativePointer(int infoBarType, long newNativePointer) { |
+ @CalledByNative |
+ private void setNativePtr(long nativePtr) { |
+ mNativeTranslateInfoBarPtr = nativePtr; |
+ } |
+ |
+ @CalledByNative |
+ private void onNativeDestroyed() { |
David Trainor- moved to gerrit
2015/06/03 19:38:45
Same comment as before
Changwan Ryu
2015/06/04 01:42:27
Done.
|
+ mNativeTranslateInfoBarPtr = 0; |
+ } |
+ |
+ @CalledByNative |
+ private void changeTranslateInfoBarType(int infoBarType) { |
if (infoBarType >= 0 && infoBarType < MAX_INFOBAR_INDEX) { |
mInfoBarType = infoBarType; |
- replaceNativePointer(newNativePointer); |
updateViewForCurrentState(createView()); |
} else { |
assert false : "Trying to change the InfoBar to a type that is invalid."; |
} |
} |
+ |
+ @Override |
+ protected void finalize() throws Throwable { |
David Trainor- moved to gerrit
2015/06/03 19:38:45
Same comment as before
Changwan Ryu
2015/06/04 01:42:27
Done.
|
+ assert mNativeTranslateInfoBarPtr == 0; |
+ super.finalize(); |
+ } |
+ |
+ private native void nativeApplyTranslateOptions(long nativeTranslateInfoBar, |
+ int sourceLanguageIndex, int targetLanguageIndex, boolean alwaysTranslate, |
+ boolean neverTranslateLanguage, boolean neverTranslateSite); |
} |