Bug 1352993 - Part 3, CustomTabsActivity prvoides presenter draft
authorJulian_Chu <walkingice0204@gmail.com>
Tue, 18 Apr 2017 18:51:11 +0800
changeset 564760 525b90d9ffa51075cb006a6dd0ab5fb22f6c9be5
parent 564759 b2a825d28dd3c41cfb224af005846e6d9be3c7a1
child 624832 132e86c8de0dd2d02d499bba4fe2d2cd9a61a775
push id54695
push userbmo:walkingice0204@gmail.com
push dateWed, 19 Apr 2017 02:43:31 +0000
bugs1352993
milestone55.0a1
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
mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
mobile/android/base/resources/values/themes.xml
--- 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>