summaryrefslogtreecommitdiff
path: root/src/com/android/browser/Controller.java
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 /src/com/android/browser/Controller.java
parent8974d281fa5c96bf50d5f5bac665cae44568f6e8 (diff)
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
Diffstat (limited to 'src/com/android/browser/Controller.java')
-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 83bbc63d..9f9b451f 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));