From ab9b01926d01eac4a9b23c5667ac502da7c58b58 Mon Sep 17 00:00:00 2001
From: "mpcomplete@chromium.org"
 <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue, 28 Jul 2009 20:14:53 +0000
Subject: Reenable use of ExecuteScriptInNewWorld.

I didn't even realize I checked in the code that disabled it.

BUG=no
TEST=no

Review URL: http://codereview.chromium.org/159454

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21878 0039d316-1c4b-4281-b951-d872f2087c98
---
 .../extensions/extension_browsertests_misc.cc      | 26 ++++++++++++----------
 chrome/renderer/user_script_slave.cc               |  5 +----
 .../bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/page.js   |  9 +++++---
 .../1.0/toolstrip.html                             | 19 ++++++++++++++++
 4 files changed, 40 insertions(+), 19 deletions(-)

(limited to 'chrome')

diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc
index 9c9a50d..6966f54 100644
--- a/chrome/browser/extensions/extension_browsertests_misc.cc
+++ b/chrome/browser/extensions/extension_browsertests_misc.cc
@@ -296,24 +296,25 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MessagingExtensionTab) {
       browser(),
       GURL("chrome-extension://bjafgdebaacbbbecmhlhpofkepfkgcpa/page.html"));
 
-  // First test that tab->extension messaging works.
+  // Test extension->tab messaging.
   bool result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
-      browser()->GetSelectedTabContents()->render_view_host(), L"",
-      L"testPostMessageFromTab()", &result);
+      host->render_view_host(), L"", L"testPostMessage()", &result);
   EXPECT_TRUE(result);
 
-  // Now test extension->tab messaging, with disconnect events.
+  // Test tab->extension messaging.
   result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
-      host->render_view_host(), L"", L"testDisconnect()", &result);
+      host->render_view_host(), L"", L"testPostMessageFromTab()", &result);
   EXPECT_TRUE(result);
 
+  // Test disconnect event dispatch.
   result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
-      host->render_view_host(), L"", L"testPostMessage()", &result);
+      host->render_view_host(), L"", L"testDisconnect()", &result);
   EXPECT_TRUE(result);
 
+  // Test disconnect is fired on tab close.
   result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
       host->render_view_host(), L"", L"testDisconnectOnClose()", &result);
@@ -349,24 +350,25 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MessagingContentScript) {
                        .AppendASCII("test_file.html");
   ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(test_file));
 
-  // First test that tab->extension messaging works.
+  // Test extension->tab messaging.
   bool result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
-      browser()->GetSelectedTabContents()->render_view_host(), L"",
-      L"testPostMessageFromTab()", &result);
+      host->render_view_host(), L"", L"testPostMessage()", &result);
   EXPECT_TRUE(result);
 
-  // Now test extension->tab messaging, with disconnect events.
+  // Test tab->extension messaging.
   result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
-      host->render_view_host(), L"", L"testDisconnect()", &result);
+      host->render_view_host(), L"", L"testPostMessageFromTab()", &result);
   EXPECT_TRUE(result);
 
+  // Test disconnect event dispatch.
   result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
-      host->render_view_host(), L"", L"testPostMessage()", &result);
+      host->render_view_host(), L"", L"testDisconnect()", &result);
   EXPECT_TRUE(result);
 
+  // Test disconnect is fired on tab close.
   result = false;
   ui_test_utils::ExecuteJavaScriptAndExtractBool(
       host->render_view_host(), L"", L"testDisconnectOnClose()", &result);
diff --git a/chrome/renderer/user_script_slave.cc b/chrome/renderer/user_script_slave.cc
index 088f409..48017c1 100644
--- a/chrome/renderer/user_script_slave.cc
+++ b/chrome/renderer/user_script_slave.cc
@@ -160,10 +160,7 @@ bool UserScriptSlave::InjectScripts(WebFrame* frame,
                 StringPrintf(kInitExtension, script->extension_id().c_str()))));
       }
 
