diff options
author | Pankaj Garg <pgarg@codeaurora.org> | 2014-09-23 15:07:22 -0700 |
---|---|---|
committer | WebTech Code Review <code-review@localhost> | 2014-09-26 15:45:23 -0700 |
commit | 0c73c7cf9093604173f08a16fc3d7bca2713b950 (patch) | |
tree | 58f343ec8fd26fb7e430f1fe7c4543557719a699 | |
parent | 60221afde4cc3eae0b7df27eaf497001539956ac (diff) | |
download | android_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.java | 26 |
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; } |