Bug 1355852 - Show Text selection toolbar before Android 5. r?daleharvey,walkingice
MozReview-Commit-ID: 9fnTXxOitag
--- 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;