Commit 7371822e authored by David Bertoni's avatar David Bertoni Committed by Commit Bot

[Extensions] Add a new test for chrome.runtime.reload().

Bug: 366181
Change-Id: Ie21ae708883e32745350d2227086acc31ff890bc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2149496Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Commit-Queue: David Bertoni <dbertoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759342}
parent 6b578bb6
......@@ -15,6 +15,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/test_extension_registry_observer.h"
#include "extensions/test/extension_test_message_listener.h"
#include "extensions/test/result_catcher.h"
#include "extensions/test/test_extension_dir.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
......@@ -145,9 +146,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest,
<< message_;
}
// Tests chrome.runtime.reload
// Tests that an extension calling chrome.runtime.reload() repeatedly
// will eventually be disabled.
// This test is flaky: crbug.com/366181
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_ChromeRuntimeReload) {
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_ChromeRuntimeReloadDisable) {
ExtensionRegistry* registry = ExtensionRegistry::Get(profile());
const char kManifest[] =
"{"
......@@ -193,6 +195,50 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_ChromeRuntimeReload) {
registry->GetExtensionById(extension_id, ExtensionRegistry::TERMINATED));
}
// Tests chrome.runtime.reload
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ChromeRuntimeReload) {
static constexpr char kManifest[] = R"(
{
"name": "reload",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"manifest_version": 2
})";
static constexpr char kScript[] = R"(
chrome.test.sendMessage('ready', function(response) {
if (response == 'reload') {
chrome.runtime.reload();
} else if (response == 'done') {
chrome.test.notifyPass();
}
});
)";
TestExtensionDir dir;
dir.WriteManifest(kManifest);
dir.WriteFile(FILE_PATH_LITERAL("background.js"), kScript);
// This listener will respond to the initial load of the extension
// and tell the script to do the reload.
ExtensionTestMessageListener ready_listener_reload("ready", true);
const Extension* extension = LoadExtension(dir.UnpackedPath());
ASSERT_TRUE(extension);
const std::string extension_id = extension->id();
EXPECT_TRUE(ready_listener_reload.WaitUntilSatisfied());
// This listener will respond to the ready message from the
// reloaded extension and tell the script to finish the test.
ExtensionTestMessageListener ready_listener_done("ready", true);
ResultCatcher reload_catcher;
ready_listener_reload.Reply("reload");
EXPECT_TRUE(ready_listener_done.WaitUntilSatisfied());
ready_listener_done.Reply("done");
EXPECT_TRUE(reload_catcher.GetNextResult());
}
// Tests that updating a terminated extension sends runtime.onInstalled event
// with correct previousVersion.
// Regression test for https://crbug.com/724563.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment