Loading mobile/android/base/toolbar/BrowserToolbarTabletBase.java +28 −83 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ import java.util.Arrays; import org.mozilla.gecko.R; import org.mozilla.gecko.Tab; import org.mozilla.gecko.Tabs; import org.mozilla.gecko.Tabs.TabEvents; import org.mozilla.gecko.animation.PropertyAnimator; import org.mozilla.gecko.animation.ViewHelper; Loading @@ -20,6 +19,7 @@ import android.util.AttributeSet; import android.view.View; import android.view.animation.AccelerateInterpolator; import android.view.animation.Interpolator; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; Loading @@ -37,12 +37,7 @@ abstract class BrowserToolbarTabletBase extends BrowserToolbar { protected final LinearLayout actionItemBar; protected final BackButton backButton; private final OnClickListener backButtonOnClickListener; private final OnLongClickListener backButtonOnLongClickListener; protected final ForwardButton forwardButton; private final OnClickListener forwardButtonOnClickListener; private final OnLongClickListener forwardButtonOnLongClickListener; private final Interpolator buttonsInterpolator = new AccelerateInterpolator(); Loading @@ -57,57 +52,39 @@ abstract class BrowserToolbarTabletBase extends BrowserToolbar { setButtonEnabled(backButton, false); forwardButton = (ForwardButton) findViewById(R.id.forward); setButtonEnabled(forwardButton, false); backButtonOnClickListener = new BackButtonOnClickListener(); backButtonOnLongClickListener = new BackButtonOnLongClickListener(); forwardButtonOnClickListener = new ForwardButtonOnClickListener(); forwardButtonOnLongClickListener = new ForwardButtonOnLongClickListener(); setNavigationButtonListeners(true); initButtonListeners(); focusOrder.addAll(Arrays.asList(tabsButton, (View) backButton, (View) forwardButton, this)); focusOrder.addAll(urlDisplayLayout.getFocusOrder()); focusOrder.addAll(Arrays.asList(actionItemBar, menuButton)); } /** * Enables or disables the click listeners on the back and forward buttons. * * This method is useful to remove and later add the listeners when a navigation button is hit * because calling `browser.go*()` twice in succession can cause the UI buttons to get out of * sync with gecko's browser state (bug 960746). * * @param disabled True if the listeners should be removed, false for them to be added. */ private void setNavigationButtonListeners(final boolean enabled) { if (enabled) { backButton.setOnClickListener(backButtonOnClickListener); backButton.setOnLongClickListener(backButtonOnLongClickListener); forwardButton.setOnClickListener(forwardButtonOnClickListener); forwardButton.setOnLongClickListener(forwardButtonOnLongClickListener); } else { backButton.setOnClickListener(null); backButton.setOnLongClickListener(null); forwardButton.setOnClickListener(null); forwardButton.setOnLongClickListener(null); private void initButtonListeners() { backButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View view) { Tabs.getInstance().getSelectedTab().doBack(); } }); backButton.setOnLongClickListener(new Button.OnLongClickListener() { @Override public boolean onLongClick(View view) { return Tabs.getInstance().getSelectedTab().showBackHistory(); } }); forwardButton.setOnClickListener(new Button.OnClickListener() { @Override public void onTabChanged(final Tab tab, final Tabs.TabEvents msg, final Object data) { // STOP appears to be the first page load event where async nav issues are prevented, // SELECTED is for switching tabs, and LOAD_ERROR is called when a JavaScript exception // is thrown while loading a URI, which can prevent STOP from ever being called. // // See `setNavigationButtonListeners` javadoc for more information. if (msg == TabEvents.STOP || msg == TabEvents.SELECTED || msg == TabEvents.LOAD_ERROR) { setNavigationButtonListeners(true); public void onClick(View view) { Tabs.getInstance().getSelectedTab().doForward(); } super.onTabChanged(tab, msg, data); }); forwardButton.setOnLongClickListener(new Button.OnLongClickListener() { @Override public boolean onLongClick(View view) { return Tabs.getInstance().getSelectedTab().showForwardHistory(); } }); } @Override Loading Loading @@ -187,36 +164,4 @@ abstract class BrowserToolbarTabletBase extends BrowserToolbar { button.setEnabled(enabled); } private class BackButtonOnClickListener implements OnClickListener { @Override public void onClick(final View view) { setNavigationButtonListeners(false); Tabs.getInstance().getSelectedTab().doBack(); } } private class BackButtonOnLongClickListener implements OnLongClickListener { @Override public boolean onLongClick(final View view) { setNavigationButtonListeners(false); return Tabs.getInstance().getSelectedTab().showBackHistory(); } } private class ForwardButtonOnClickListener implements OnClickListener { @Override public void onClick(final View view) { setNavigationButtonListeners(false); Tabs.getInstance().getSelectedTab().doForward(); } } private class ForwardButtonOnLongClickListener implements OnLongClickListener { @Override public boolean onLongClick(final View view) { setNavigationButtonListeners(false); return Tabs.getInstance().getSelectedTab().showForwardHistory(); } } } Loading
mobile/android/base/toolbar/BrowserToolbarTabletBase.java +28 −83 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ import java.util.Arrays; import org.mozilla.gecko.R; import org.mozilla.gecko.Tab; import org.mozilla.gecko.Tabs; import org.mozilla.gecko.Tabs.TabEvents; import org.mozilla.gecko.animation.PropertyAnimator; import org.mozilla.gecko.animation.ViewHelper; Loading @@ -20,6 +19,7 @@ import android.util.AttributeSet; import android.view.View; import android.view.animation.AccelerateInterpolator; import android.view.animation.Interpolator; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; Loading @@ -37,12 +37,7 @@ abstract class BrowserToolbarTabletBase extends BrowserToolbar { protected final LinearLayout actionItemBar; protected final BackButton backButton; private final OnClickListener backButtonOnClickListener; private final OnLongClickListener backButtonOnLongClickListener; protected final ForwardButton forwardButton; private final OnClickListener forwardButtonOnClickListener; private final OnLongClickListener forwardButtonOnLongClickListener; private final Interpolator buttonsInterpolator = new AccelerateInterpolator(); Loading @@ -57,57 +52,39 @@ abstract class BrowserToolbarTabletBase extends BrowserToolbar { setButtonEnabled(backButton, false); forwardButton = (ForwardButton) findViewById(R.id.forward); setButtonEnabled(forwardButton, false); backButtonOnClickListener = new BackButtonOnClickListener(); backButtonOnLongClickListener = new BackButtonOnLongClickListener(); forwardButtonOnClickListener = new ForwardButtonOnClickListener(); forwardButtonOnLongClickListener = new ForwardButtonOnLongClickListener(); setNavigationButtonListeners(true); initButtonListeners(); focusOrder.addAll(Arrays.asList(tabsButton, (View) backButton, (View) forwardButton, this)); focusOrder.addAll(urlDisplayLayout.getFocusOrder()); focusOrder.addAll(Arrays.asList(actionItemBar, menuButton)); } /** * Enables or disables the click listeners on the back and forward buttons. * * This method is useful to remove and later add the listeners when a navigation button is hit * because calling `browser.go*()` twice in succession can cause the UI buttons to get out of * sync with gecko's browser state (bug 960746). * * @param disabled True if the listeners should be removed, false for them to be added. */ private void setNavigationButtonListeners(final boolean enabled) { if (enabled) { backButton.setOnClickListener(backButtonOnClickListener); backButton.setOnLongClickListener(backButtonOnLongClickListener); forwardButton.setOnClickListener(forwardButtonOnClickListener); forwardButton.setOnLongClickListener(forwardButtonOnLongClickListener); } else { backButton.setOnClickListener(null); backButton.setOnLongClickListener(null); forwardButton.setOnClickListener(null); forwardButton.setOnLongClickListener(null); private void initButtonListeners() { backButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View view) { Tabs.getInstance().getSelectedTab().doBack(); } }); backButton.setOnLongClickListener(new Button.OnLongClickListener() { @Override public boolean onLongClick(View view) { return Tabs.getInstance().getSelectedTab().showBackHistory(); } }); forwardButton.setOnClickListener(new Button.OnClickListener() { @Override public void onTabChanged(final Tab tab, final Tabs.TabEvents msg, final Object data) { // STOP appears to be the first page load event where async nav issues are prevented, // SELECTED is for switching tabs, and LOAD_ERROR is called when a JavaScript exception // is thrown while loading a URI, which can prevent STOP from ever being called. // // See `setNavigationButtonListeners` javadoc for more information. if (msg == TabEvents.STOP || msg == TabEvents.SELECTED || msg == TabEvents.LOAD_ERROR) { setNavigationButtonListeners(true); public void onClick(View view) { Tabs.getInstance().getSelectedTab().doForward(); } super.onTabChanged(tab, msg, data); }); forwardButton.setOnLongClickListener(new Button.OnLongClickListener() { @Override public boolean onLongClick(View view) { return Tabs.getInstance().getSelectedTab().showForwardHistory(); } }); } @Override Loading Loading @@ -187,36 +164,4 @@ abstract class BrowserToolbarTabletBase extends BrowserToolbar { button.setEnabled(enabled); } private class BackButtonOnClickListener implements OnClickListener { @Override public void onClick(final View view) { setNavigationButtonListeners(false); Tabs.getInstance().getSelectedTab().doBack(); } } private class BackButtonOnLongClickListener implements OnLongClickListener { @Override public boolean onLongClick(final View view) { setNavigationButtonListeners(false); return Tabs.getInstance().getSelectedTab().showBackHistory(); } } private class ForwardButtonOnClickListener implements OnClickListener { @Override public void onClick(final View view) { setNavigationButtonListeners(false); Tabs.getInstance().getSelectedTab().doForward(); } } private class ForwardButtonOnLongClickListener implements OnLongClickListener { @Override public boolean onLongClick(final View view) { setNavigationButtonListeners(false); return Tabs.getInstance().getSelectedTab().showForwardHistory(); } } }