Bug 1355852 - Show Text selection toolbar before Android 5. r?daleharvey,walkingice draft
authorNevin Chen <cnevinchen@gmail.com>
Fri, 28 Apr 2017 18:38:13 +0800
changeset 570087 0a829552322331f1ceb6f505e43599ce5286be2e
parent 568252 3f0c8da53c5cb015933b10b52ded3f30432b378a
child 626402 bb1f5a94f851568648770f07144a821b88320a03
push id56393
push userbmo:cnevinchen@gmail.com
push dateFri, 28 Apr 2017 10:46:45 +0000
reviewersdaleharvey, walkingice
bugs1355852
milestone55.0a1
Bug 1355852 - Show Text selection toolbar before Android 5. r?daleharvey,walkingice MozReview-Commit-ID: 9fnTXxOitag
mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
--- a/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
@@ -9,16 +9,17 @@ import java.io.File;
 import java.io.IOException;
 
 import android.app.ActivityManager;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
+import android.support.v7.view.ActionMode;
 import android.support.v7.widget.Toolbar;
 import android.support.v7.app.ActionBar;
 import android.util.Log;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.widget.ProgressBar;
 import android.widget.TextView;
@@ -38,16 +39,17 @@ import org.mozilla.gecko.icons.decoders.
 import org.mozilla.gecko.mozglue.SafeIntent;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
 import org.mozilla.gecko.util.ColorUtil;
 import org.mozilla.gecko.util.EventCallback;
 import org.mozilla.gecko.util.FileUtils;
 import org.mozilla.gecko.util.GeckoBundle;
+import org.mozilla.gecko.widget.ActionModePresenter;
 import org.mozilla.gecko.widget.AnchoredPopup;
 
 public class WebAppActivity extends GeckoApp {
 
     public static final String INTENT_KEY = "IS_A_WEBAPP";
     public static final String MANIFEST_PATH = "MANIFEST_PATH";
 
     private static final String LOGTAG = "WebAppActivity";
@@ -171,16 +173,35 @@ public class WebAppActivity extends Geck
         if (!isSameDomain) {
             Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.INTENT, "webapp");
             mManifestPath = externalIntent.getStringExtra(WebAppActivity.MANIFEST_PATH);
             loadManifest(mManifestPath);
             Tabs.getInstance().loadUrl(launchUrl);
         }
     }
 
+    @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 loadManifest(String manifestPath) {
         if (manifestPath == null) {
             Log.e(LOGTAG, "Missing manifest");
             return;
         }
         // The customisations defined in the manifest only work on Android API 21+
         if (AppConstants.Versions.preLollipop) {
             return;