Fixed rendering noreferrer links

Additional fix for rendering noreferrer links. This change prevents
content layer from overriding newly created webcontent.

Change-Id: Iafde5b63366593bb44420fff6e1b7f7b80721b84
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index dcd63e0..861d68f 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -755,10 +755,11 @@
     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 @@
             } 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 @@
             // 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;
             }