summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2010-11-22 13:26:12 -0500
committerLeon Scroggins <scroggo@google.com>2010-11-22 14:31:28 -0500
commit026f254cff9d762a9f9c9d9bf74f15809d730cd2 (patch)
tree2f450885fb7c8f72554fba1bfddcf3f43a8656b1
parent8974d281fa5c96bf50d5f5bac665cae44568f6e8 (diff)
downloadpackages_apps_Browser-026f254cff9d762a9f9c9d9bf74f15809d730cd2.tar.gz
packages_apps_Browser-026f254cff9d762a9f9c9d9bf74f15809d730cd2.tar.bz2
packages_apps_Browser-026f254cff9d762a9f9c9d9bf74f15809d730cd2.zip
Use requestFocusNodeHref to get the link for an image.
Bug:3198707 We were attempting to use WebView.HitTestResult.getExtra() to find the href. For normal links, this is okay. For image links, this is the URL of the image itself. Instead, use requestFocusNodeHref, which will get the URL of the link. Change-Id: I759a56e461195bc2a904f4da4ef93a379d7db0b5
-rw-r--r--src/com/android/browser/Controller.java48
1 files changed, 37 insertions, 11 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 83bbc63db..9f9b451fe 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -394,6 +394,13 @@ public class Controller
case R.id.view_image_context_menu_id:
loadUrlFromContext(getCurrentTopWebView(), url);
break;
+ case R.id.open_newtab_context_menu_id:
+ final Tab parent = mTabControl.getCurrentTab();
+ final Tab newTab = openTab(url, false);
+ if (newTab != null && newTab != parent) {
+ parent.addChildTab(newTab);
+ }
+ break;
case R.id.bookmark_context_menu_id:
Intent intent = new Intent(mActivity,
AddBookmarkPage.class);
@@ -1156,7 +1163,7 @@ public class Controller
if (!(v instanceof WebView)) {
return;
}
- WebView webview = (WebView) v;
+ final WebView webview = (WebView) v;
WebView.HitTestResult result = webview.getHitTestResult();
if (result == null) {
return;
@@ -1253,17 +1260,36 @@ public class Controller
= menu.findItem(R.id.open_newtab_context_menu_id);
newTabItem.setVisible(showNewTab);
if (showNewTab) {
- newTabItem.setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- final Tab parent = mTabControl.getCurrentTab();
- final Tab newTab = openTab(extra, false);
- if (newTab != parent) {
- parent.addChildTab(newTab);
+ if (WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE == type) {
+ newTabItem.setOnMenuItemClickListener(
+ new MenuItem.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ final HashMap<String, WebView> hrefMap =
+ new HashMap<String, WebView>();
+ hrefMap.put("webview", webview);
+ final Message msg = mHandler.obtainMessage(
+ FOCUS_NODE_HREF,
+ R.id.open_newtab_context_menu_id,
+ 0, hrefMap);
+ webview.requestFocusNodeHref(msg);
+ return true;
}
- return true;
- }
- });
+ });
+ } else {
+ newTabItem.setOnMenuItemClickListener(
+ new MenuItem.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ final Tab parent = mTabControl.getCurrentTab();
+ final Tab newTab = openTab(extra, false);
+ if (newTab != parent) {
+ parent.addChildTab(newTab);
+ }
+ return true;
+ }
+ });
+ }
}
menu.findItem(R.id.bookmark_context_menu_id).setVisible(
Bookmarks.urlHasAcceptableScheme(extra));