Loading core/java/android/webkit/WebView.java +28 −22 Original line number Diff line number Diff line Loading @@ -9238,6 +9238,30 @@ public class WebView extends AbsoluteLayout } } private void setHitTestTypeFromUrl(String url) { String substr = null; if (url.startsWith(SCHEME_GEO)) { mInitialHitTestResult.mType = HitTestResult.GEO_TYPE; substr = url.substring(SCHEME_GEO.length()); } else if (url.startsWith(SCHEME_TEL)) { mInitialHitTestResult.mType = HitTestResult.PHONE_TYPE; substr = url.substring(SCHEME_TEL.length()); } else if (url.startsWith(SCHEME_MAILTO)) { mInitialHitTestResult.mType = HitTestResult.EMAIL_TYPE; substr = url.substring(SCHEME_MAILTO.length()); } else { mInitialHitTestResult.mType = HitTestResult.SRC_ANCHOR_TYPE; mInitialHitTestResult.mExtra = url; return; } try { mInitialHitTestResult.mExtra = URLDecoder.decode(substr, "UTF-8"); } catch (Throwable e) { Log.w(LOGTAG, "Failed to decode URL! " + substr, e); mInitialHitTestResult.mType = HitTestResult.UNKNOWN_TYPE; } } private void setHitTestResult(WebKitHitTest hit) { if (hit == null) { mInitialHitTestResult = null; Loading @@ -9245,9 +9269,9 @@ public class WebView extends AbsoluteLayout } mInitialHitTestResult = new HitTestResult(); if (hit.mLinkUrl != null) { mInitialHitTestResult.mType = HitTestResult.SRC_ANCHOR_TYPE; mInitialHitTestResult.mExtra = hit.mLinkUrl; if (hit.mImageUrl != null) { setHitTestTypeFromUrl(hit.mLinkUrl); if (hit.mImageUrl != null && mInitialHitTestResult.mType == HitTestResult.SRC_ANCHOR_TYPE) { mInitialHitTestResult.mType = HitTestResult.SRC_IMAGE_ANCHOR_TYPE; mInitialHitTestResult.mExtra = hit.mImageUrl; } Loading @@ -9257,25 +9281,7 @@ public class WebView extends AbsoluteLayout } else if (hit.mEditable) { mInitialHitTestResult.mType = HitTestResult.EDIT_TEXT_TYPE; } else if (hit.mIntentUrl != null) { String substr = null; if (hit.mIntentUrl.startsWith(SCHEME_GEO)) { mInitialHitTestResult.mType = HitTestResult.GEO_TYPE; substr = hit.mIntentUrl.substring(SCHEME_GEO.length()); } else if (hit.mIntentUrl.startsWith(SCHEME_TEL)) { mInitialHitTestResult.mType = HitTestResult.PHONE_TYPE; substr = hit.mIntentUrl.substring(SCHEME_TEL.length()); } else if (hit.mIntentUrl.startsWith(SCHEME_MAILTO)) { mInitialHitTestResult.mType = HitTestResult.EMAIL_TYPE; substr = hit.mIntentUrl.substring(SCHEME_MAILTO.length()); } else { return; } try { mInitialHitTestResult.mExtra = URLDecoder.decode(substr, "UTF-8"); } catch (Throwable e) { Log.w(LOGTAG, "Failed to decode GEO URL!", e); mInitialHitTestResult.mType = HitTestResult.UNKNOWN_TYPE; } setHitTestTypeFromUrl(hit.mIntentUrl); } } Loading Loading
core/java/android/webkit/WebView.java +28 −22 Original line number Diff line number Diff line Loading @@ -9238,6 +9238,30 @@ public class WebView extends AbsoluteLayout } } private void setHitTestTypeFromUrl(String url) { String substr = null; if (url.startsWith(SCHEME_GEO)) { mInitialHitTestResult.mType = HitTestResult.GEO_TYPE; substr = url.substring(SCHEME_GEO.length()); } else if (url.startsWith(SCHEME_TEL)) { mInitialHitTestResult.mType = HitTestResult.PHONE_TYPE; substr = url.substring(SCHEME_TEL.length()); } else if (url.startsWith(SCHEME_MAILTO)) { mInitialHitTestResult.mType = HitTestResult.EMAIL_TYPE; substr = url.substring(SCHEME_MAILTO.length()); } else { mInitialHitTestResult.mType = HitTestResult.SRC_ANCHOR_TYPE; mInitialHitTestResult.mExtra = url; return; } try { mInitialHitTestResult.mExtra = URLDecoder.decode(substr, "UTF-8"); } catch (Throwable e) { Log.w(LOGTAG, "Failed to decode URL! " + substr, e); mInitialHitTestResult.mType = HitTestResult.UNKNOWN_TYPE; } } private void setHitTestResult(WebKitHitTest hit) { if (hit == null) { mInitialHitTestResult = null; Loading @@ -9245,9 +9269,9 @@ public class WebView extends AbsoluteLayout } mInitialHitTestResult = new HitTestResult(); if (hit.mLinkUrl != null) { mInitialHitTestResult.mType = HitTestResult.SRC_ANCHOR_TYPE; mInitialHitTestResult.mExtra = hit.mLinkUrl; if (hit.mImageUrl != null) { setHitTestTypeFromUrl(hit.mLinkUrl); if (hit.mImageUrl != null && mInitialHitTestResult.mType == HitTestResult.SRC_ANCHOR_TYPE) { mInitialHitTestResult.mType = HitTestResult.SRC_IMAGE_ANCHOR_TYPE; mInitialHitTestResult.mExtra = hit.mImageUrl; } Loading @@ -9257,25 +9281,7 @@ public class WebView extends AbsoluteLayout } else if (hit.mEditable) { mInitialHitTestResult.mType = HitTestResult.EDIT_TEXT_TYPE; } else if (hit.mIntentUrl != null) { String substr = null; if (hit.mIntentUrl.startsWith(SCHEME_GEO)) { mInitialHitTestResult.mType = HitTestResult.GEO_TYPE; substr = hit.mIntentUrl.substring(SCHEME_GEO.length()); } else if (hit.mIntentUrl.startsWith(SCHEME_TEL)) { mInitialHitTestResult.mType = HitTestResult.PHONE_TYPE; substr = hit.mIntentUrl.substring(SCHEME_TEL.length()); } else if (hit.mIntentUrl.startsWith(SCHEME_MAILTO)) { mInitialHitTestResult.mType = HitTestResult.EMAIL_TYPE; substr = hit.mIntentUrl.substring(SCHEME_MAILTO.length()); } else { return; } try { mInitialHitTestResult.mExtra = URLDecoder.decode(substr, "UTF-8"); } catch (Throwable e) { Log.w(LOGTAG, "Failed to decode GEO URL!", e); mInitialHitTestResult.mType = HitTestResult.UNKNOWN_TYPE; } setHitTestTypeFromUrl(hit.mIntentUrl); } } Loading