Bug 1352993 - Part 3, CustomTabsActivity prvoides presenter
CustomTabsActivity use standard ActionBar, so we can easily use action
mode for text-selection.
MozReview-Commit-ID: CSu0d24Z7dt
--- a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
@@ -16,16 +16,17 @@ import android.graphics.drawable.Drawabl
import android.net.Uri;
import android.os.Bundle;
import android.provider.Browser;
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
import android.support.design.widget.Snackbar;
import android.support.v4.util.SparseArrayCompat;
import android.support.v7.app.ActionBar;
+import android.support.v7.view.ActionMode;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
@@ -39,16 +40,17 @@ import org.mozilla.gecko.Tabs;
import org.mozilla.gecko.Telemetry;
import org.mozilla.gecko.TelemetryContract;
import org.mozilla.gecko.menu.GeckoMenu;
import org.mozilla.gecko.menu.GeckoMenuInflater;
import org.mozilla.gecko.util.Clipboard;
import org.mozilla.gecko.util.ColorUtil;
import org.mozilla.gecko.util.GeckoBundle;
import org.mozilla.gecko.util.IntentUtils;
+import org.mozilla.gecko.widget.ActionModePresenter;
import org.mozilla.gecko.widget.GeckoPopupMenu;
import java.util.List;
public class CustomTabsActivity extends GeckoApp implements Tabs.OnTabsChangedListener {
private static final String LOGTAG = "CustomTabsActivity";
private static final String SAVED_START_INTENT = "saved_intent_which_started_this_activity";
@@ -274,16 +276,35 @@ public class CustomTabsActivity extends
if (intent != null) {
performPendingIntent(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
+ @Override
+ protected ActionModePresenter getTextSelectPresenter() {
+ return new ActionModePresenter() {
+ private ActionMode mMode;
+
+ @Override
+ public void startActionMode(ActionMode.Callback callback) {
+ mMode = startSupportActionMode(callback);
+ }
+
+ @Override
+ public void endActionMode() {
+ if (mMode != null) {
+ mMode.finish();
+ }
+ }
+ };
+ }
+
private void bindNavigationCallback(@NonNull final Toolbar toolbar) {
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Tabs tabs = Tabs.getInstance();
final Tab tab = tabs.getSelectedTab();
tabs.closeTab(tab);
finish();
--- a/mobile/android/base/resources/values/themes.xml
+++ b/mobile/android/base/resources/values/themes.xml
@@ -123,16 +123,18 @@
Themes for CustomTabsActivity. Since CustomTabsActivity usually be used by 3-rd party apps,
to create separated themes to keep look and feel be consistent with ordinary Android app.
And ensure changes to CustomTabsActivity won't effect GeckoApp.
-->
<style name="GeckoCustomTabs" parent="Theme.AppCompat.NoActionBar">
<item name="menuItemActionBarStyle">@style/Widget.MenuItemActionBar</item>
<item name="menuItemDefaultStyle">@style/Widget.MenuItemCustomTabs</item>
+ <item name="windowActionModeOverlay">true</item>
</style>
<style name="GeckoCustomTabs.Light" parent="Theme.AppCompat.Light.NoActionBar">
<item name="menuItemActionBarStyle">@style/Widget.MenuItemActionBar</item>
<item name="menuItemDefaultStyle">@style/Widget.MenuItemCustomTabs</item>
+ <item name="windowActionModeOverlay">true</item>
</style>
</resources>