-      // TODO(abarth): switch back to NewWorld when V8IsolatedWorld is fixed.
-      // https://bugs.webkit.org/show_bug.cgi?id=27397
-      frame->ExecuteScriptInNewContext(&sources.front(), sources.size());
-      // frame->ExecuteScriptInNewWorld(&sources.front(), sources.size());
+      frame->ExecuteScriptInNewWorld(&sources.front(), sources.size());
     }
   }
 
diff --git a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/page.js b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/page.js
index cee9476..feacd93 100644
--- a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/page.js
+++ b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/page.js
@@ -12,6 +12,8 @@ win.onload = function() {
       console.log('got ' + msg);
       if (msg.testPostMessage) {
         port.postMessage({success: true});
+      } else if (msg.testPostMessageFromTab) {
+        testPostMessageFromTab(port);
       } else if (msg.testDisconnect) {
         port.disconnect();
       } else if (msg.testDisconnectOnClose) {
@@ -20,14 +22,15 @@ win.onload = function() {
       // Ignore other messages since they are from us.
     });
   });
-}
+};
 
 // Tests that postMessage to the extension and its response works.
-win.testPostMessageFromTab = function() {
+function testPostMessageFromTab(origPort) {
+  console.log('testPostMessageFromTab');
   var port = chrome.extension.connect();
   port.postMessage({testPostMessageFromTab: true});
   port.onMessage.addListener(function(msg) {
-    win.domAutomationController.send(msg.success);
+    origPort.postMessage({success: msg.success});
     console.log('sent ' + msg.success);
     port.disconnect();
   });
diff --git a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/toolstrip.html b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/toolstrip.html
index aae7daa..a8bfe7e 100644
--- a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/toolstrip.html
+++ b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/toolstrip.html
@@ -1,9 +1,12 @@
 <script>
 window.onload = function() {
   chrome.extension.onConnect.addListener(function(port) {
+    console.log('onConnect');
     port.onMessage.addListener(function(msg) {
+      console.log('got message');
       if (msg.testPostMessageFromTab) {
         port.postMessage({success: true});
+        console.log('sent success');
       }
       // Ignore other messages since they are from us.
     });
@@ -14,6 +17,7 @@ window.onload = function() {
 function testPostMessage() {
   chrome.tabs.getSelected(null, function(tab) {
     var port = chrome.tabs.connect(tab.id);
+    console.log('connect to ' + tab.id);
     port.postMessage({testPostMessage: true});
     port.onMessage.addListener(function(msg) {
       window.domAutomationController.send(msg.success);
@@ -22,10 +26,24 @@ function testPostMessage() {
   });
 }
 
+// Tests that postMessage from the tab and its response works.
+function testPostMessageFromTab() {
+  chrome.tabs.getSelected(null, function(tab) {
+    var port = chrome.tabs.connect(tab.id);
+    console.log('connect to ' + tab.id);
+    port.postMessage({testPostMessageFromTab: true});
+    port.onMessage.addListener(function(msg) {
+      window.domAutomationController.send(msg.success);
+      port.disconnect();
+    });
+  });
+}
+
 // Tests that we get the disconnect event when the tab disconnect.
 function testDisconnect() {
   chrome.tabs.getSelected(null, function(tab) {
     var port = chrome.tabs.connect(tab.id);
+    console.log('connect to ' + tab.id);
     port.postMessage({testDisconnect: true});
     port.onDisconnect.addListener(function() {
       window.domAutomationController.send(true);
@@ -37,6 +55,7 @@ function testDisconnect() {
 function testDisconnectOnClose() {
   chrome.tabs.getSelected(null, function(tab) {
     var port = chrome.tabs.connect(tab.id);
+    console.log('connect to ' + tab.id);
     port.postMessage({testDisconnectOnClose: true});
     port.onDisconnect.addListener(function() {
       window.domAutomationController.send(true);
-- 
cgit v1.1