зеркало из https://github.com/mozilla/gecko-dev.git
Bug 942270 - Gingerbread compatibility of GeckoActionView. r=margaret
This commit is contained in:
Родитель
ab67c195d5
Коммит
d241751058
|
@ -43,6 +43,7 @@ import org.mozilla.gecko.home.HomePager;
|
||||||
import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
|
import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
|
||||||
import org.mozilla.gecko.home.SearchEngine;
|
import org.mozilla.gecko.home.SearchEngine;
|
||||||
import org.mozilla.gecko.menu.GeckoMenu;
|
import org.mozilla.gecko.menu.GeckoMenu;
|
||||||
|
import org.mozilla.gecko.menu.GeckoMenuItem;
|
||||||
import org.mozilla.gecko.preferences.GeckoPreferences;
|
import org.mozilla.gecko.preferences.GeckoPreferences;
|
||||||
import org.mozilla.gecko.prompts.Prompt;
|
import org.mozilla.gecko.prompts.Prompt;
|
||||||
import org.mozilla.gecko.prompts.PromptListItem;
|
import org.mozilla.gecko.prompts.PromptListItem;
|
||||||
|
@ -2076,7 +2077,7 @@ abstract public class BrowserApp extends GeckoApp
|
||||||
|
|
||||||
// Action providers are available only ICS+.
|
// Action providers are available only ICS+.
|
||||||
if (Build.VERSION.SDK_INT >= 14) {
|
if (Build.VERSION.SDK_INT >= 14) {
|
||||||
MenuItem share = mMenu.findItem(R.id.share);
|
GeckoMenuItem share = (GeckoMenuItem) mMenu.findItem(R.id.share);
|
||||||
GeckoActionProvider provider = new GeckoActionProvider(this);
|
GeckoActionProvider provider = new GeckoActionProvider(this);
|
||||||
share.setActionProvider(provider);
|
share.setActionProvider(provider);
|
||||||
}
|
}
|
||||||
|
@ -2210,7 +2211,7 @@ abstract public class BrowserApp extends GeckoApp
|
||||||
|
|
||||||
// Action providers are available only ICS+.
|
// Action providers are available only ICS+.
|
||||||
if (Build.VERSION.SDK_INT >= 14) {
|
if (Build.VERSION.SDK_INT >= 14) {
|
||||||
GeckoActionProvider provider = (GeckoActionProvider) share.getActionProvider();
|
final GeckoActionProvider provider = ((GeckoMenuItem) share).getGeckoActionProvider();
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
Intent shareIntent = provider.getIntent();
|
Intent shareIntent = provider.getIntent();
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import org.mozilla.gecko.AppConstants;
|
||||||
import org.mozilla.gecko.R;
|
import org.mozilla.gecko.R;
|
||||||
import org.mozilla.gecko.util.ThreadUtils;
|
import org.mozilla.gecko.util.ThreadUtils;
|
||||||
import org.mozilla.gecko.util.ThreadUtils.AssertBehavior;
|
import org.mozilla.gecko.util.ThreadUtils.AssertBehavior;
|
||||||
|
import org.mozilla.gecko.widget.GeckoActionProvider;
|
||||||
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -542,7 +543,7 @@ public class GeckoMenu extends ListView
|
||||||
close();
|
close();
|
||||||
} else if (item.hasSubMenu()) {
|
} else if (item.hasSubMenu()) {
|
||||||
// Refresh the submenu for the provider.
|
// Refresh the submenu for the provider.
|
||||||
ActionProvider provider = item.getActionProvider();
|
GeckoActionProvider provider = item.getGeckoActionProvider();
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
GeckoSubMenu subMenu = new GeckoSubMenu(getContext());
|
GeckoSubMenu subMenu = new GeckoSubMenu(getContext());
|
||||||
subMenu.setShowIcons(true);
|
subMenu.setShowIcons(true);
|
||||||
|
@ -738,7 +739,7 @@ public class GeckoMenu extends ListView
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemViewType(int position) {
|
public int getItemViewType(int position) {
|
||||||
return getItem(position).getActionProvider() == null ? VIEW_TYPE_DEFAULT : VIEW_TYPE_ACTION_MODE;
|
return getItem(position).getGeckoActionProvider() == null ? VIEW_TYPE_DEFAULT : VIEW_TYPE_ACTION_MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class GeckoMenuItem implements MenuItem {
|
||||||
private boolean mEnabled = true;
|
private boolean mEnabled = true;
|
||||||
private Drawable mIcon;
|
private Drawable mIcon;
|
||||||
private int mIconRes;
|
private int mIconRes;
|
||||||
private ActionProvider mActionProvider;
|
private GeckoActionProvider mActionProvider;
|
||||||
private GeckoMenu mMenu;
|
private GeckoMenu mMenu;
|
||||||
private GeckoSubMenu mSubMenu;
|
private GeckoSubMenu mSubMenu;
|
||||||
private MenuItem.OnMenuItemClickListener mMenuItemClickListener = null;
|
private MenuItem.OnMenuItemClickListener mMenuItemClickListener = null;
|
||||||
|
@ -89,15 +89,19 @@ public class GeckoMenuItem implements MenuItem {
|
||||||
return mActionEnum;
|
return mActionEnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public GeckoActionProvider getGeckoActionProvider() {
|
||||||
public ActionProvider getActionProvider() {
|
|
||||||
return mActionProvider;
|
return mActionProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionProvider getActionProvider() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View getActionView() {
|
public View getActionView() {
|
||||||
if (mActionProvider != null && mActionProvider instanceof GeckoActionProvider) {
|
if (mActionProvider != null) {
|
||||||
return ((GeckoActionProvider) mActionProvider).getView();
|
return mActionProvider.getView();
|
||||||
}
|
}
|
||||||
|
|
||||||
return mActionView;
|
return mActionView;
|
||||||
|
@ -204,10 +208,13 @@ public class GeckoMenuItem implements MenuItem {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MenuItem setActionProvider(ActionProvider actionProvider) {
|
public MenuItem setActionProvider(ActionProvider actionProvider) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MenuItem setActionProvider(GeckoActionProvider actionProvider) {
|
||||||
mActionProvider = actionProvider;
|
mActionProvider = actionProvider;
|
||||||
if (mActionProvider != null && mActionProvider instanceof GeckoActionProvider) {
|
if (mActionProvider != null) {
|
||||||
GeckoActionProvider provider = (GeckoActionProvider) mActionProvider;
|
actionProvider.setOnTargetSelectedListener(new GeckoActionProvider.OnTargetSelectedListener() {
|
||||||
provider.setOnTargetSelectedListener(new GeckoActionProvider.OnTargetSelectedListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onTargetSelected() {
|
public void onTargetSelected() {
|
||||||
mMenu.close();
|
mMenu.close();
|
||||||
|
|
|
@ -12,7 +12,6 @@ import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.view.ActionProvider;
|
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.MenuItem.OnMenuItemClickListener;
|
import android.view.MenuItem.OnMenuItemClickListener;
|
||||||
import android.view.SubMenu;
|
import android.view.SubMenu;
|
||||||
|
@ -23,7 +22,7 @@ import android.text.TextUtils;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class GeckoActionProvider extends ActionProvider {
|
public class GeckoActionProvider {
|
||||||
private static int MAX_HISTORY_SIZE = 2;
|
private static int MAX_HISTORY_SIZE = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,11 +84,9 @@ public class GeckoActionProvider extends ActionProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GeckoActionProvider(Context context) {
|
public GeckoActionProvider(Context context) {
|
||||||
super(context);
|
|
||||||
mContext = context;
|
mContext = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public View onCreateActionView() {
|
public View onCreateActionView() {
|
||||||
// Create the view and set its data model.
|
// Create the view and set its data model.
|
||||||
ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mHistoryFileName);
|
ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mHistoryFileName);
|
||||||
|
@ -121,12 +118,10 @@ public class GeckoActionProvider extends ActionProvider {
|
||||||
return onCreateActionView();
|
return onCreateActionView();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasSubMenu() {
|
public boolean hasSubMenu() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPrepareSubMenu(SubMenu subMenu) {
|
public void onPrepareSubMenu(SubMenu subMenu) {
|
||||||
// Clear since the order of items may change.
|
// Clear since the order of items may change.
|
||||||
subMenu.clear();
|
subMenu.clear();
|
||||||
|
|
|
@ -8391,9 +8391,19 @@ HTMLContextMenuItem.prototype = Object.create(ContextMenuItem.prototype, {
|
||||||
// If this is a menu item, show a new context menu with the submenu in it
|
// If this is a menu item, show a new context menu with the submenu in it
|
||||||
if (elt instanceof Ci.nsIDOMHTMLMenuElement) {
|
if (elt instanceof Ci.nsIDOMHTMLMenuElement) {
|
||||||
try {
|
try {
|
||||||
NativeWindow.contextmenus.menuitems = [];
|
NativeWindow.contextmenus.menus = {};
|
||||||
NativeWindow.contextmenus._addHTMLContextMenuItemsForMenu(elt, target);
|
|
||||||
NativeWindow.contextmenus._innerShow(target);
|
let elt = this.menuElementRef.get();
|
||||||
|
let target = this.targetElementRef.get();
|
||||||
|
if (!elt) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = NativeWindow.contextmenus._getHTMLContextMenuItemsForMenu(elt, target);
|
||||||
|
if (items.length > 0) {
|
||||||
|
NativeWindow.contextmenus._addMenuItems(items, "link");
|
||||||
|
}
|
||||||
|
|
||||||
} catch(ex) {
|
} catch(ex) {
|
||||||
Cu.reportError(ex);
|
Cu.reportError(ex);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче