summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPankaj Garg <pgarg@codeaurora.org>2014-09-23 15:07:22 -0700
committerWebTech Code Review <code-review@localhost>2014-09-26 15:45:23 -0700
commit0c73c7cf9093604173f08a16fc3d7bca2713b950 (patch)
tree58f343ec8fd26fb7e430f1fe7c4543557719a699
parent60221afde4cc3eae0b7df27eaf497001539956ac (diff)
downloadandroid_packages_apps_Gello-0c73c7cf9093604173f08a16fc3d7bca2713b950.tar.gz
android_packages_apps_Gello-0c73c7cf9093604173f08a16fc3d7bca2713b950.tar.bz2
android_packages_apps_Gello-0c73c7cf9093604173f08a16fc3d7bca2713b950.zip
Fixed rendering noreferrer links
Additional fix for rendering noreferrer links. This change prevents content layer from overriding newly created webcontent. Change-Id: Iafde5b63366593bb44420fff6e1b7f7b80721b84
-rw-r--r--src/com/android/browser/Tab.java26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index dcd63e02..861d68f7 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -755,10 +755,11 @@ class Tab implements PictureListener {
private final WebChromeClient mWebChromeClient = new WebChromeClient() {
// Helper method to create a new tab or sub window.
private void createWindow(final boolean dialog, final Message msg) {
- this.createWindow(dialog, msg, null);
+ this.createWindow(dialog, msg, null, false);
}
- private void createWindow(final boolean dialog, final Message msg, final String url) {
+ private void createWindow(final boolean dialog, final Message msg, final String url,
+ final boolean opener_suppressed) {
WebView.WebViewTransport transport =
(WebView.WebViewTransport) msg.obj;
if (dialog) {
@@ -768,7 +769,14 @@ class Tab implements PictureListener {
} else {
final Tab newTab = mWebViewController.openTab(url,
Tab.this, true, true);
- transport.setWebView(newTab.getWebView());
+ // This is special case for rendering links on a webpage in
+ // a new tab. If opener is suppressed, the WebContents created
+ // by the content layer are not fully initialized. This check
+ // will prevent content layer from overriding WebContents
+ // created by new tab with the uninitialized instance.
+ if (!opener_suppressed) {
+ transport.setWebView(newTab.getWebView());
+ }
}
msg.sendToTarget();
}
@@ -824,11 +832,17 @@ class Tab implements PictureListener {
// Short-circuit if this was a user gesture.
if (userGesture || !mSettings.blockPopupWindows()) {
CreateWindowParams windowParams = view.getCreateWindowParams();
- String url = null;
if (windowParams.mOpenerSuppressed) {
- url = windowParams.mURL;
+ createWindow(dialog, resultMsg, windowParams.mURL, true);
+ // This is special case for rendering links on a webpage in
+ // a new tab. If opener is suppressed, the WebContents created
+ // by the content layer are not fully initialized. Returning false
+ // will prevent content layer from overriding WebContents
+ // created by new tab with the uninitialized instance.
+ return false;
}
- createWindow(dialog, resultMsg, url);
+
+ createWindow(dialog, resultMsg);
return true;
}