From 7a379f0eec9bbaeeb0d68c06de5d3473b18ea50d Mon Sep 17 00:00:00 2001 From: "mpcomplete@chromium.org" Date: Fri, 8 Jan 2010 23:14:12 +0000 Subject: Move the extension messaging tests to be ExtensionApiTests. Remove the old tests. Review URL: http://codereview.chromium.org/519087 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35843 0039d316-1c4b-4281-b951-d872f2087c98 --- .../extensions/extension_browsertests_misc.cc | 111 +-------------------- .../extensions/extensions_service_unittest.cc | 2 +- .../extensions/api_test/messaging/connect/page.js | 45 ++++++++- .../api_test/messaging/connect/test.html | 107 +++++++++++++++++--- .../1.0/background.html | 9 ++ .../1.0/manifest.json | 10 +- .../1.0/toolstrip.html | 87 ---------------- chrome/test/data/extensions/good/Preferences | 10 +- .../good-extension3.json | 7 +- 9 files changed, 154 insertions(+), 234 deletions(-) create mode 100644 chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/background.html delete mode 100644 chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/toolstrip.html diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc index 39fca8261..ee5935c 100644 --- a/chrome/browser/extensions/extension_browsertests_misc.cc +++ b/chrome/browser/extensions/extension_browsertests_misc.cc @@ -493,48 +493,6 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeedNoLinks) { "No error"); } -// Tests that message passing between extensions and tabs works. -IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_MessagingExtensionTab) { - ASSERT_TRUE(LoadExtension( - test_data_dir_.AppendASCII("good").AppendASCII("Extensions") - .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa") - .AppendASCII("1.0"))); - - // Get the ExtensionHost that is hosting our toolstrip page. - ExtensionProcessManager* manager = - browser()->profile()->GetExtensionProcessManager(); - ExtensionHost* host = FindHostWithPath(manager, "/toolstrip.html", 1); - - // Load the tab that will communicate with our toolstrip. - ui_test_utils::NavigateToURL( - browser(), - GURL("chrome-extension://bjafgdebaacbbbecmhlhpofkepfkgcpa/page.html")); - - // Test extension->tab messaging. - bool result = false; - ui_test_utils::ExecuteJavaScriptAndExtractBool( - host->render_view_host(), L"", L"testPostMessage()", &result); - EXPECT_TRUE(result); - - // Test tab->extension messaging. - result = false; - ui_test_utils::ExecuteJavaScriptAndExtractBool( - 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"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); - EXPECT_TRUE(result); -} - // Tests that an error raised during an async function still fires // the callback, but sets chrome.extension.lastError. IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, LastError) { @@ -552,65 +510,6 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, LastError) { EXPECT_TRUE(result); } -// Tests that message passing between extensions and content scripts works. -IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_MessagingContentScript) { - HTTPTestServer* server = StartHTTPServer(); - - ASSERT_TRUE(LoadExtension( - test_data_dir_.AppendASCII("good").AppendASCII("Extensions") - .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa") - .AppendASCII("1.0"))); - - UserScriptMaster* master = browser()->profile()->GetUserScriptMaster(); - if (!master->ScriptsReady()) { - // Wait for UserScriptMaster to finish its scan. - NotificationRegistrar registrar; - registrar.Add(this, NotificationType::USER_SCRIPTS_UPDATED, - NotificationService::AllSources()); - ui_test_utils::RunMessageLoop(); - } - ASSERT_TRUE(master->ScriptsReady()); - - // Get the ExtensionHost that is hosting our toolstrip page. - ExtensionProcessManager* manager = - browser()->profile()->GetExtensionProcessManager(); - ExtensionHost* host = FindHostWithPath(manager, "/toolstrip.html", 1); - - // Load the tab whose content script will communicate with our toolstrip. - GURL url = server->TestServerPageW(kTestFile); - ui_test_utils::NavigateToURL(browser(), url); - - // Test extension->tab messaging. - bool result = false; - ui_test_utils::ExecuteJavaScriptAndExtractBool( - host->render_view_host(), L"", L"testPostMessage()", &result); - EXPECT_TRUE(result); - - // Test port naming. - result = false; - ui_test_utils::ExecuteJavaScriptAndExtractBool( - host->render_view_host(), L"", L"testPortName()", &result); - EXPECT_TRUE(result); - - // Test tab->extension messaging. - result = false; - ui_test_utils::ExecuteJavaScriptAndExtractBool( - 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"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); - EXPECT_TRUE(result); -} - // TODO(mpcomplete): reenable after figuring it out. #if 0 // Tests the process of updating an extension to one that requires higher @@ -670,7 +569,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DisableEnable) { ExtensionProcessManager* manager = browser()->profile()->GetExtensionProcessManager(); - // Load an extension, expect the toolstrip to be available. + // Load an extension, expect the background page to be available. ASSERT_FALSE(service->HasInstalledExtensions()); ASSERT_TRUE(LoadExtension( test_data_dir_.AppendASCII("good").AppendASCII("Extensions") @@ -678,21 +577,21 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DisableEnable) { .AppendASCII("1.0"))); EXPECT_EQ(1u, service->extensions()->size()); EXPECT_EQ(0u, service->disabled_extensions()->size()); - EXPECT_TRUE(FindHostWithPath(manager, "/toolstrip.html", 1)); + EXPECT_TRUE(FindHostWithPath(manager, "/background.html", 1)); ASSERT_TRUE(service->HasInstalledExtensions()); - // After disabling, the toolstrip should go away. + // After disabling, the background page should go away. service->DisableExtension("bjafgdebaacbbbecmhlhpofkepfkgcpa"); EXPECT_EQ(0u, service->extensions()->size()); EXPECT_EQ(1u, service->disabled_extensions()->size()); - EXPECT_FALSE(FindHostWithPath(manager, "/toolstrip.html", 0)); + EXPECT_FALSE(FindHostWithPath(manager, "/background.html", 0)); ASSERT_TRUE(service->HasInstalledExtensions()); // And bring it back. service->EnableExtension("bjafgdebaacbbbecmhlhpofkepfkgcpa"); EXPECT_EQ(1u, service->extensions()->size()); EXPECT_EQ(0u, service->disabled_extensions()->size()); - EXPECT_TRUE(FindHostWithPath(manager, "/toolstrip.html", 1)); + EXPECT_TRUE(FindHostWithPath(manager, "/background.html", 1)); ASSERT_TRUE(service->HasInstalledExtensions()); } diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc index 95748b7..c68f808 100644 --- a/chrome/browser/extensions/extensions_service_unittest.cc +++ b/chrome/browser/extensions/extensions_service_unittest.cc @@ -627,7 +627,7 @@ TEST_F(ExtensionsServiceTest, LoadAllExtensionsFromDirectorySuccess) { EXPECT_EQ(std::string(good2), loaded_[2]->id()); EXPECT_EQ(std::string("My extension 3"), loaded_[2]->name()); EXPECT_EQ(std::string(""), loaded_[2]->description()); - EXPECT_EQ(1u, loaded_[2]->content_scripts().size()); + EXPECT_EQ(0u, loaded_[2]->content_scripts().size()); EXPECT_EQ(Extension::INTERNAL, loaded_[2]->location()); }; diff --git a/chrome/test/data/extensions/api_test/messaging/connect/page.js b/chrome/test/data/extensions/api_test/messaging/connect/page.js index 2f737f70..b876f7e 100644 --- a/chrome/test/data/extensions/api_test/messaging/connect/page.js +++ b/chrome/test/data/extensions/api_test/messaging/connect/page.js @@ -1,9 +1,46 @@ -// For test onRequest. -chrome.extension.sendRequest({step: 1}, function(response) { - if (response.nextStep) - chrome.extension.sendRequest({step: 2}); +// For complex connect tests. +chrome.extension.onConnect.addListener(function(port) { + console.log('connected'); + port.onMessage.addListener(function(msg) { + console.log('got ' + msg); + if (msg.testPostMessage) { + port.postMessage({success: true}); + } else if (msg.testPostMessageFromTab) { + testPostMessageFromTab(port); + } else if (msg.testSendRequestFromTab) { + testSendRequestFromTab(); + } else if (msg.testDisconnect) { + port.disconnect(); + } else if (msg.testDisconnectOnClose) { + window.location = "about:blank"; + } else if (msg.testPortName) { + port.postMessage({portName:port.name}); + } + }); }); +// Tests that postMessage to the extension and its response works. +function testPostMessageFromTab(origPort) { + var portName = "peter"; + var port = chrome.extension.connect({name: portName}); + port.postMessage({testPostMessageFromTab: true}); + port.onMessage.addListener(function(msg) { + origPort.postMessage({success: (msg.success && (msg.portName == portName))}); + console.log('testPostMessageFromTab sent ' + msg.success); + port.disconnect(); + }); +} + +// For test onRequest. +function testSendRequestFromTab() { + chrome.extension.sendRequest({step: 1}, function(response) { + if (response.nextStep) { + console.log('testSendRequestFromTab sent'); + chrome.extension.sendRequest({step: 2}); + } + }); +} + // For test sendRequest. chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { sendResponse({success: (request.step2 == 1)}); diff --git a/chrome/test/data/extensions/api_test/messaging/connect/test.html b/chrome/test/data/extensions/api_test/messaging/connect/test.html index b108a8d..3e24916 100644 --- a/chrome/test/data/extensions/api_test/messaging/connect/test.html +++ b/chrome/test/data/extensions/api_test/messaging/connect/test.html @@ -1,36 +1,115 @@ diff --git a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/background.html b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/background.html new file mode 100644 index 0000000..4f8dda3 --- /dev/null +++ b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/background.html @@ -0,0 +1,9 @@ + diff --git a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/manifest.json b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/manifest.json index d87557c..37b7cd5 100644 --- a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/manifest.json +++ b/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/manifest.json @@ -2,12 +2,6 @@ "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRS2GUBOUAO5VZ2CMRId/eRR8/e9V42nUvY5XG+0sZ+JDHEjIQdq8qQy7HqdqEpCXKPMSPuMiC2t2HE9/hpL89SblNn3mwYPtSJGQdZvAzuv6SB0oA6jZ66V7+h/k0noGD3Tcu+Ko/vfkt5wCx2uHVK29k5JR/vGr0klaoVezGlwIDAQAB", "version": "1.0", "name": "My extension 3", - "toolstrips": ["toolstrip.html"], - "permissions": ["tabs"], - "content_scripts": [ - { - "matches": ["http://localhost/*"], - "js": ["page.js"] - } - ] + "background_page": "background.html", + "permissions": ["tabs"] } 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 deleted file mode 100644 index fb4c2eb..0000000 --- a/chrome/test/data/extensions/good/Extensions/bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0/toolstrip.html +++ /dev/null @@ -1,87 +0,0 @@ - diff --git a/chrome/test/data/extensions/good/Preferences b/chrome/test/data/extensions/good/Preferences index 42a2713..7aad8c2 100644 --- a/chrome/test/data/extensions/good/Preferences +++ b/chrome/test/data/extensions/good/Preferences @@ -46,14 +46,8 @@ "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRS2GUBOUAO5VZ2CMRId/eRR8/e9V42nUvY5XG+0sZ+JDHEjIQdq8qQy7HqdqEpCXKPMSPuMiC2t2HE9/hpL89SblNn3mwYPtSJGQdZvAzuv6SB0oA6jZ66V7+h/k0noGD3Tcu+Ko/vfkt5wCx2uHVK29k5JR/vGr0klaoVezGlwIDAQAB", "version": "1.0", "name": "My extension 3", - "toolstrips": ["toolstrip.html"], - "permissions": ["tabs"], - "content_scripts": [ - { - "matches": ["file://*"], - "js": ["page.js"] - } - ] + "background_page": "background.html", + "permissions": ["tabs"] } }, "hpiknbiabeeppbpihjehijgoemciehgk": { diff --git a/chrome/test/data/extensions/ui/create_extension_detail_value_expected_output/good-extension3.json b/chrome/test/data/extensions/ui/create_extension_detail_value_expected_output/good-extension3.json index bbf69cd..564053a 100644 --- a/chrome/test/data/extensions/ui/create_extension_detail_value_expected_output/good-extension3.json +++ b/chrome/test/data/extensions/ui/create_extension_detail_value_expected_output/good-extension3.json @@ -7,11 +7,6 @@ "permissions": [], "allow_reload": false, "order": 2, - "content_scripts": [ - { - "matches": ["http://localhost/*"], - "js": ["page.js"] - } - ], + "content_scripts": [], "views": [] } -- cgit v1.1